数值分析(计算方法)实验一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》 课程实验指导书
实验一 函数插值方法
一、问题提出
对于给定的一元函数)(x f y =的n+1个节点值(),0,1,
,j j y f x j n ==。试用
Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。
数据如下:
(1)
求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈ )
(2)
试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈ )
二、要求
1、 利用Lagrange 插值公式
00,()n n
i n k k i i k k i x x L x y x x ==≠⎛⎫-= ⎪-⎝⎭∑∏编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式;
3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何;
4、 对此插值问题用Newton 插值多项式其结果如何。
四、实验分析:
Lagrange 插值多项式的表达式:
1,,2,1,)()()(,
)()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n i j j j i j i n i i i 。
其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。)(x l i 的这种表示具有较好的对称性。公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。
Newton 插值多项式如下:
1
0010,()()[,,]()k n n j k k j j k N x f x f x x x x -==≠=+•-∑∏ 其中: 00,0()()[,,]k i k i i j j j i k f x x x f x x ==≠-=∑∏
Newton 插值多项式的优点是:当每增加一个节点时,只增加一项多项式。
三、实验程序及注释
1、m 程序:
function [c,l]=lagran(x,y)
% x 为n 个节点的横坐标组成的向量,y 为纵坐标所组成的向量
% c 为所得插值函数的系数所组成的向量
w=length(x);
n=w-1;
l=zeros(w,w);
for k=1:n+1
v=1;
for j=1:n+1
if k~=j
v=conv(v,poly(x(j)))/(x(k)-x(j));
end
end
l(k,:)=v;
end
c=y*l;
function fi=Lagran_(x,f,xi)
fi=zeros(size(xi));
n=length(f);
for i=1:n
z=ones(size(xi));
for j=1:n
if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));
end
end
fi=fi+z*f(i);
end
Return
2、主程序:
对于数据(1),在主窗口输入:
x=[0.4 0.55 0.65 0.80 0.95 1.05]; y=[0.41075 0.57815 0.68675 0.90 1.00 1.25382];
lagran (x,y)
ans =
143.8486 -506.0836 694.2890 -463.5132 151.5174 -18.9859
format long
xi=[0.596,0.990]; yi=Lagran_(x,y,xi)
yi =
0.61916350788547 1.05159915747938
xx=0.3:0.01:1.1
[c,l]=lagran(x,y)
yy= polyval(c,xx)
plot(xx,yy, x,y,'o');
得出在拉格朗日的插值多项式曲线图,如图1-1所示:
图1-1
由此得到所求的lagrange 多项式为:
9859.185174.1515132.4632890.6940836.5068486.143L 23455
-+-+-=x x x x x x )( 对于数据(2),在主窗口输入:
x=[1 2 3 4 5 6 7];
y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001];
lagran (x,y)
ans =
0.0001 -0.0016 0.0186 -0.1175 0.4419 -0.9683 0.9950
xi=[1.8,6.15]; yi=Lagran_(x,y,xi)
yi =
0.16476 0.0012658
xx=0:7
[c,l]=lagran(x,y)
yy= polyval(c,xx)
plot(xx,yy, x,y,'o');
得出在拉格朗日的插值多项式曲线图,如图1-2所示: