实验一函数插值方法报告.docx
《实验一函数插值方法报告.docx》由会员分享,可在线阅读,更多相关《实验一函数插值方法报告.docx(10页珍藏版)》请在冰豆网上搜索。
实验一函数插值方法报告
实验一函数插值方法报告
一、问题提出
对于给定的一元函数的n+1个节点值。
试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。
数据如下:
(1)
0.4
0.55
0.65
0.80
0.95
1.05
0.41075
0.57815
0.69675
0.90
1.00
1.25382
求五次Lagrange多项式,和分段三次插值多项式,计算,
的值。
(提示:
结果为,)
(2)
1
2
3
4
5
6
7
0.368
0.135
0.050
0.018
0.007
0.002
0.001
试构造Lagrange多项式,计算的,值。
(提示:
结果为,)
二、要求
1、利用Lagrange插值公式
编写出插值多项式程序;
2、给出插值多项式或分段三次插值多项式的表达式;
3、根据节点选取原则,对问题
(2)用三点插值或二点插值,其结果如何;
4、对此插值问题用Newton插值多项式其结果如何。
Newton插值多项式如下:
其中:
三、目的和意义
1、学会常用的插值方法,求函数的近似表达式,以解决其它实际问题;
2、明确插值多项式和分段插值多项式各自的优缺点;
3、熟悉插值方法的程序编制;
4、如果绘出插值函数的曲线,观察其光滑性。
四、实验学时:
2学时
五、实验步骤:
1.进入C或matlab开发环境;
2.根据实验内容和要求编写程序;
3.调试程序;
4.运行程序;
5.撰写报告,讨论分析实验结果.
解:
一、编写插值函数结构程序
Lagrange插值多项式M文件:
lagrange1.m
function[A1,LN,L1,B1]=lagrange1(X,Y)
m=length(X);LN=ones(m,m);
fork=1:
m
x1=1;
fori=1:
m
ifk~=i
x1=conv(x1,poly(X(i)))/(X(k)-X(i));
end
end
L1(k,:
)=x1;B1(k,:
)=poly2sym(x1)
end
A1=Y*L1;LN=Y*B1
分段三次艾尔米特插值多项式的M文件:
Hermite3.m
function[f,ff]=Hermite3(x,y,y1)
symst;
f=0.0;
if(length(x)==length(y))
if(length(y)==length(y1))
n=length(x);
else
disp('y和y的导数的维数不相等');
return;
end
else
disp('x和y的维数不相等!
');
return;
end
fori=1:
n
h=1.0;
a=0.0;
forj=1:
n
if(j~=i)
h=h*(t-x(j))^2/((x(i)-x(j))^2);
a=a+1/(x(i)-x(j));
end
end
f=f+h*((x(i)-t)*(2*a*y(i)-y1(i))+y(i));
end
ff=subs(f,'t');
(1)、求五次Lagrange多项式,和分段三次插值多项式。
在主显示区,输入五次Lagrange多项式程序:
>>X=[0.40.550.650.800.951.05];
>>Y=[0.410750.578150.696750.901.001.25382];
>>[A1,LN,L1,B1]=lagrange1(X,Y)
>>plot(X,A1);
>>F=poly2sym(A1)
运行后,输出五次Lagrange多项式的结果:
A1=
121.6264-422.7503572.5667-377.2549121.9718-15.0845
F=
拉格朗日插值多项式的图如下:
在主显示区,输入分段三次艾尔米特插值多项式的程序:
>>x=[0.40.550.650.800.951.05];
>>y=[0.410750.578150.696750.901.001.25382];
>>y1=[2.34400.90321.43290.99030.91705.1439];
>>[f,ff]=Hermite3(x,y,y1);
>>ff
运行后,分段三次艾尔米特插值多项式的输出结果:
ff=
分段三次艾尔米特插值多项式的图如下:
(2)、试构造Lagrange多项式。
结果为,
在主显示区,输入程序:
>>X=[1234567];
>>Y=[0.3680.1350.0500.0180.0070.0020.001];
>>[A1,LN,L1,B1]=lagrange1(X,Y)
>>plot(X,A1);
>>F=poly2sym(A1)
运行后,输出结果的Lagrange多项式的结果:
A1=
0.0001-0.00160.0186-0.11750.4419-0.96830.9950
F=
Lagrange多项式的图如下:
二、计算函数值
计算函数值的主程序:
lagrangezhi.m
function[y,R]=lagrangezhi(X,Y,x,M)
n=length(X);m=length(x);
fori=1:
m
z=x(i);s=0.0;
fork=1:
n
p=1.0;q1=1.0;c1=1.0;
forj=1:
n
ifj~=k
p=p*(z-X(j))/(X(k)-X(j));
end
q1=abs(q1*(z-X(j)));c1=c1*j;
end
s=p*Y(k)+s;
end
y(i)=s;
end
R=M*q1/c1;
(1)、计算、的值。
在主显示区,输入程序:
>>x=0.596;M=1;X=[0.4,0.55,0.65,0.80,0.95,1.05];
>>Y=[0.41075,0.57815,0.69675,0.90,1.00,1.25382];
>>[y,R]=lagrangezhi(X,Y,x,M)
运行结果:
y=
0.6257
R=
2.2170e-008
在主显示区,输入程序:
>>x=0.99;M=1;X=[0.4,0.55,0.65,0.80,0.95,1.05];
>>Y=[0.41075,0.57815,0.69675,0.90,1.00,1.25382];
>>[y,R]=lagrangezhi(X,Y,x,M)
运行结果:
y=
1.0542
R=
5.5901e-008
(2)、计算、的值
在主显示区,输入程序:
>>x=1.8;M=1;X=[1,2,3,4,5,6,7];
>>Y=[0.368,0.135,0.050,0.018,0.007,0.002,0.001];
>>[y,R]=lagrangezhi(X,Y,x,M)
运行结果:
y=
0.1648
R=
0.0059
在主显示区,输入程序:
>>x=6.15;M=1;X=[1,2,3,4,5,6,7];
>>Y=[0.368,0.135,0.050,0.018,0.007,0.002,0.001];
>>[y,R]=lagrangezhi(X,Y,x,M)
运行结果:
y=
0.0013
R=
0.0042
三、Newton插值多项式
Newton插值多项式主程序M文件:
Newton.m
function[A,C,L,wcgs,Cw]=Newton(X,Y)
n=length(X);A=zeros(n,n);A(:
1)=Y';
s=0.0;p=1.0;q=1.0;c1=1.0;
forj=2:
n
fori=j:
n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1));
end
b=poly(X(j-1));q1=conv(q,b);c1=c1*j;q=q1;
end
C=A(n,n);b=poly(X(n));q1=conv(q1,b);
fork=(n-1):
-1:
1
C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k);
end
L(k,:
)=poly2sym(C);Q=poly2sym(q1);
symsM
wcgs=M*Q/c1;Cw=q1/c1;
在主显示区,输入的程序:
>>x=[0.40.550.650.800.951.05];
>>y=[0.410750.578150.696750.901.001.25382];
>>[A,C,L,wcgs,Cw]=Newton(x,y)
>>symsx;
>>ezplot(L,[01.1]);
运行结果如下,得到
A=
0.410800000
0.57821.11600000
0.69671.18600.2800000
0.90001.35500.67600.990000
1.00000.6667-2.2944-7.4261-15.30200
1.25382.53827.486124.451463.7551121.6264
C=
121.6264-422.7503572.5667-377.2549121.9718-15.0845
L=
wcgs=
Cw=
0.0014-0.00610.0110-0.01030.0054-0.00140.0002
牛顿插值多项式的图如下:
在主显示区,输入的程序:
>>x=[1234567];
>>y=[0.3680.1350.0500.0180.0070.0020.001];
>>[A,C,L,wcgs,Cw]=Newton(x,y)
>>symsx;
>>ezplot(L,[08]);
运行结果如下,得到:
A=
0.3680000000
0.1350-0.233000000
0.0500-0.08500.07400000
0.0180-0.03200.0265-0.0158000
0.0070-0.01100.0105-0.00530.002600
0.0020-0.00500.0030-0.00250.0007-0.00040
0.0010-0.00100.0020-0.00030.0005-0.00000.0001
C=
0.0001-0.00160.0186-0.11750.4419-0.96830.9950
L=
wcgs=
(M*(x^7-28*x^6+322*x