1. 已知函数在下列各点的值为

 

0.2

0.4

0.6

0.8

1.0

 

0.98

0.92

0.81

0.64

0.38

用插值法对数据进行拟合,要求给出Lagrange插值多项式和Newton插值多项式的表达式,并计算插值多项式在点的值。

程序:

x=[0.2 0.4 0.6 0.8 1.0];

y=[0.98 0.92 0.81 0.64 0.38];

x0=[0.2 0.28 0.44 0.76 1 1.08];

[f,f0]=Lagrange(x,y,x0)

function [f,f0] = Lagrange(x,y,x0)

%求已知数据点的Lagrange插值多项式f,并计算插值多项式f在数据点x0的函数值f0

syms t;

n = length(x);

f = 0.0;

for i = 1:n

l = y(i);

for j = 1:i-1

l = l*(t-x(j))/(x(i)-x(j));

end;

for j = i+1:n

l = l*(t-x(j))/(x(i)-x(j));

end;

f = f + l;

simplify(f);

if(i==n)

f0 = subs(f,'t',x0);

f = collect(f);

f = vpa(f,6);

end

end

结果:

>> Untitled3

f =

- 0.520833*t^4 + 0.833333*t^3 - 1.10417*t^2 + 0.191667*t + 0.98

f0 =

[ 49/50, 60137/62500, 56377/62500, 42497/62500, 19/50, 15017/62500]

牛顿:

%y为对应x的值,A为差商表,C为多项式系数,L为多项式

%X为给定节点,Y为节点值,x为待求节点

function[y,A,C,L] = newton(X,Y,x,M)

n = length(X);

m = length(x);

for t = 1 : m

z = x(t);

A = zeros(n,n);

A(:,1) = Y';

s = 0.0; p = 1.0; q1 = 1.0; c1 = 1.0;

for j = 2 : n

for i = j : n

A(i,j) = (A(i,j-1) - A(i-1,j-1))/(X(i)-X(i-j+1));

end

q1 = abs(q1*(z-X(j-1)));

c1 = c1 * j;

end

C = A(n, n); q1 = abs(q1*(z-X(n)));

for k = (n-1):-1:1

C = conv(C, poly(X(k)));

d = length(C);

C(d) = C(d) + A(k,k);

end

y(t) = polyval(C,z);

end

L = poly2sym(C);

x=[0.2 0.4 0.6 0.8 1.0];

y=[0.98 0.92 0.81 0.64 0.38];

x0=[0.2 0.28 0.44 0.76 1 1.08];

m=1;

[y,A,C,L]=newton(x,y,x0,m)

结果:

y =

0.9800    0.9622    0.9020    0.6800    0.3800    0.2403

A =

0.9800         0         0         0         0

0.9200   -0.3000         0         0         0

0.8100   -0.5500   -0.6250         0         0

0.6400   -0.8500   -0.7500   -0.2083         0

0.3800   -1.3000   -1.1250   -0.6250   -0.5208

C =

-0.5208    0.8333   -1.1042    0.1917    0.9800

L =

- (25*x^4)/48 + (5*x^3)/6 - (53*x^2)/48 + (23*x)/120 + 49/50

2. 在区间上分别取,用两组等距节点对Runge函数作多项式插值(Lagrange插值和Newton插值均可),要求对每个值,分别画出插值多项式和函数的曲线。

程序:

x=-1:0.2:1;

y=1./(1+25*x.^2);

x0=-1:0.01:1;

[f,f0]=Lagrange(x,y,x0)

plot(x0,f0)

结果:

f =

- 220.942*t^10 + 494.91*t^8 - 381.434*t^6 + 123.36*t^4 - 16.8552*t^2 + 1.0

3.下列数据点的插值

 

0.01

1

4

9

16

25

36

49

64

 

0.1

1

2

3

4

5

6

7

8

可以得到平方根函数的近似多项式, 要求用上述9个点作8次插值多项式,并在区间画出的曲线。

程序:

x=[0.01 1   4   9   16  25  36  49  64];

y=[0.1  1   2   3   4   5   6   7   8];

x0=0.01:0.1:64;;

[f,f0]=Lagrange(x,y,x0)

plot(x0,f0)

xlim([0 64]);

结果:

f =

- 2.73858e-10*t^8 + 5.6069e-8*t^7 - 0.00000453906*t^6 + 0.000186698*t^5 - 0.00418177*t^4 + 0.0510128*t^3 - 0.32628*t^2 + 1.19115*t + 0.0881211

