matlab_牛顿插值法_三次样条插值法

合集下载

MATLAB数值实验一(数据的插值运算及其应用完整版)

MATLAB数值实验一(数据的插值运算及其应用完整版)

佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 插值法与数据拟合 专业班级 机械工程 姓 名 余红杰 学 号 10 指导教师 陈剑 成 绩 日 期 月 日一、实验目的1、学会Lagrange 插值、牛顿插值和三次样条插值等基本插值方法;2、讨论插值的Runge 现象3、学会Matlab 提供的插值函数的使用方法,会用这些函数解决实际问题。

二、实验原理1、拉格朗日插值多项式2、牛顿插值多项式3、三次样条插值 三、实验步骤1、用MATLAB 编写独立的拉格朗日插值多项式函数2、用MATLAB 编写独立的牛顿插值多项式函数3、用MATLAB 编写独立的三次样条函数(边界条件为第一、二种情形)4、已知函数在下列各点的值为:根据步骤1,2,3编好的程序,试分别用4次拉格朗日多项式4()L x 、牛顿插值多项式4()P x 以及三次样条函数()S x (自然边界条件)对数据进行插值,并用图给出 {(,),0.20.08,0,1,2,,10i i i x y x i i =+=},4()L x 、4()P x 和()S x 。

5、在区间[-1,1]上分别取10,20n =用两组等距节点对龙格函数21(),(11)125f x x x=-≤≤+作多项式插值,对不同n 值,分别画出插值函数及()f x 的图形。

6、下列数据点的插值可以得到平方根函数的近似,在区间[0,64]上作图。

(1)用这9个点作8次多项式插值8()L x 。

(2)用三次样条(第一边界条件)程序求()S x 。

7、对于给函数21()125f x x =+在区间[-1,1]上取10.2(0,1,,10)i x i i =-+=,试求3次曲线拟合,试画出拟合曲线并打印出方程,与第5题的结果比较。

四、实验过程与结果:1、Lagrange 插值多项式源代码:function ya=lag(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 ya=0; mu=1; %初始化%循环方式求L 系数,并求和: for i = 1:length(y) for j = 1:length(x) if i ~= jmu = mu * (xa - x(j) ) / ( x(i) - x(j) ); else continue end endya = ya + y(i) * mu ; mu = 1; end2、Newton 源代码:function ya = newton(x,y,xa) %x 所有已知插值点 %y 插值点对应函数值 %xa 所求点,自变量 %ya 所求点插值估计量 %建立系数零矩阵D 及初始化:D = zeros(length(x)-1);ya = y(1);xi = 1;%求出矩阵D,该矩阵第一行为牛顿插值多项式系数:for i=1:(length(x)-1)D(i,1) = (y(i+1) -y(i))/(x(i+1) -x(i));endfor j=2:(length(x)-1)for i=1:(length(x)-j)D(i,j) = (D(i+1,j-1) - D(i,j-1)) / (x(i+j) - x(i)); endend%xi为单个多项式(x-x(1))(x-x(2))...的值for i=1:(length(x)-1)for j=1:ixi = xi*(xa - x(j));endya = ya + D(1,i)*xi;xi = 1;end3、三次样条插值多项式(1)(第一边界条件)源代码:function y=yt1(x0,y0,f_0,f_n,x) _____________(1)%第一类边界条件下三次样条插值;%xi 所求点;%yi 所求点函数值;%x 已知插值点;%y 已知插值点函数值;%f_0左端点一次导数值;%f_n右端点一次导数值;n = length(x0);z = length(y0);h = zeros(n-1,1);k=zeros(n-2,1);l=zeros(n-2,1);S=2*eye(n);for i=1:n-1h(i)= x0(i+1)-x0(i);endfor i=1:n-2k(i)= h(i+1)/(h(i+1)+h(i));l(i)= 1-k(i);end%对于第一种边界条件:k = [1;k]; _______________________(2)l = [l;1]; _______________________(3)%构建系数矩阵S:for i = 1:n-1S(i,i+1) = k(i);S(i+1,i) = l(i);end%建立均差表:F=zeros(n-1,2);for i = 1:n-1F(i,1) = (y0(i+1)-y0(i))/(x0(i+1)-x0(i));endD = zeros(n-2,1);for i = 1:n-2F(i,2) = (F(i+1,1)-F(i,1))/(x0(i+2)-x0(i));D(i,1) = 6 * F(i,2);end%构建函数D:d0 = 6*(F(1,2)-f_0)/h(1); ___________(4)dn = 6*(f_n-F(n-1,2))/h(n-1); ___________(5)D = [d0;D;dn]; ______________(6)m= S\D;%寻找x所在位置,并求出对应插值:for i = 1:length(x)for j = 1:n-1if (x(i)<=x0(j+1))&(x(i)>=x0(j))y(i) =( m(j)*(x0(j+1)-x(i))^3)/(6*h(j))+...(m(j+1)*(x(i)-x0(j))^3)/(6*h(j))+...(y0(j)-(m(j)*h(j)^2)/6)*(x0(j+1)-x(i))/h(j)+... (y0(j+1)-(m(j+1)*h(j)^2)/6)*(x(i)-x0(j))/h(j) ; break;else continue;endendend(2)(自然边界条件)源代码:仅仅需要对上面部分标注的位置做如下修改:__(1):function y=yt2(x0,y0,x)__(2):k=[0;k]__(3):l=[l;0]__(4)+(5):删除—(6):D=[0:D:0]4、——————————————PS:另建了一个f方程文件,后面有一题也有用到。

MAAB牛顿插值法例题与程序

MAAB牛顿插值法例题与程序

题目一:多项式插值某气象观测站在8:00(AM )开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton )逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10)。

