✅ 操作成功!

线性插值法

发布时间:2023-06-04 作者:admin 来源:文学

线性插值法

线性插值法

-小姨子勾引姐夫

2023年2月16日发(作者:客车行业)

2、掌握用MATAB作线性最小二乘的方法。

宜1廿轴曲

Allrdei|rileT刃氓Zl|出»JR[1311a]

/帥1»|1邮M-lllt1KB加13*2

»vpirsg

»=“叶时啊p应齐y

v=

禺1*.1>

13*2505

■/

»g(hUh5i説U;

y=L15HIE]

■口阳»plot(u«v)

»

计算机上机实验报告

专业和班级

姓名

成绩

学号

课程名称数值计算方法实验名称插值法

实验目的

1掌握用MATLA计算拉格朗日、分段线性、三次样条三种插值

的方法,改变节点的数目,对三种插值结果进行初步分析。

3、通过实例学习如何用插值方法与拟合方法解决实际问题,注意

二者的联系和区别。

实验的主要内容

1编制拉格朗日、牛顿插值程序,并运行一个简单的实例。

(1)拉格朗日插值程序:

functionv=polyinterp(x,y,u)

n=length(x);

v=zeros(size(u));

fork=1:n

w=ones(size(u));

forj=[1:k-1k+1:n]

w=(u-x(j))./(x(k)-x(j)).*w;

end

v=v+w*y(k);

end

实例:当x=144,169,225时,y=12,13,15,用拉格朗日差值法求根

号175。如下:

''Fl^.kiEO-1

(2)牛顿插值程序:

functiony=newinterp(X,Y,x)%牛顿插值函数

m=length(X);

fork=2:m

forj=1:k-1

Y(k)=(Y(k)-Y(j))/(X(k)-X(j));

end

end

y=Y(m);

forj=m-1:-1:1

y=y.*(x-X(j))+Y(j);

2、给定函数f(x)x,已知:

f(2.0).1.414214f(2.1).1.449138

f(2.2).1.483240f(2.3).1.516575f(2.4).1.549193

用牛顿插值法求4次Newton插值多项式在2.15处的值,以此作为函

■CommandWindow

»1=[2,02.12.22.32.»

Y=[L414214L449138

»对IS;

»y=ne^interp(XjYj

1.483240LE1S5F51.549193]:

y二

1.4S«3

»z=[1.9;«:2.6].

y=nevrirrtexp陆了」莖)i»

pltrt%y)

3.选择函数y=exp(-x2)(-2

用拉格朗日、分段线性、三次样条三种插值方法,计算m

个插值点的函数值(m要适中,如50~100)。通过数值和图形输出,将三种

插值结果与精确值进行比较。适当增加n,在作比较,由此

作初步分析。

程序:

%不同插值方法是否会出现震荡runge现象

%文件

functionrunge10

[X,Y]=fenduan(10,1);%将[-1,]区间分成10等份,返回对应的(x,

y)五组数据

x=linspace(-2,2,100);%将[-1,1]划分成100等份,以便作出样条插

值多项式的图形。

fori=1:length(x)%绘制原函数曲线图

y(i)=exp(-x(i)A2);

end

holdon

plot(x,y);

text(0,1,'leftarrow原函数')%对曲线添加标注

y=newinterp(X,Y,x);%多项式插值中的牛顿插值法holdon

Plot(x,y);

title('插值函数中的runge现象,区间等分为10段');濟加标题

xlabel('X轴');

ylabel('Y轴');

text(-0.9,1.5,'leftarrow牛顿插值')%对曲线添加标注

y=interp1(X,Y,x);

plot(x,y);

text(-0.4,0.8521,'leftarrow分段线性插值')

cs=spline(X,[OY0]);%调用spline函数插值,y比x多两个元素。

plot(X,Y,'o',x,ppval(cs,x),'-');%做样条多项式的图形

text(-1.2,0.2369,'leftarrow样条插值')

function[X,Y]=fenduan(n,b)%将区间等分成n份,并求对应点上的函

数值

fori=1:n+1

X(i)=-2+(4*(i-1))/n;

Y(i)=exp(-X(i)A2);

end

functiony=newinterp(X,Y,x)%牛顿插值函数

m=length(X);

fork=2:m

forj=1:k-1

Y(k)=(Y(k)-Y(j))/(X(k)-X(j));

end

end

y=Y(m);

forj=m-1:-1:1

y=y.*(x-X(j))+Y(j);

end

将三种插值结果相比较,显然分段线性插值法在节点处不光滑,拉格朗日

值出现较大的振荡,样条差值的结果是最好的,改变n

的值,运行程序,得到的图形如右图所示,比较这两个图可发现,节点增

加后,三种插值方法结果的准确度均有所提高,因此可近似地认为:增加

节点的个数可以提高插值结果的准确程度。

👁️ 阅读量:0