拉格朗日插值实验报告Word文档格式.docx
- 文档编号:17319035
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:12
- 大小:115.86KB
拉格朗日插值实验报告Word文档格式.docx
《拉格朗日插值实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《拉格朗日插值实验报告Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
f(x)
3算法原理与流程图
(1)原理
设函数y=在插值区间[a,b]上连续,且在n+1个不同的插值节点a≤x0,x1,…,xn≤b上分别取值y0,y1,…,yn。
目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P(x),满足插值条件P(xi)=yi(i=0,1,…,n),而在其他点x≠xi上,作为f(x)近似值。
求插值函数P(x)的方法称为插值法。
在本实验中,采用拉格朗日插值法。
分段低次插值
当给定了n+1个点x0<
x1<
…<
xn上的函数值y0,y1,…,yn后,若要计算x≠xi处函数值f(x)的近似值,可先选取两个节点xi-1与xi使x∈[xi-1,xi],然后在小区间[xi-1,xi]上作线性插值,即得
这种分段低次插值叫分段线性插值,又称折线插值。
类似地,我们可以选取距离x最近的三个节点xi-1,xi与xi+1,然后进行二次插值,即得
这种分段低次插值叫分段二次插值,又称分段抛物线插值。
全区间上拉格朗日插值
对节点xi(i=0,1,…,n)中任一点xk(0≤k≤n),作一n次多项式lk(x),使它在该点上的取值为1,在其余点xi(i=0,1,…,k-1,k+1,…,n)上取值为零。
对应于每一节点xk(k=0,1,…,n),都能写出一个满足此条件的多项式,这样写出了n+1个多项式l0(x),l1(x),…,ln(x),其中
;
由条件
可得
于是我们可以得出如下的拉格朗日n次插值多项式(对于全区间上的插值,n取函数表的长度)
(2)流程图
分段线性插值分段二次插值全区间拉格朗日插值
4程序代码及注释
1、分段线性插值
%分段线性插值
functiony=piece_linear(x0,y0,x)
%x0,y0为已知点,x为待求点
n=length(x0);
p=length(y0);
m=length(x);
%n,p,m分别为x0,y0,x长度
ifn~=p
fprintf('
Error!
Pleaseinputagain!
\n'
);
%x0和y0长度不等时,报错
else
fori=1:
m
z=x(i);
sum=;
l=0;
%给l赋初值,根据x的值确定l
ifz<
x0
(1)|z>
x0(n)
x(%d)isoutofrange!
i);
break;
end
%当插值点超出范围时,报错
forj=2:
n
x0(j)
l=j;
ifl~=0
%一旦l有非零值,则终止循环,选出合适的l
fork=l-1:
l
a=;
fors=l-1:
ifs~=k
a=a*(z-x0(s))/(x0(k)-x0(s));
sum=sum+y0(k)*a;
y(i)=sum;
y(%d)=%f\nx1=%.3fy1=%.5f,x2=%.3fy2=%.5f\n\n'
i,y(i),x0(l-1),y0(l-1),x0(l),y0(l));
%输出插值结果和所需节点
end
2、分段二次插值
%分段二次插值
functiony=piece_square(x0,y0,x)
ifz<
forj=1:
n-2
p=*(x0(j)+x0(j+1));
p
ifl==0
l=n-1;
%输入正确时,若l还等于零,l=n-1
l+1
fprintf('
y(%d)=%f\nx1=%.3fy1=%.5f\nx2=%.3fy2=%.5f\nx3=%.3fy3=%.5f\n\n'
i,y(i),x0(l-1),y0(l-1),x0(l),y0(l),x0(l+1),y0(l+1));
%输出插值结果与所需节点
3、拉格朗日全区间插值
%拉格朗日全区间插值
functiony=lagrange(x0,y0,x)
%n,p,m分别为x0,y0,x长度
%x0和y0长度不等时,报错
s=;
fork=1:
p=;
ifj~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
s=p*y0(k)+s;
y(i)=s;
y(%d)=%.5f\n'
i,y(i));
%输出插值结果
5算例分析
1、测试示例
>
x=[1234];
y=[234];
y2=lagrange(x,y,x0)
y=[2345];
x0=[];
x
(1)isoutofrange!
y
(1)=
x
(2)isoutofrange!
y2=
2、首先输入函数变及待求点
x=[];
y=[];
注:
保证在matlab工作目录中有三个.m文件
3、分段线性插值
y0=piece_linear(x,y,x0)
x1=y1=,x2=y2=
y
(2)=
y(3)=
y0=
4、分段二次插值
y1=piece_square(x,y,x0)
x1=y1=
x2=y2=
x3=y3=
y1=
5、全区间拉格朗日插值
6讨论与结论
1、使用tic,toc函数计算下列四种方法计算上述问题所运行的时间
Function
lagrange(x0,y0,x)
piece_linear(x0,y0,x)
piece_square(x0,y0,x)
运行时间(s)
从三次实验结果可知,三个程序的运行时间都很短。
2、程序优化
由分段线性插值和分段二次插值的原理,x取值在函数表范围内时,插值结果有意义,而当x取值在函数表范围以外,利用分段线性插值公式仍可以进行运算并得到一个值,但其结果不准确;
分段二次插值则无法找到三个合适的点以求插值,不予以输出结果;
若输入的函数表x与y的长度不相等,则无法插值。
所以加入以下判断以提高插值的准确性
3、作图比较
上图为三种方法的插值曲线,其中x取0到,步长为,由图可得,三种曲线非常接近,这说明我们用拉格朗日插值计算所给点函数值的近似值时,引起的误差还是比较小的。
参考文献
[1]易大义,沈云宝,李有法.计算方法(第2版),浙江大学出版社..
[2]张琨高思超毕靖编着MATLAB2010从入门到精通电子工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拉格朗日插值 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)