二、数学原理假设有n+1个不同的节点及函数在节点上的值(x 0,y 0),……(x n ,y n ),插值多项式有如下形式:)())(()()()(n 10n 102010n x -x )(x -x x -x x P x x x x x x -⋯⋯-+⋯⋯+-++=αααα(1) 其中系数i α(i=0,1,2……n )为特定系数,可由插值样条i i n y x P =)((i=0,1,2……n )确定。

根据均差的定义,把x 看成[a,b]上的一点,可得f(x)=f (0x )+f[10x x ,](0x -x ) f[x,0x ]=f[10x x ,]+f[x,10x x ,](1x -x )……f[x,0x ,…x 1-n ]=f[x,0x ,…x n ]+f[x,0x ,…x n ](x-x n )综合以上式子,把后一式代入前一式,可得到:f(x)=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+…+f[x,0x ,…x n ](0x -x )…(x-x 1-n )+f[x,0x ,…x n ,x ])(x 1n +ω=N n (x )+)(x n R 其中N n (x )=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+ …+f[x,0x ,…x n ](0x -x )…(x-x 1-n )(2))(x n R =f(x)-N n (x )=f[x,0x ,…x n ,x ])(x 1n +ω(3) )(x 1n +ω=(0x -x )…(x-x n ) Newton 插值的系数i α(i=0,1,2……n )可以用差商表示。

MATLAB实习报告-1

MATLAB实习报告-1

--实习报告班级:******姓名:**学号:***********指导老师:***日期:2011/11/24目录一.MATLAB简介 (3)二.上机实习题目 (3)1. 第2章第1题 (3)2. 第3章第2题 (3)3. 第5章第2题 (3)4. 第4章第1题 (4)三.题目实现过程 (4)1. 牛顿插值以及三次样条插值(第一个实验题) (4)a.牛顿插值 (4)b.三次样条插值 (4)c.牛顿插值截图 (5)d.三次样条插值截图 (6)2. 3次,4次多项式的曲线拟合 (7)a.先输入表格中对应的数据, (7)次拟合 (7)c. 3次拟合截图 (8)d. 4次拟合 (9)e. 4次拟合截图 (9)3. 高斯消去法解线性方程组 (10)a. 高斯消去法源代码 (10)b. 第一个小题 (11)c. 第二个小题 (12)4. 雅克比迭代法与SOR方法 (13)a. 雅克比迭代法的计算公式 (13)b. 超松弛迭代法的计算公式 (13)c.得到希尔矩阵 (13)d.得到b矩阵 (13)e.雅克比迭代法实现的函数 (13)迭代法实现的函数 (14)g.对于雅克比迭代法,通过执行以下代码 (15)h. 对于SOR迭代法,执行相对应代码 (15)四.心得与感想 (18)一.M ATLAB简介MATLAB是一个软件,用来进行科学计算。

在实际生活或者在科学研究中,大量的计算有时候是不可避免的,在这个时候,我们可以选择很多种方式来解决我们的问题。

但是选择一个好的软件对于我们来说有时候却是非常困难的,尤其是现在各种软件层出不穷,当然里面有好的,可是有大多数的软件却是鱼目混珠,在里面滥竽充数。

如果我们不避开这些,那么我们可能面临的是用很大的工作量来完成一个极其简单的问题,或者说在付出了时间与精力之后却完不成问题。

所以必须选择一个好的计算软件来解决问题。

MATLAB 就是这样一个软件,在你能够熟悉并且流畅运用它之后,那它将是一把能够解决很多问题的钥匙。

Matlab数据插值与拟合

Matlab数据插值与拟合

end
end
end
第16页,共49页。
例4-3 根据下表的数据点求出其拉格朗日 插值多项式,并计算当x=1.6时y的值。
x
1
y 0.8415
1.2
0.9320
1.8
2. 5
0.9738 0.5985
4
-0.7568
解:
>> x=[1 1.2 1.8 2.5 4]; >> y=[0.8415 0.9320 0.9738 0.5985 -0.7568]; >> f=language(x,y)
同‘pchip’,三次Hermite多项式插值
第5页,共49页。
1.Linear(分段线性插值)
它 在的区算间法[xi是,xi在+1]每上个的小子区插间值[多xi,x项i+式1]上为采:用简单的线性插值。
Fi
x xi1 xi xi1
f
(xi )
x xi xi1 xi
f (xi1)
由此整个区间[xi,xi+1]上的插值函数为:
邻近的已知点的线性函数插值计算该区间内插值点上的函数
值。
第11页,共49页。
例4-2 用其他一维插值方法对以下7个离散数据点 (1,3.5)、(2,2.1)、(3,1.3)、(4.0.8)、(5,2.9)、(6,4.2)、(7,5.7
进行一维插值方法。
解:在MATLAB命令窗口中输入以下命令:
>> x=[1 2 3 4 5 6 7];
end;
%计算拉格朗日基函数
f = f + l; simplify(f);
%计算拉格朗日插值函数 %化简
if(i==n)

牛顿插值法matlab程序例题

牛顿插值法matlab程序例题

牛顿插值法是一种常用的数值分析方法,用于构造一个多项式函数,以便在给定的数据点上进行插值。

这个主题在数学和工程领域中有着广泛的应用,特别是在数据拟合和函数逼近方面。

牛顿插值法的核心思想是通过不断地添加新的数据点来构造一个多项式,并利用已知数据点来确定多项式的系数,从而实现对未知数据点的插值预测。

在Matlab中,实现牛顿插值法并不困难,我们可以利用已有的函数和工具来简化计算过程。

下面,我们将通过一个具体的例题来讲解如何使用Matlab编写牛顿插值法的程序,并分析其结果。

我们需要明确牛顿插值法的数学原理。

给定n个互不相同的节点\(x_0, x_1, ... , x_n\),以及在这些节点上的函数值\(f(x_0), f(x_1), ... , f(x_n)\),我们希望构造一个n次插值多项式p(x),满足p(x_i) = f(x_i),i=0,1,...,n。

牛顿插值多项式的一般形式为:\[p(x) = a_0 + a_1(x - x_0) + a_2(x - x_0)(x - x_1) + ... + a_n(x -x_0)(x - x_1)...(x - x_{n-1})\]其中,\[a_i\]表示插值多项式的系数。

通过牛顿插值法的迭代过程,可以逐步求解出这些系数,进而得到插值多项式的表达式。

接下来,我们将以一个具体的例题来演示如何在Matlab中实现牛顿插值法。

假设我们有如下的数据点和函数值:\(x = [1, 2, 3, 4]\)\(f(x) = [1, 4, 9, 16]\)我们希望利用这些数据点来构造一个插值多项式,并在给定的区间上进行插值计算。

在Matlab中,可以通过interp1函数来进行插值计算,该函数支持多种插值方法,包括牛顿插值法。

下面是一个简单的Matlab程序示例:```matlabx = [1, 2, 3, 4];y = [1, 4, 9, 16];xi = 2.5;yi = interp1(x, y, xi, 'spline');disp(['在x=',num2str(xi),'处的插值结果为:',num2str(yi)]);```在这段代码中,我们首先定义了给定的数据点x和对应的函数值y,然后利用interp1函数对x=2.5处的插值结果进行计算。

Matlab插值方法学习Hermite,lagrange,Newton

Matlab插值方法学习Hermite,lagrange,Newton

大家都知道插值在数学建模中很重要,现在介绍几种常用插值下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite插值和三次样条插值。

1.拉格朗日多项式插值拉格朗日插值就是给定n个数,让你用不超过n-1次的多项式你逼近它,当然这n个点要能满足多项式。

这是一种最基本的思想,计算很简单,先计算n个基函数,基函数可以自己上网搜一下,因为这里打出公式有点麻烦。

然后就是把每个点的y值乘以他的基函数,把这n个式子相加,最后化简就ok了。

下面我把代码写出来,我这些代码全是自己写的,注释比较详细,这里只以lagrange为例,其余都放在附件里了。

%定义myLagrange函数,参数为向量x,y,由用户调用该函数时输入function L=myLagrange (x,y)%n 插值结点的个数n=length(x);%L myLagrange函数计算的多项式系数行列式L=zeros(1,n);%%使用双重for循环,第一个for循环是fori=1:n%aa=1;%ww=1;%for循环for j=1:n%如果i不等于jif j~=i%累加法计算aa=a*(x(i)-x(j));%用向量乘法函数conv计算ww=conv(w,[1,-x(j)]);%if语句结束符end%第二个for循环结束符end%递归法计算L,其中y(i)/a*w表示第i个元素L=y(i)/a*w+L;%第一个for结束符end没错,就这么几句代码,所以很简单的。

2.牛顿插值牛顿插值其实是为了解决拉格朗日插值不能增加新的点来说的。

拉格朗日插值只能接受给定的那么多点,了然后插值。

如果你想再加一个点,它会重新开始计算,这个很费时间和内存。

因此牛顿插值就诞生了。

了解牛顿插值前要学习下差商和差分两个简单的概念。

Newton 插值的优点是:每增加一个节点,插值多项式只增加一项,即因而便于递推运算。

而且Newton 插值的计算量小于Lagrange 插值。

数值分析实验报告1

数值分析实验报告1
end
p
得到m=(00)T
即M0=0 ;M1=;M2=;M3=;M4=0
则根据三次样条函数定义,可得:
S(x)=
接着,在Command Window里输入画图的程序代码,
下面是画牛顿插值以及三次样条插值图形的程序:
x=[ ];
y=[ ];
plot(x,y)
hold on
for i=1:1:5
y(i)= *(x(i)*(x(i)*(x(i)*(x(i)*(x(i)*(x(i)*(x(i)
Pn=f(x0)+f[x0,x1](x-x0)+ f[x0,x1,x2](x-x0) (x-x1)+···+ f[x0,x1,···xn](x-x0) ···(x-xn-1)
我们要知道牛顿插值多项式的系数,即均差表中得部分均差。
在MATLAB的Editor中输入程序代码,计算牛顿插值中多项式系数的程序如下:
【实验原理】
《数值分析》第二章“插值法”的相关内容,包括:牛顿多项式插值,三次样条插值,拉格朗日插值的相应算法和相关性质。
【实验环境】(使用的软硬件)
软件:
MATLAB 2012a
硬件:
电脑型号:联想 Lenovo 昭阳E46A笔记本电脑
操作系统:Windows 8 专业版
处理器:Intel(R)Core(TM)i3 CPU M 350 @
实验内容:
【实验方案设计】
第一步,将书上关于三种插值方法的内容转化成程序语言,用MATLAB实现;第二步,分别用牛顿多项式插值,三次样条插值,拉格朗日插值求解不同的问题。
【实验过程】(实验步骤、记录、数据、分析)
实验的主要步骤是:首先分析问题,根据分析设计MATLAB程序,利用程序算出问题答案,分析所得答案结果,再得出最后结论。

matlab实现牛顿差分及等距节点插值公式

matlab实现牛顿差分及等距节点插值公式

题目:探究matlab中牛顿差分及等距节点插值公式的实现在计算数学问题时,插值是一种常见的数值分析方法,它常常用于估计在已知数据点之间的数值。

而牛顿差分及等距节点插值公式,则是其中的一种重要方法。

本文将从简单到复杂,由浅入深地探讨matlab 中牛顿差分及等距节点插值公式的实现方法,以便读者更深入地理解这一主题。

1. 牛顿插值方法牛顿插值是一种使用多项式进行插值的数值方法,利用了拉格朗日插值多项式的一般形式,其在实际应用中具有良好的稳定性和精确度。

在matlab中,我们可以通过编写函数来实现牛顿插值方法,并根据所给定的数据点计算出插值多项式。

2. 差分及等距节点插值公式差分及等距节点插值公式是牛顿插值的一种具体形式,它通过相邻节点的差分来递推计算插值多项式的系数,从而实现对给定数据点的插值。

在matlab中,我们可以编写代码来实现这一方法,通过对数据点的差分计算来得到插值多项式的系数,并最终得到插值结果。

3. matlab中的实现步骤在matlab中,实现牛顿差分及等距节点插值公式主要包括以下几个步骤:3.1 准备数据点:首先需要准备好给定的数据点,这些数据点将作为插值的依据。

3.2 计算差商:利用给定的数据点,我们可以计算出插值多项式的系数,即差商。

这一步骤可以通过递推计算来实现。

3.3 构建插值多项式:根据得到的插值多项式的系数,我们可以构建出完整的插值多项式。

3.4 计算插值结果:我们可以利用构建好的插值多项式来计算任意点的插值结果。

4. 个人观点和理解在我看来,牛顿差分及等距节点插值公式是一种非常实用和有效的插值方法,在实际工程和科学计算中都有着广泛的应用。

在matlab中,通过编写相应的代码,我们可以很方便地实现这一方法,并得到高质量的插值结果。

掌握牛顿插值及其在matlab中的实现方法对我们来说是非常重要的。

总结回顾本文从简到繁,由浅入深地探讨了matlab中牛顿差分及等距节点插值公式的实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(){}
2
1
()(11),5,10,20:
1252
1()1,(0,1,2,,)()2,(0,1,2,,)()
()2
35,20:1100
(i i i
i n n k k k Newton f x x n x f x x i i n f x n
x
y i n Newton N x S x n x k y f x =
-≤≤=+=-+====-+
= 题目:插值多项式和三次样条插值多项式。

已知对作、计算函数在点处的值;、求插值数据点
的插值多项式和三次样条插值多项式;、对计算和相应的函数值),()() (1,2,,99)4:()max ()()max
()n k n k n k n k n k n k k
k
N x S x k E N y N x E S y S x ==-=- 和;
、计算,;
解释你所得到的结果。

算法组织:
本题在算法上需要解决的问题主要是:求出第二问中的Newton 插值多项式
)(x N n 和三次样条插值多项式()n S x 。

如此,则第三、四问则迎刃而解。

计算两
种插值多项式的算法如下:
一、求Newton 插值多项式)(x N n ,算法组织如下:
Newton 插值多项式的表达式如下:
)())(()()(110010--⋅⋅⋅--+⋅⋅⋅+-+=n n n x x x x x x c x x c c x N
其中每一项的系数c i 的表达式如下:
1102110)
,,,(),,,(),,,(x x x x x f x x x f x x x f c i i i i i -⋅⋅⋅-⋅⋅⋅=
⋅⋅⋅=-
根据i c 以上公式,计算的步骤如下:
⎪⎪
⎪⎩⎪
⎪⎪
⎨⎧⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅----)
,,,,(1)
,,,(),,,,(),(,),,(2)(,),(),(11101111011010n n n n n n n n x x x x f n x x x f x x x f n x x f x x f x f x f x f 、计算、计算、计算、计算 二、求三次样条插值多项式)(x S n ,算法组织如下:
所谓三次样条插值多项式)(x S n 是一种分段函数,它在节点i x 011()n n a x x x x b -=<<⋅⋅⋅<<=分成的每个小区间1[,]i i x x -上是3次多项式,其在此区间上的表达式如下:
2233
1111111()[()()]()()666[,]1,2,,.
i i i i i i i i i i i i i i i i i h x x h x x S x x x M x x M y M y M h h h x x x i n --------=-+-+-+-∈=⋅⋅⋅,

因此,只要确定了i M 的值,就确定了整个表达式,i M 的计算方法如下: 令:
11
111111116()6(,,)i i i i i i i i i i i i i i
i i i i i i i h h h h h h y y y y d f x x x h h h h μλμ++++--+++⎧
===-⎪++⎪⎨
--⎪=-=⎪+⎩
, 则i M 满足如下n-1个方程:
1121,2,,1i i i i i i M M M d i n μλ-+++==⋅⋅⋅-,
方程中有n+1个未知量,则令0M 和n M 分别为零,则由上面的方程组可得到
(11)i M i n ≤≤-的值,可得到整个区间上的三次样条插值多项式)(x S n 。

计算结果与结果分析
本题中各问的相应计算结果如下:
1、在n 取不同值时,x i 和对应的f(x i )(亦即下图中的y1)的值如下:
n =5时
:
n =10时:
n =20时:
2、Newton 插值多项式的表达式如下:
)())(()()(110010--⋅⋅⋅--+⋅⋅⋅+-+=n n n x x x x x x c x x c c x N
n =5时,其各项系数43210,,,,c c c c c 分别为:
n =10时,其各项系数10910,,,,c c c c ⋅⋅⋅⋅⋅⋅分别为:
n =20时,其各项系数20,1910,,,c c c c ⋅⋅⋅⋅⋅⋅分别为:
对于三次样条插值多项式)(x S n ,最重要的是求出其M 矩阵的值,其中M 0和
M n 都为0,M 1~M n-1则存储在矩阵M 中: n =5时的M 矩阵(M 1~M 4)的值为:
n =10时的M 矩阵(M 1~M 9)的值为:
n =20时的M 矩阵(M 1~M 19)的值为:
3、不论n 为多少,)(k x f 是不会改变的,其值存储在矩阵yy 中;当n 取不同值的时候,Newton 插值多项式()n k N x 和三次样条插值多项式()n k S x 的值是不同的,为了使整个结果直观,实验的最终结果还用图形进行的重现(本问中所得函数值
)(k x f 、牛顿插值()n k N x 和三次样条插值()n k S x 的结果分别存在数组变量yy 、Nn
和Sn 中)。

当n =5时,整个区间中的()n k N x 、()n k S x 以及)(k x f 的值如图所示:
图5-1 5n 时()n k N x 、()n k S x 与原始值)(k x f 的对比图
n =20时,整个区间中的()n k N x 和)(k x f 以及()n k S x 和)(k x f 的对比如下面两图所示:
图5-2 20n =时()n k N x 与原始值)(k x f 的对比图
图5-3 20n =时()n k S x 与原始值)(k x f 的对比图
通过对比以上三个图可得到如下结论:
1、随着n 的增大,使用Newton 插值多项式会出现龙格现象(对比图5-1和图5-2中的()n k N x )。

2、随着n 的增大,三次样条插值多项式)(x S n 将越来越接近被插值的函数(对比图5-1和图5-3中的()n k S x )。

4、根据第3问中得到的数据可以很容易的得到()n E N 和()n E S ,它们的值如下表所示:
当n =20时,使用Newton 插值多项式出现龙格现象,其最大误差达到58.2781,而相应的三次样条插值多项式)(x S n 的最大误差仅为0.00309。

可见,n 越大,Newton 插值越可能偏离被插值函数,而相应的三次样条插值则能更接近于被插值函数。

x=a:(b-a)/n:b; %插值节点 y=f(x);
plot(x,y,'b') %用蓝色线作被插函数图象 hold on
z=a:(b-a)/(2*n):b; n=length(x); for j=2:n for i=n:-1:j
y(i)=(y(i)-y(i-1))/(x(i)-x(i-j+1));%计算差商 end end u=y(n); m=length(z); for j=1:m for i=n-1:-1:1
u=y(i)+u*(z(j)-x(i)); %计算牛顿插值多项式的值 v(j)=u; end u=y(n); end
plot(z,v,'r') %用红色线作牛顿插值多项式图象
hold off
x=a:(b-a)/n:b; %插值节点
y=f(x);
plot(x,y,'b') %用蓝色线作被插函数图象
hold on
z=a:(b-a)/(2*n):b;
n=length(x);
for j=2:n
for i=n:-1:j
y(i)=(y(i)-y(i-1))/(x(i)-x(i-j+1));%计算差商
end
end
u=y(n);
m=length(z);
for j=1:m
for i=n-1:-1:1
u=y(i)+u*(z(j)-x(i)); %计算牛顿插值多项式的值
v(j)=u;
end
u=y(n);
end
plot(z,v,'r') %用红色线作牛顿插值多项式图象
hold off。

相关文档
最新文档