文档详情

matlab计算拉格朗日牛顿及分段线性插值的程序.doc

发布:2025-05-09约5.06千字共5页下载文档
文本预览下载声明

《工程常用算法》综合实践作业二

完成日期:2013年4月14日

班级

学号

姓名

主要工作说明

自评成绩

0718

2010071826

崔洪亮

算式与程序的编写

18

0718

2010071815

侯闰上

流程图的编辑,程序的审查

0718

2010071809

赵化川

报告的整理汇总

一.作业题目:三次样条插值与分段插值

飞机下轮廓线数据如下:

x

0

3

5

7

9

11

12

13

14

15

y

0

1.2

1.7

2.0

2.1

2.0

1.8

1.2

1.0

1.6

飞机下轮廓线形状大致如下列图所示:

机翼

下轮廓线

要求分别用拉格朗日插值法、Newton插值法、分段线性插值法和三次样条插值法计算x每改变0.5时y的值,即x取0.5,1,1.5,…,14.5时对应的y值。比拟采用不同方法的计算工作量、计算结果和优缺点。

二.程序流程图及图形

1.拉格朗日插值法

2.牛顿插值法

3.分段线性插值法

matlab程序及简要的注释〔m文件〕

拉格朗日插值法2.牛顿插值法

functionf=lang(x,y,x0)%x为数据点的x坐标向量

functionf=lang(x,y,x0)

%x为数据点的x坐标向量

%y为数据点的y坐标向量

functionf=newdun(x,y,xi)

%x为数据点的x坐标向量

%y为数据点的y坐标向量

%x0为插值点的x坐标%f为求得的拉格朗日插值多项式if

%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:n

l=l.*(x0-x(j))/(x(i)-x(j));

%计算拉格朗日基函数

end;

f=f+l*y(i);

%计算拉格朗日插值函数

end

Return

%xi为插值点的x坐标

%f为求得的均差牛顿插值多项式

if(length(x)==length(y))

n=length(x);

else

disp(ThelengthsofXangY

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

end

f=0;

fori=1:n

z=1;

forj=1:i-1

z=z.*(xi-x(j));%计算多项式函数

end

f=f+Y(1,i)*z;%计算牛顿插值函数

end

fora=1:n-1

显示全部
相似文档