插值法与数据拟合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6、下列数据点的插值

01491625364964

012345678 (1)可以得到平方根函数的近似,在区间[0,64]上作图。

(2)用这9个点作8次多项式插值。

四、实验结果

1、用MATLAB编写独立的拉格朗日插值多项式函数

Lagrange 插值多项式源代码

function yi=Lagrange(x, y, xi)

% Lagrange 插值多项式,其中

% x --- 向量,全部的插值节点

% y --- 向量,插值节点处的函数值

% xi --- 标量,自变量x

% yi --- xi 处的函数估计值

n=length(x); m=length(y);

if n~=m

error('The lengths of X and Y must be equal');

return;

end

p=zeros(1,n);

% 对向量p赋初值0

for k=1:n

t=ones(1,n);

for j=1:n

if j~=k

if abs(x(k)-x(j))

error('the DATA is error!');

return;

end

t(j)=(xi-x(j))/(x(k)-x(j));

end

end

p(k)=prod(t);

end

yi=sum(y.*p);

2、用MATLAB编写独立的牛顿插值多项式函数

function yi=New_Int(x, y, xi)

% Newton 基本插值公式,其中

% x --- 向量,全部的插值节点,按行输入

% y --- 向量,插值节点处的函数值,按行输入

% xi --- 标量,自变量x

% yi --- xi 处的函数估计值

n=length(x); m=length(y);

if n~=m

error('The lengths of X and Y must be equal');

return;

end

% 计算均差表Y

Y=zeros(n); Y(:,1)=y';

% Y(:,1)表示矩阵中第一列的元素

for k=1:n-1

for i=1:n-k

if abs(x(i+k)-x(i))

error('the DATA is error!');

return;

end

Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i));

end

end

% 计算Newton插值公式 N(xi)

yi=0;

for i=1:n

z=1;

for k=1:i-1

z=z*(xi-x(k));

end

yi=yi+Y(1,i)*z;

end

3、利用编写好的函数计算本章P66例1、P77例1的结果并比较。

P66例1

x=[144 169 225];

y=[12 13 15];

yi=Lagrange(x,y,175)

yi = 13.230158730158733

P77例1

x=[0.40,0.55,0.65,0.80];

>> y=[0.41075,0.57815,0.69675,0.88811];

>> yi=New_int(x,y,0.596)

yi =0.631914405504000

4、已知函数在下列各点的值为:

0.20.40.60.8 1.0

0.980.920.810.640.38

试用4次牛顿插值多项式对数据进行插值,根据{},画出图形。解: X=[0.2:0.2:1.0]; y=[0.98,0.92,0.81,0.64,0.38];

xx=[0.2:0.08:1.0];

m=length(xx); z=zeros(1,m);

for i=1:m

z(i)=Lagrange(x, y, xx(i));

end

hold on

plot(x,y,'o');plot(xx,z,'r*');

hold off

得到如下图形:

图一 练习4的图形

5、在区间[-1,1]上分别取用两组等距节点对龙格函数作多项式插值,对不同值,分别画出插值函数及的图形。

解:a=-1;b=1;n=100;h=(b-a)/n;

>> x=a:h:b;y=1./(1+25.*x.^2);

>> plot(x,y,'k')

其函数原图形分别如下所示:

图二龙格函数的图形

用龙格函数的Lagrange()插值函数画图源程序

当n =10时,有:

function Runge(10)

% Runge现象

% n --- 等距离节点

a=-1; b=1; h=(b-a)/n;

x=[a:h:b]; y=1./(1+25.*x.^2);

xx=[a:0.01:b]; yy=1./(1+25.*xx.^2); m=length(xx); z=zeros(1,m);

for i=1:m

z(i)=Lagrange(x, y, xx(i));

end

hold on

plot(x,y,'o');plot(xx,z,'r-');

hold off

当n =20时,有:

function Runge(10)

% Runge现象

% n --- 等距离节点

a=-1; b=1; h=(b-a)/n;

x=[a:h:b]; y=1./(1+25.*x.^2);

xx=[a:0.01:b]; yy=1./(1+25.*xx.^2); m=length(xx); z=zeros(1,m);

for i=1:m

z(i)=Lagrange(x, y, xx(i));

end

hold on

plot(x,y,'o');plot(xx,z,'r-');

hold off

其图形分别如下所示:

相关文档
最新文档