matlab上机实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》课程设计实验报告
姓名:
学号:
专业:
指导老师:
实验一 函数插值方法
一、问题提出
对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n == 。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1)
j x
0.4 0.55 0.65 0.80 0.95 1.05
j
y
0.41075 0.57815 0.69675
0.90
1.00 1.25382
求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈ ) (2)
j x
1 2 3 4 5 6 7
j
y
0.368 0.135 0.050 0.018 0.007 0.002 0.001
试构造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,)
()()(,
)()(1
11
1+=--==∏
∑+≠=+=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
001
0,()()[,,]()k n
n j k k j j k
N x f x f x x x x -==≠=+∙
-∑∏ 其中:
0,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、主程序:
对于数据(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所示:
图1
所以得到所求的lagrange 多项式为:
9950.09683.04419.01175.00186.00016.0001.0L 234566--+-+-=x x x x x x x )
(对于要求(3),在主窗口输入: x=[1,4,7];
y=[0.368,0.018,0.001]; [c,l]=lagran(x,y) c =
0.0185 -0.2092 0.5587 xx=1:7
yy= polyval(c,xx) plot(xx,yy, x,y,'o');
得出在拉格朗日的插值多项式曲线图,如图2所示: