matlab计算拉格朗日牛顿及分段线性插值的程序Word文件下载.doc
《matlab计算拉格朗日牛顿及分段线性插值的程序Word文件下载.doc》由会员分享,可在线阅读,更多相关《matlab计算拉格朗日牛顿及分段线性插值的程序Word文件下载.doc(5页珍藏版)》请在冰点文库上搜索。
![matlab计算拉格朗日牛顿及分段线性插值的程序Word文件下载.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/3ec789ad-6f3b-4c68-9a8e-0a58a43d0036/3ec789ad-6f3b-4c68-9a8e-0a58a43d00361.gif)
三次样条插值与分段插值
已知飞机下轮廓线数据如下:
x
3
5
7
9
11
12
13
14
15
y
1.2
1.7
2.0
2.1
1.8
1.0
1.6
飞机下轮廓线形状大致如下图所示:
机翼
下轮廓线
要求分别用拉格朗日插值法、Newton插值法、分段线性插值法和三次样条插值法计算x每改变0.5时y的值,即x取0.5,1,1.5,…,14.5时对应的y值。
比较采用不同方法的计算工作量、计算结果和优缺点。
二.程序流程图及图形
1.拉格朗日插值法
2.牛顿插值法
3.分段线性插值法
三.matlab程序及简要的注释(m文件)
1.拉格朗日插值法2.牛顿插值法
functionf=lang(x,y,x0)
%x为已知数据点的x坐标向量
%y为已知数据点的y坐标向量
functionf=newdun(x,y,xi)
%x0为插值点的x坐标
%f为求得的拉格朗日插值多项式
if(length(x)==length(y))
n=length(x);
else
disp('
ThelengthsofXangY
mustbenotequal!
'
)
return;
end%检错
f=0;
fori=1:
n
l=1;
forj=1:
i-1
l=l.*(x0-x(j))/(x(i)-x(j));
end;
forj=i+1:
l=l.*(x0-x(j))/(x(i)-x(j));
%计算拉格朗日基函数
f=f+l*y(i);
%计算拉格朗日插值函数
end
Return
%xi为插值点的x坐标
%f为求得的均差牛顿插值多项式
disp('
mustbenotequal!
);
return;
end%检错
Y=zeros(n);
Y(:
1)=y;
fora=1:
n-1
forb=1:
n-a
Y(b,a+1)=(Y(b+1,a)-Y(b,a))/
(x(b+a)-x(b));
%计算均差函数(差商)
end
z=1;
forj=1:
z=z.*(xi-x(j));
%计算多项式函数
f=f+Y(1,i)*z;
%计算牛顿插值函数
end
fora=1:
3.分段线性插值法
fork=1:
if(x(k)<
=x0&
x0<
=x(k+1))
temp=x(k)-x(k+1);
f=(x0-x(k+1))/temp*y(k)+(x0-
x(k))/(-temp)*y(k+1);
functionf=fd2(x,y,x0)
%f为求得的分段线性插值多项式
ThelengthsofXandY
四.程序运行结果
1.拉格朗日插值法2.牛顿插值法
>
yi=newdun(x,y,xi)
yi=
Columns1through8
-15.4117-15.9238-10.9898-5.4272
-1.22531.20002.17652.2666
Columns9through16
1.98941.70001.57031.6249
1.79952.00002.14772.2040
Columns17through24
2.17522.10002.02691.9904
1.99282.00001.95371.8000
Columns25through29
1.52721.20000.96561.0000
1.3480
plot(x,y,xi,yi,'
g+'
x=[035791112131415];
y=[01.21.72.02.12.01.81.21.01.6];
xi=0.5:
0.5:
14.5;
yi=lang(x,y,xi)
Columns1through8
-15.4117-15.9238-10.9898-5.4272
Columns9through16
plot(x,y,'
b:
xi,yi)
3.分段线性插值法五、对不同实现方法的运行结果进行比较
yi=fd2(x,y,xi)
0.20000.40000.60000.8000
1.00001.20001.32501.4500
1.57501.70001.77501.8500
1.92502.00002.02502.0500
Columns17through24
2.07502.10002.07502.0500
2.02502.00001.90001.8000
Columns25through29
1.50001.20001.10001.0000
1.3000
xi,yi,'
及总结
拉格朗日插值法的优点是表达式简单明确,形式对称,它的缺点是如果要想增加插值节点,整个公式必须都发生改变,且容易发生龙格现象。
牛顿插值法却很好的改善了这一点,从而变得更加灵活方便。
此外两者的拟合程度也很相似。
分段插值的缺点是不能保证曲线在连接点处的光滑性。
分段插值可以步进地插值计算,同时也带来了内在的高度稳定性和较好的收敛性。
与前两种相比还具有良好的拟合性。
总结:
我们组只编写了前三种插值方法,对于三次样条插值参数太多,故没能编写出其程序,但通过matlab中的interp1函数可以实现。
在此次作业我们也学到了很多知识,感到很充实。
补充三次样条插值图形如下:
4.三次样条插值法六.计算公式及计算方法(手写)
>
yi=interp1(x,y,xi,'
spline'
0.24210.46650.67390.8649
1.04011.20001.34541.4767
1.59471.70001.79301.8740
1.94302.00002.04502.0773
2.09592.10002.08932.0668
2.03582.00001.94691.8000
1.50991.20001.01341.0000
1.1866
plot(x,y,xi,yi)