数值分析

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

数值分析第一次作业
信计2 20121314044 王峥虹
一、实验内容:
1、已知函数在下列各点的值为:
38
.064.081.092.098.0|0
.18.06.04.02.0|y x -------------------
试用4次牛顿插值多项式)(4x P 及三次样条函数)(x S (自然边界条件)对数据进行插值,用图给出(){}10,11,1,008.02.0,=+=i i x y x i i i ,,,)(4x P 及)(x S 。

分析:
先求4次插值多项式:
根据差分形式的牛顿差值公式:
))...(](,...,,[...))(](,,[)](,[)()(1010102100100---++--+-+=n n n x x x x x x x f x x x x x x x f x x x x f x f x P
x=[0.2,0.4,0.6,0.8,1.0];
y=[0.98,0.92,0.81,0.64,0.38];
n=length(y);
z=zeros(n,n);
for i=1:n
z(i,1)=y(i);
end
for k=2:n
for l=k:n
z(l,k)=(z(l,k-1)-z(l-1,k-1))/(x(l)-x(l-k+1));
end
end
z
结果:
4次牛顿插值多项式为:
)6.0)(4.0)(2.0(2083.0)4.0)(2.0(625.0)2.0(3.098.04---------=x x x x x x P )8.0)(6.0)(4.0)(2.0(5208.0-----x x x x
再求三次样条插值函数:
由上面及已知的:
⎥⎥⎥⎥⎥⎥⎦⎤⎢
⎢⎢⎢⎢⎢⎣⎡---=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡075.65.475.30200005.025.00005.025.00005.025.00000243210M M M M M 程序如下:
A=[2,0,0,0,0;0.5,2,0.5,0,0;0,0.5,2,0.5,0;0,0,0.5,2,0.5;0,0,0,0,2];
B=[0,-3.75,-4.5,-6.75,0]';
M=inv(A)*B
结果:
则由表达式:
j j j j j j j j j j j j j j j j h x x h M y h x x h M y h x x M h x x M x S -⎪⎪⎭⎫ ⎝⎛-+-⎪⎪⎭⎫ ⎝⎛-+-+-=+++++666)(6)()(2111231311,...,1,0-=n j
得,三次样条插值多项式为:
⎪⎪⎩
⎪⎪⎨⎧∈-+-+----∈-+-+----∈-+-+----∈-+-+---=]0.1,8.0[),8.0(9.1)0.1(3036.3)8.0(0)0.1(5893.2]8.0,6.0[),6.0(3036.3)8.0(0857.4)6.0(5893.2)8.0(8929.0]6.0,4.0[),4.0(0857.4)6.0(6536.4)4.0(8929.0)6.0(3393.1]4.0,2.0[),2.0(6536.4)4.0(9.4)2.0(3393.1)4.0(0)(3333333x x x x x x x x x x x x x x x x x x x x x S 绘制4次插值多项式及三次样条插值多项式的图像:
代码:
x=[0.2,0.4,0.6,0.8,1.0];
y=[0.98,0.92,0.81,0.64,0.38];
plot(x,y)
hold on
for i=1:1:5
y(i)=0.98-0.3*(x(i)-0.2)-0.625*(x(i)-0.2)*(x(i)-0.4)-0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0.5 2083*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)*(x(i)-0.8)
end
k=[0 1 10 11];
x0=0.2+0.08*k;
y0=zeros(4);
for i=1:1:4
y0(i)=0.98-0.3*(x(i)-0.2)-0.625*(x(i)-0.2)*(x(i)-0.4)-0.20833*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)-0. 52083*(x(i)-0.2)*(x(i)-0.4)*(x(i)-0.6)*(x(i)-0.8)
end
plot(x0,y0,'o',x0,y0)
hold on
y1=spline(x,y,x0)
plot(x0,y1,'o')
hold on
s=csape(x,y,'variational')
fnplt(x,'r')
hold on
gtext('原图像')
gtext('三次样条自然边界')
gtext('4次牛顿插值')
一、实验内容:
2、在区间[]11,-上分别取20,10=n 用两组等距节点对龙格函数2
2511)(x x f +=作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及)(x f 的图形。

二、程序:
当n=10时,
多项式插值:
求差分表
x=linspace(-1,1,10);
f=1./(1+25.*x.^2);
n=length(f);
temp=zeros(n,n);
for k=1:n
temp(k,1)=f(k);
for k=2:n
for l=k:n
temp(l,k)=(temp(l,k-1)-temp(l-1,k-1))/(x(l)-x(l-k+1));
end
End
temp
插值多项式及函数f(x)的图像
当n=20时
多项式插值
求差分表
x=linspace(-1,1,20);
f=1./(1+25.*x.^2);
n=length(f);
temp=zeros(n,n);
for k=1:n
temp(k,1)=f(k);
end
for k=2:n
for l=k:n
temp(l,k)=(temp(l,k-1)-temp(l-1,k-1))/(x(l)-x(l-k+1));
end
end
temp
结果
插值多项式及函数f(x)的图像
用三次样条插值时:
x=linspace(-1,1,20);
f=1./(1+25.*x.^2);
N=length(x)-1;
H=diff(x);
D=diff(y)./H;
A=H(2:N-1);
B=2*(H(1:N-1)+H(2:N)); C=H(2:N);
U=6*diff(D);
B(1)=B(1)-H(1)/2;
U(1)=U(1)-3*(D(1));
B(N-1)=B(N-1)-H(N)/2;
U(N-1)=U(N-1)-3*(-D(N)); for k=2:N-1
temp=A(k-1)/B(k-1);
B(k)=B(k)-temp*C(k-1);
U(k)=U(k)-temp*U(k-1);
end
M(N)=U(N-1)/B(N-1);
for k=N-2:-1:1
M(k+1)=(U(k)-C(k)*M(k+2))/B(k);
end
M(1)=3*(D(1)-dx0)/H(1)-M(2)/2;
M(N+1)=3*(dxn-D(N))/H(N)-M(N)/2;
for k=0:N-1
S(k+1,1)=(M(k+2)-M(k+1))/(6*H(k+1));
S(k+1,2)=M(k+1)/2;
S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2))/6;
S(k+1,4)=Y(k+1);
end
当n=10时
x=linspace(-1,1,10);
y=1./(1+25.*x.^2);
dx0=0.0739644970414201;
dxn=-0.0739644970414201;
S=csfit(x,y,dx0,dxn);
x1=-1:0.01:-0.05;
y1=polyval(s(1,:),x1-x(1));
x2=-0.5:0.01:0;
y2=polyval(s(2,:),x2-x(2));
x3=0:0.01:0.5;
y3=polyval(s(3,:),x3-x(3));
x4=0.5:0.01:1;
y4=polyval(s(4,:),x4-x(4));
plot(x1,y1,x2,y2,x3,y3,x4,y4,x,y,'.') 结果
当n=20时
x=linspace(-1,1,20);
y=1./(1+25.*x.^2);
dx0=0.0739644970414201;
dxn=-0.0739644970414201;
S=csfit(x,y,dx0,dxn);
x1=-1:0.01:-0.05;
y1=polyval(s(1,:),x1-x(1));
x2=-0.5:0.01:0;
y2=polyval(s(2,:),x2-x(2));
x3=0:0.01:0.5;
y3=polyval(s(3,:),x3-x(3));
x4=0.5:0.01:1;
y4=polyval(s(4,:),x4-x(4));
plot(x1,y1,x2,y2,x3,y3,x4,y4,x,y,'.')
结果
1、对于给函数22511)(x
x f +=在区间]1,1[-上取)10,...1,0(2.01=+-=i i x i ,试求3次曲线拟合,试画出拟合曲线并打印出方程,与第二章计算实习题2的结果比较。

程序:
x=-1:0.2:1;
f=1./(1+25*x.^2);
y=polyfit(x,f,3)
y1=polyval(y,x);
plot(x,f,'b',x,y1,'r')
拟合曲线及原函数曲线如下:
其最小二乘曲线拟合具有更好的精度。

相关文档
最新文档