拉格朗日插值和牛顿插值 matlab的更多相关文章

  1. 多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]

    全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见“计算基本理论”. 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌 ...

  2. Matlab数值计算示例: 牛顿插值法、LU分解法、拉格朗日插值法、牛顿插值法

    本文源于一次课题作业,部分自己写的,部分借用了网上的demo 牛顿迭代法(1) x=1:0.01:2; y=x.^3-x.^2+sin(x)-1; plot(x,y,'linewidth',2);gr ...

  3. MATLAB二维插值和三维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  4. CPP,MATLAB实现牛顿插值

    牛顿插值法的原理,在维基百科上不太全面,具体可以参考这篇文章.同样贴出,楼主作为初学者认为好理解的代码. function p=Newton1(x1,y,x2) %p为多项式估计出的插值 syms x ...

  5. 插值代码17个---MATLAB

    函数名 功能Language 求已知数据点的拉格朗日插值多项式Atken 求已知数据点的艾特肯插值多项式Newton 求已知数据点的均差形式的牛顿插值多项式Newtonforward 求已知数据点的前 ...

  6. [Python] 牛顿插值

    插值公式为: 差商递归公式为: # -*- coding: utf-8 -*- #Program 0.4 Newton Interpolation import numpy as np import ...

  7. 拟牛顿 DFP matlab

    function sevnn x=[1,0]'; [x,val]=dfp('fun','gfun',x) end function f=fun(x) f=100*(x(1)^2-x(2))^2+(x( ...

  8. 数据质量、特征分析及一些MATLAB函数

    MATLAB数据分析工具箱 MATLAB工具箱主要含有的类别有: 数学类.统计与优化类.信号处理与通信类.控制系统设计与分析类.图像处理类.测试与测量类.计算金融类.计算生物类.并行计算类.数据库访问 ...

  9. 高斯混合聚类及EM实现

    一.引言 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussian Mixture Model (GMM).事实上,GMM 和 k-means 很像,不过 G ...

随机推荐

  1. JSP的九个隐式对象

    JSP使用脚本元素作为一种简易方法在模板数据中嵌入java代码,这些脚本元素在JSP翻译成Servlet的阶段,都被转化为Servlet中的java代码. JSP引擎在调用JSP对应的_jspServ ...

  2. 【JS点滴】substring和substr以及slice和splice的用法和区别。

    那么就由一道笔试题引入吧,已知有字符串a=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”: var a = "get-el ...

  3. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(4)- 漂亮的登录界面

    前言 这一讲,给大家添加登录页面 实现 添加Login的Index视图 @{ Layout = null; } <!DOCTYPE html> <html class="l ...

  4. SHELL脚本攻略(学习笔记)--2.1 cat

    cat命令 输出一个或多个文件的内容. cat [OPTION]... [FILE]... 选项说明 -n:显示所有行的行号 -b:显示非空行的行号 -E:在每行行尾加上$符号 -T:将TAB符号输出 ...

  5. CentOS6.x服务器OpenSSH平滑升级到7.3p版本——拒绝服务器漏洞攻击

    对于新安装的Linux服务器,默认OpenSSH及OpenSSL都不是最新的,需要进行升级以拒绝服务器漏洞攻击.本次介绍的是升级生产环境下CentOS6.x系列服务器平滑升级OpenSSL及OpenS ...

  6. 浅析Java源码之HashMap外传-红黑树Treenode(已鸽)

    (这篇文章暂时鸽了,有点理解不能,点进来的小伙伴可以撤了) 刚开始准备在HashMap中直接把红黑树也过了的,结果发现这个类不是一般的麻烦,所以单独开一篇. 由于红黑树之前完全没接触过,所以这篇博客相 ...

  7. MVC应用程序,动态创建单选列表(RadioButtonList)

    单选列表是多个选项,让用户选择一个.MVC应用程序开发中,少之不了.下面就来练习之个小功能. 这个练习,Insus.NET想实现一个日期显示的格式.在MVC中,得需从model开始创建: 再创建一个E ...

  8. JAVA设计模式详解(一)----------策略模式

    策略模式,顾名思义就是设计一个策略算法,然后与对象拆分开来将其单独封装到一系列策略类中,并且它们之间可以相互替换.首先LZ举一个例子为大家引出这一个模式. 例子:某公司的中秋节奖励制度为每个员工发放2 ...

  9. [转]sqlserver转换为Mysql工具使用

    https://files.cnblogs.com/files/miantiaoandrew/mss2sql_v5-3.zip 1.首先下载工具,链接如上 2.解压出来,运行mss2sql.exe 3 ...

  10. Async Await异步调用WebApi

    先铺垫一些基础知识 在 .net 4.5中出现了 Async Await关键字,配合之前版本的Task 来使得开发异步程序更为简单易控.   在使用它们之前 我们先关心下 为什么要使用它们.好比 一个 ...