插值法第二次程序题.docx
- 文档编号:13765312
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:21
- 大小:72.56KB
插值法第二次程序题.docx
《插值法第二次程序题.docx》由会员分享,可在线阅读,更多相关《插值法第二次程序题.docx(21页珍藏版)》请在冰点文库上搜索。
插值法第二次程序题
插值法
A
题目1:
对Runge函数R(x)-2在区间[-1,1]作下列插值逼近,并和
125x
R(x)的图像进行比较,并对结果进行分析。
(1)用等距节点Xi
-1
ih,h
0.1,0i
20,绘出它的20次Newton插值
多项式的图像。
⑵用节点Xicos(
插值多项式的图像。
2i
42
1),(i
0,1,2,
0),绘出它的20次Lagrange
⑶用等距节点Xi的图像。
-1
ih,h
0.
1,0i
20,绘出它的分段线性插值函数
⑷用等距节点Xi
函数的图像。
-1
ih,h
0.
1,0i
20,绘出它的三次自然样条插值
程序及分析:
(1)用等距节点Xi
-1
ih,h
0.
1,0i
20,绘出它的20次Newton插值
多项式的图像。
Matlab程序如下:
%计算均差
x=[-1:
0.1:
1];
n=length(x);
symsz
fori=1:
n
y(i)=1/(1+25*x(i)*x(i));
end
N=zeros(n,n);
N(:
1)=y';
forj=2:
n
fork=j:
nN(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1));end
end
fort=1:
n
c(t)=N(t,t)
end
%构造插值多项式
f=N(1,1);
fork=2:
n
a=1;
forr=1:
(k-1)
a=a*(z_x(r));
end
f=f+N(k,k)*a;
end
%(乍图
a=[-1:
0.001:
1];
n=length(a);
fori=1:
n
b(i)=1/(1+25*a(i)*a(i));
end
fx=subs(f,z,a);
subplot(2,1,1);
plot(a,b,'k',a,fx,'r');
c=[-0.6:
0.001:
0.6];
n=length(c);
fori=1:
n
d(i)=1/(1+25*c(i)*c(i));
end
fx=subs(f,z,c);
subplot(2,1,2);
plot(c,d,'k',c,fx,'r');
结果与分析:
由下图可以看出,在区间卜0.6,0.6]上,插值多项式可以很好的逼近被插值
函数。
而在边界附近,插值多项式与被插值函数的差别很大。
即出现了Rungd!
象。
主要原因是被插值函数的任意阶导数不能达到一致有界。
其插值余项
ni(x)不趋近零。
插值多项式不能收敛到被插值函数。
(n1)!
f(n)Rn(X)()
1U
2i1
(2)用节点Xicos(42),(i0,,2,,20),绘出它的20次Lagrange
插值多项式的图像。
Matlab程序如下:
clear;
%插值点
fori=1:
21
x(i)=cos((2*(i-1)+1)*pi/42);
end
n=length(x);
fori=1:
n
y(i)=1/(1+25*x(i)*x(i));
end
%构造插值基函数
symsz;
temp=1;
fori=1:
n
lx=1;
forj=1:
n
ifi~=j
temp=(z-x(j))/(x(i)-x(j));
Ix=lx*temp;
end
end
l(i)=lx;
end
%插值多项式
l=l';
L=y*l;
%(乍图
a=[-1:
0.01:
1];
n=length(a);
fori=1:
n
b(i)=1/(1+25*a(i)*a(i));
end
fx=subs(L,z,a);
subplot(2,1,1);
plot(a,b,'k',a,fx,'xr');
结果与分析:
如下图所示,使用Chebyshev多项式零点构造的Lagrange插值多项式比较
接近原函数,没有出现Runge现象
(3)用等距节点xi-1ih,h0.1,0i20,绘出它的分段线性插值函数
的图像。
Matlab程序如下:
clc;clear;
x=[-1:
0.1:
1];n=length(x);
symsz
fori=1:
n
y(i)=1/(1+25*x(i)*x(i));
end
%构造分段线性插值多项式
fori=1:
n-1
l(i)=(z-x(i+1))/(x(i)-x(i+1))*y(i)+(z-x(i))/(x(i+1)-x(i))*y(i+1)
%l(i)=y(i)+(y(i+1)-y(i))/(x(i+1)-x(i))*(z-x(i))
end
%作图
fori=1:
n-1
a=[x(i):
0.01:
x(i+1)];
f=subs(l(i),z,a)
plot(a,f,'k')
holdon
end
结果与分析:
如下图所示,分段线性插值多项式比较接近原函数,没有出现Runge现象
利用线性插值多项式的误差估计:
R(x)善maxf⑺
⑷用等距节点Xi-1ih,h0.1,0i20,绘出它的三次自然样条插值
函数的图像。
Matlab程序如下:
clc;clear;
x=[-1:
0.1:
1];
n=length(x);
symsz;
fori=1:
n
y(i)=1/(1+25*x(i)*x(i));
end
fori=1:
n-1
h(i)=x(i+1)-x(i);
end
fori=1:
n-2
u(i)=h(i)/(h(i+1)+h(i));
r(i)=1-u(i);
end
G=zeros(n,n);
fori=1:
n
G(i,i)=2;
end
fori=2:
n-1
G(i,i-1)=u(i-1);
G(i,i+1)=r(i-1);
end
G(n,n-1)=1;
G(1,2)=1;
d=zeros(1,n);
fori=2:
n-1
d(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(h(i)+h(i-1));
end
symsuv;u=diff(1/(1+25*v*v),v);a=subs(u,v,x
(1));b=subs(u,v,x(n));d
(1)=((y
(2)-y
(1))/h
(1)-a)/h
(1)*6;d(n)=(b-(y(n)-y(n-1))/h(n-1))/h(n-1)*6;d=d';
M=inv(G)*d;
fori=1:
n-1
s(i)=M(i)*(x(i+1)-z)A3/0.6+M(i+1)*(z-x(i)F3/0.6+(y(i)-M(i)*0.01/6)*(
x(i+1)-z)/0.1+(y(i+1)-M(i+1)*0.01/6)*(z-x(i))/0.1;
end
fori=1:
n-1
a=[x(i):
0.01:
x(i+1)];
f=subs(s(i),z,a);
plot(a,f,'xr')
holdon
end
结果与分析:
得到的函数十分接近被插值
三次样条插值函数得到的图像如下:
可以看出,三次样条插值函数的曲线及其光滑。
函数
题目2:
对函数:
1
[simrx
-1 <0, \ 0 1/2 在区间[-1,1]作下列插值逼近,并和被插值函数的图像进行比较,并对结果进行分析。 ⑴用等距节点Xi -1 ih,h 0.1,0i 20,绘出它的20次Newton插值 多项式的图像。 ⑵用节点Xicos( 2i 42 -),(i 0,1,2, 0),绘出它的20次Lagrange 插值多项式的图像。 ⑶用等距节点Xi -1 ih,h 0. 1,0i 20,绘出它的分段线性插值函数 的图像。 ⑷用等距节点Xi -1 ih,h 0. 1,0i 20,绘出它的三次自然样条插值 函数的图像。 程序及分析: ⑴用等距节点Xi-1ih,h0.1,0i20,绘出它的20次Newton插值多项式的图像。 Matlab程序如下: clc;clear; %计算均差 x=[-1: 0.1: 1]; n=length(x); symsz; y=zeros(1,n) fori=1: 10 y(i)=sin(pi*x(i)); end fori=11: 15 y(i)=cos(pi*x(i)); end fori=15: n y(i)=0; end N=zeros(n,n); N(: 1)=y'; forj=2: n fork=j: n N(k,j)=(N(k,j-1)-N(k-1,j-1))/(x(k)-x(k-j+1)); end end fort=1: n c(t)=N(t,t); end %构造插值多项式 f=N(1,1); fork=2: n a=1; forr=1: (k-1) a=a*(z-x(r)); end f=f+N(k,k)*a; end %作图v=linspace(-1,0,50);u=sin(pi*v); plot(v,u,'k')holdon v=linspace(0,0.5,25);u=cos(pj*v); plot(v,u,'k')holdon v=linspace(0.5,1,10000); u=0; plot(v,u,'k')holdona=[-1: 0.001: 1];fx=subs(f,z,a); plot(a,fx,'r'); 结果与分析: 等距节点20次Newton插值得到的函数图像如下: 可以看出,在整个区间上,插值多项式精度都不是很高。 出现了Runge现象。 2i1 ⑵用节点Xicos(),(i0,1,2,,0),绘出它的20次Lagrange 42 插值多项式的图像。 Matlab程序如下: clc;clear; %求插值节点 fori=1: 21 x(i)=cos((2*(i-1)+1)*pi/42); end n=length(x); y=zeros(1,n); fori=1: n ifx(i)<0 y(i)=sin(pi*x(i)); elseifx(i)>0.5 y(i)=0; else y(i)=cos(pi*x(i)); end end %插值基函数 symsz; temp=1; fori=1: n lx=1; forj=1: n ifi~=jtemp=(z-x(j))/(x(i)-x(j));lx=lx*temp; end end l(i)=lx; end %插值多项式 l=l'; L=y*l; %(乍图 a=[-1: 0.01: 1];fx=subs(L,z,a);plot(a,fx,'xr'); 结果与分析: 如下图所示,使用Chebyshev多项式零点构造的Lagrange插值多项式比 Newtonf插值多项式接近原函数,没有出现Runge现象。 (3)用等距节点xi-1ih,h0.1,0i20,绘出它的分段线性插值函数 的图像。 Matlab程序如下: clc;clear; x=[-1: 0.1: 1]; n=length(x); symsz; fori=1: 10 y(i)=sin(pi*x(i)); end fori=11: 15 y(i)=cos(pi*x(i)); end fori=15: n y(i)=0; end %构造插值多项式 fori=1: n-1l(i)=(z-x(i+1))/(x(i)-x(i+1))*y(i)+(z-x(i))/(x(i+1)-x(i))*y(i+1); %l(i)=y(i)+(y(i+1)-y(i))/(x(i+1)-x(i))*(z-x(i)); end %作图 fori=1: n-1 a=[x(i): 0.01: x(i+1)]; f=subs(l(i),z,a); plot(a,f,'xr') holdon end 结果与分析: 如下图所示,分段线性插值多项式比较接近原函数,没有出现只口门9觇象< 但是在间断点处及导数不存在的点误差较大。 主要是因为这些地方构造的线性函数斜率较大,不能较好的趋近原函数。 ⑷用等距节点Xi-1ih,h0.1,0i20,绘出它的三次自然样条插值函数的图像。 Matlab程序如下: clc;clear; x=[-1: 0.1: 1]; n=length(x); symsz fori=1: 10 y(i)=sin(pi*x(i)); end fori=11: 15 y(i)=cos(pi*x(i)); end fori=15: n y(i)=0; endfori=1: n-1h(i)=x(i+1)-x(i);end fori=1: n-2u(i)=h(i)/(h(i+1)+h(i));r(i)=1-u(i); end G=zeros(n,n); fori=1: n G(i,i)=2; end fori=2: n-1 G(i,i-1)=u(i-1); G(i,i+1)=r(i-1); end G(n,n-1)=1; G(1,2)=1; d=zeros(1,n); fori=2: n-1 d(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(h(i)+h(i-1)); end symsuv;u=diff(sin(pi*v),v);a=subs(u,v,x (1));b=0; d (1)=((y (2)-y (1))/h (1)-a)/h (1)*6;d(n)=(b-(y(n)-y(n-1))/h(n-1))/h(n-1)*6;d=d'; M=inv(G)*d; fori=1: n-1 s(i)=M(i)*(x(i+1)-z)A3/0.6+M(i+1)*(z-x(i)F3/0.6+(y(i)-M(i)*0.01/6)*( x(i+1)-z)/0.1+(y(i+1)-M(i+1)*0.01/6)*(z-x(i))/0.1; end fori=1: n-1 a=[x(i): 0.01: x(i+1)]; f=subs(s(i),z,a); plot(a,f,'xr') holdon end 结果与分析: 三次样条插值函数得到的图像如下: 可以看出,三次样条插值函数在间断点处也有较大误差
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 插值法 第二次 程序