matlab牛顿插值法例题与程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目一:多项式插值
某气象观测站在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 )可以用差商表示。一般有
f k =α[
k
10x x x ⋯⋯,] (k=0,1,2,……,n )
(4)
把(4)代入(1)得到满足插值条件N )()
(i i n x f x =(i=0,1,2,……n )的n 次Newton 插值多项式
N n (x )=f (0x )+f[10x x ,](1x -x )+f[210x x x ,,](1x -x )(2x -x )+……+f[n 10x x x ⋯⋯,](1x -x )(2x -x )…(1-n x -x ).
其中插值余项为:
)
()!
()
()()()(x 1n f x N -x f x R 1n 1
n n +++==ωξ ξ介于k 10x x x ⋯⋯,之间。 三、程序设计
function [y,A,C,L]=newdscg(X,Y,x,M)
% y 为对应x 的值,A 为差商表,C 为多项式系数,L 为多项式 % X 为给定节点,Y 为节点值,x 为待求节点 n=length(X); m=length(x); % n 为X 的长度 for t=1:m
z=x(t); A=zeros(n,n);A(:,1)=Y'; s=; p=; q1=; c1=;
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(k)= polyval(C, z); %输出y 值
end
L(k,:)=poly2sym(C); %输出多项式
>> syms M,X=[1,3,5,7];Y=[,,,];x=10;
>> [y,A,C,L]=newdscg(X,Y,x,M)
y =
A =
0 0 0
0 0
C =
L =
- x^3/480 - (19*x^2)/160 + (697*x)/480 + 3387/160
四、结果分析和讨论
对于不超过三次的插值多项式,x如果选取1,3,5,7这三个点能够得到较好的三次插值多项式L=^^2++。当x=10时,也即9点30分时的温度为度,结果分析知此值应是偏小的。对于选取不同的插值节点,能够得到不同的插值多项式,误差也不尽相同。
五、完成题目的体会与收获
对于牛顿插值法有了更深的了解,合理选择插值节点很重要。加深了对其原理的认识,学会了牛顿插值法的matlab编程,对matlab计算方法更加熟悉。通过完成这道题使我受益匪浅。