数值分析实验报告Word下载.docx
《数值分析实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告Word下载.docx(44页珍藏版)》请在冰豆网上搜索。
i=i+1;
y=[t,i+1,m];
functiony=NewtonIterative(x,e)
en=2*e;
m
(1)=x;
whileabs(en)>
=e
s=f(x);
t=x-s
(1)/s
(2);
en=t-x;
x=t;
y=[x,i+1,m];
牛顿割线法:
functiony=Secant(x1,x2,e)
i=3;
m
(1)=x1,m
(2)=x2;
whileabs(x2-x1)>
s1=f(x1);
s2=f(x2);
t=x2-(x2-x1)*s2
(1)/(s2
(1)-s1
(1));
x1=x2;
x2=t;
y=[x2,i+1,m];
Functionp=StephensonIterative(x,e)
m
(2)=x;
y=fai(x);
z=fai(y);
t=x-(y-x)^2/(z-2*y+x);
p=[x,i+1,m];
3.因为
经常被使用,故可以写一个
函数。
functiony=fai(x)
y=x-s
(1)/s
(2);
4.可以绘制不同的图形来比较不同迭代法的收敛性和不同初值下的收敛性。
clearall;
%相同初始值,不同迭代法下的收敛
x1=dichotomie(0,3,1e-10);
x2=NewtonIterative(0,1e-10);
x3=Secant(0,2,1e-10);
x4=StephensonIterative(0,1e-10);
[x1
(2),x2
(2),x3
(2),x4
(2)]
figure,
subplot(2,2,1),plot(x1(3:
x1
(2))),title('
二分法'
);
subplot(2,2,2),plot(x2(3:
x2
(2))),title('
牛顿迭代法'
subplot(2,2,3),plot(x3(3:
x3
(2))),title('
牛顿割线法'
subplot(2,2,4),plot(x4(3:
x4
(2))),title('
史蒂芬森迭代法'
subplot(2,2,1),plot((x1(4:
x1
(2)-1)-x1
(1))./(x1(3:
x1
(2)-2)-x1
(1))),title('
subplot(2,2,2),plot((x2(4:
x2
(2)-1)-x2
(1))./(x2(3:
x2
(2)-2)-x2
(1))),title('
subplot(2,2,3),plot((x3(4:
x3
(2)-1)-x3
(1))./(x3(3:
x3
(2)-2)-x3
(1))),title('
subplot(2,2,4),plot((x4(4:
x4
(2)-1)-x4
(1))./(x4(3:
x4
(2)-2)-x4
(1))),title('
%不同初始值,相同迭代法下的收敛性
x5=dichotomie(-1,1,1e-10);
x6=dichotomie(-2,3,1e-10);
x7=dichotomie(0,4,1e-10);
x8=dichotomie(-4,4,1e-10);
x9=NewtonIterative(-2,1e-10);
x10=NewtonIterative(-4,1e-10);
x11=NewtonIterative(4,1e-10);
x12=NewtonIterative(6,1e-10);
subplot(1,2,1),
plot(1:
x1
(2)-2,x1(3:
x1
(2)),1:
x5
(2)-2,x5(3:
x5
(2)),1:
x6
(2)-2,x6(3:
x6
(2)),1:
x7
(2)-2,x7(3:
x7
(2)),1:
x8
(2)-2,x8(3:
x8
(2))),title('
subplot(1,2,2),
x2
(2)-2,x2(3:
x2
(2)),1:
x9
(2)-2,x9(3:
x9
(2)),1:
x10
(2)-2,x10(3:
x10
(2)),1:
x11
(2)-2,x11(3:
x11
(2)),1:
x12
(2)-2,x12(3:
x12
(2))),title('
x13=Secant(-1,1,1e-10);
x14=Secant(-4,5,1e-10);
x15=Secant(0,7,1e-10);
x16=Secant(-8,2,1e-10);
x17=StephensonIterative(-1,1e-10);
x18=StephensonIterative(-4,1e-10);
x19=StephensonIterative(4,1e-10);
x20=StephensonIterative(6,1e-10);
x3
(2)-2,x3(3:
x3
(2)),1:
x13
(2)-2,x13(3:
x13
(2)),1:
x14
(2)-2,x14(3:
x14
(2)),1:
x15
(2)-2,x15(3:
x15
(2)),1:
x16
(2)-2,x16(3:
x16
(2))),title('
x4
(2)-2,x4(3:
x4
(2)),1:
x17
(2)-2,x17(3:
x17
(2)),1:
x18
(2)-2,x18(3:
x18
(2)),1:
x19
(2)-2,x19(3:
x19
(2)),1:
x20
(2)-2,x20(3:
x20
(2))),title('
实验结果:
1.各个迭代值分布
图1.1不同迭代法下的得到的迭代值
迭代值的情况如下:
二分法
牛顿迭代法
牛顿割线法
史蒂芬森迭代法
1.5000000000
0.2000000000
2.0000000000
1.3555555556
0.7500000000
0.3704918032
0.3333333333
0.9816165283
1.1250000000
0.5076442076
0.3807196801
0.9999460003
0.9375000000
0.6146189447
0.4982833419
0.9999999995
1.0312500000
0.6973869098
0.5704996333
0.9843750000
0.7615538091
0.6393806244
1.0078125000
0.8115411186
0.6942785879
0.9960937500
0.8506763857
0.7411692653
1.0019531250
0.8814482123
0.7802715997
0.9990234375
0.9057297400
0.8132927871
当二分法的初始区间选为
,误差限为
,牛顿迭代法初值选为
,牛顿割线法初始点为
,史蒂芬森迭代法初始点选为
,迭代情况如图所示。
迭代次数分别为38次,100次,140次,9次。
故而,史蒂芬森迭代法速度最快,效果最好。
2.收敛情况
图1.2不同迭代法下迭代值得收敛情况
二分法收敛效果较差,牛顿迭代法和牛顿割线法相近,史蒂芬森迭代法收敛次数高于1,效果最好
3.不同初值的收敛情况
图1.3二分法,牛顿迭代法下不同初值的收敛情况
图1.4牛顿割线法,史蒂芬森迭代法下不同初值的收敛情况
1.二分法的五个初始区间分别为
;
2.牛顿迭代法的五个初始值分别为
3.牛顿割线法的五个初始区间分别为
4.史蒂芬森迭代法的五个初始值分别为
由图可知,它们最终均达到收敛。
收敛性分析及结论:
1.二分法收敛较慢且不能求解崇根,但算法简单;
此处牛顿法具有了平方收敛;
从迭代次数上看,牛顿割线法较牛顿法的多,所以收敛性较差,是超线性收敛;
史蒂芬森迭代法收敛效果最好。
2.因为牛顿迭代法是局部的二次收敛,所以要注重初值的选取,本次实验中选择的初值均得到了收敛,效果比较好。
牛顿割线法也应注意初值的选取。
(第三章)
1.区间
作等距划分:
以
为结点对函数
进行插值逼近。
(1)分别取
用牛顿插值对
进行逼近,并在同一坐标系下做出函数的图形,进行比较。
写出插值函数对
的逼近程度与节点个数的关系,并分析原因;
(2)试用三次样条插值对
进行逼近,在同一坐标下画出图形,观察样条插值函数对
的逼近程度与节点个数的关系;
(3)整体插值有何局限性?
如何避免?
2.已知一组数据如下,求其拟合曲线.
表2.1数据表
1
2
3
4
5
6
7
8
9
10
11
14
16
18
19
106.42
108.2
109.5
110
109.93
110.49
110.59
110.6
110.76
111
111.2
(1)求以上数据形如
的拟合曲线及其平方误差;
(2)求以上数据形如
(3)通过观察
(1)
(2)的结果,写出你对数据拟合的认识.
题目除上述要求之外还有以下几点:
1.明确整体插值和分段插值的不同。
牛顿插值多项式属于整体插值,三次样条插值属于低次分段插值。
2.将结果在同一坐标下绘制出。
但是为了方便分析节点个数对于插值效果的影响,也可以单独绘制。
3.第二题中为了确定各个参数的大小,可以进行适当变换,转化为线性,运用最小二乘法,得到拟合。
牛顿插值多项式:
对于给定的插值节点
构造次数不超过
的插值多项式
使其满足插值条件
这样得到的插值多项式
称为
插值多项式。
系数
为差商,可以通过构造差商表得到。
三次样条插值:
三次样条插值函数
在每个小区间
上为三次多项式;
在全进
上存在二阶连续导数;
其次符合插值条件。
中存在内置的三次样条插值函数,命令为
第一题:
1.牛顿插值函数的构造
functionf=Newton(x0,y0)
%牛顿多项式插值函数
symsx;
SZ=size(x0,2);
a
(1)=y0
(1);
y(:
1)=y0'
;
forj=2:
SZ
nx1=1;
fori=1:
SZ-j+1;
nx2=nx1+j-1;
y(i,j)=(y(i,j-1)-y(i+1,j-1))/(x0(nx1)-x0(nx2));
nx1=nx1+1;
f=y(1,1);
ff=y(1,j);
j-1
ff=ff*(x-x0(i));
f=f+ff;
2.牛顿和三次样条插值情况及比较:
clc;
fx=1/(5+x^2);
%牛顿多项式插值
x0=-1:
0.01:
1;
y0=subs(fx,x0);
n1=[1,5,10,20,25];
n2=[5,55,60,62,67];
h1=2./n1;
h2=2./n2;
x1=-1:
h1
(1):
y1=subs(fx,x1);
f1=Newton(x1,y1);
y01=subs(f1,x0);
x2=-1:
h1
(2):
y2=subs(fx,x2);
f2=Newton(x2,y2);
y02=subs(f2,x0);
x3=-1:
h1(3):
y3=subs(fx,x3);
f3=Newton(x3,y3);
y03=subs(f3,x0);
x4=-1:
h1(4):
y4=subs(fx,x4);
f4=Newton(x4,y4);
y04=subs(f4,x0);
x5=-1:
h1(5):
y5=subs(fx,x5);
f5=Newton(x5,y5);
y05=subs(f5,x0);
plot(x0,y0,x0,y01,x0,y02,x0,y03,x0,y04,x0,y05),title('
所有结果'
x6=-1:
h2
(1):
y6=subs(fx,x6);
f6=Newton(x6,y6);
y06=subs(f6,x0);
x7=-1:
h2
(2):
y7=subs(fx,x7);
f7=Newton(x7,y7);
y07=subs(f7,x0);
x8=-1:
h2(3):
y8=subs(fx,x8);
f8=Newton(x8,y8);
y08=subs(f8,x0);
x9=-1:
h2(4):
y9=subs(fx,x9);
f9=Newton(x9,y9);
y09=subs(f9,x0);
x10=-1:
h2(5):
y10=subs(fx,x10);
f10=Newton(x10,y10);
y010=subs(f10,x0);
plot(x0,y0,x0,y06,x0,y07,x0,y08,x0,y09,x0,y010),title('
龙格现象'
%三次样条插值spline自带命令
x0=-5:
5;
subplot(2,3,1),plot(x0,y0),title('
精确图'
y11=spline(x1,y1,x0);
subplot(2,3,2),plot(x0,y11),title('
n=1'
y12=spline(x2,y2,x0);
subplot(2,3,3),plot(x0,y12),title('
n=5'
y13=spline(x3,y3,x0);
subplot(2,3,4),plot(x0,y13),title('
n=10'
y14=spline(x4,y4,x0);
subplot(2,3,5),plot(x0,y14),title('
n=20'
y15=spline(x5,y5,x0);
subplot(2,3,6),plot(x0,y15),title('
n=25'
plot(x0,y0,x0,y11,x0,y12,x0,y13,x0,y14,x0,y15),title('
第二题:
x=[23478101114161819];
y=[106.42108.2109.5110109.93110.49110.59110.6110.76111111.2];
%Agenda1
A=[(x.*x)'
x'
ones(11,1)];
A1=A'
*A;
y1=A'
*y'
c1=A1\y1
x1=2:
0.1:
19;
y1=polyval(c1,x1);
plot(x,y,'
k*'
x1,y1,'
r'
),gtext('
曲线一'
),holdon
y01=polyval(c1,x);
delta1_2=sum((y-y01).^2)
%Agenda2
xx=-1./x;
yy=log(y);
B=[ones(11,1)xx'
];
B1=B'
*B;
yy1=B'
*yy'
c2=B1\yy1;
symss;
a=exp(c2
(1));
b=c2
(2);
[ab]
f=a*exp(-b/s);
x2=x1;
y2=subs(f,x2);
plot(x2,y2,'
b'
曲线二'
y02=subs(f,x);
delta2_2=sum((y-y02).^2)
1.牛顿插值结果
图2.1不同节点数的牛顿插值多项式综合图
图2.2龙格现象
由图可知,
2.三次样条插值结果
图2.3不同节点下的三次样条插值结果
图2.4不同节点数的三次样条的综合图
由图可知,牛顿插值多项式在
较小的时候如
差值效果良好,当
变大时如
就出现了龙格现象,三次样条在各个子区间内为三次多项式,拟合效果好.
第二题
1.第一问的多项式拟合得到的拟合曲线为
平方误差为
第二问的拟合曲线为
2.拟合曲线如图所示
图2.5拟合情况
从图中可以看出曲线二大体符合黑点的分布情况,拟合效果较好。
结论:
整体插值随着节点个数的增多,多项式的次数也在升高。
高次多项式的插值会出现龙格现象,震荡剧烈,逼近效果不理想。
但是当节点很多时,低次插值的精度又不够,所以为了避免这一局限性采用分段低次插值。
其中三次样条插值有良好的收敛性和光滑性,效果较好。
数据拟合时,可以选择趋势相似的函数形式,在求解相关参量时,将函数进行适当变换,从而运用最小二乘法得到拟合结果。
(第四章)
设计区间分半求积算法、龙贝格求积算法和自适应辛普森求积算法的程序,观察
时,积分
的结果,并给出相应的评价.
1.分半求积算法即为复合梯度求积。
2.因为
越大,
在
内震荡地越严重,自适应辛普森求积算法很难适用,计算复杂度会很高。
所以选取辛普森求积算法代替。
分半求积算法:
将区间
等分为
个小区间,分点为
利用定积分性质,有
每个小区间上均用梯形求积公式,有
令
即为复合梯形公式。
龙贝格求积算法:
将步长为
的复合梯形公式进行査尔逊外推,就得到龙贝格求积公式。
自适应辛普森求积算法:
按照被奇函数在区间上的变化来安排求积结点的辛普森算法。
1.写得各个求积算法的函数。
(1)分半求积算法:
functionf=CompositeTrapezoida(n)
y=x*x*cos(n*x);
m=1:
100;
a=-1;
b=1;
fori=1:
100
h=(b-a)/m(i);
k=0:
m(i);
xk=a+k*h;
yk=subs(y,xk);
f(i)=0;
forj=1:
m(i)
f(i)=f(i)+(yk(j)+yk(j+1));
f(i)=h/2*f(i);
(2)辛普森算法
functionf=CompositeSimpson(n)
h=(b-a)/(2*m(i));
(2*m(i));
m(i)f(i)=f(i)+(yk(2*j-1)+4*yk(2*j)+yk(2*j+1));
f(i)=h/3*f(i);
[m;
f]'
(4)龙贝格求积算法
functionf=Romberg(n)
epsilon=0.0001;
h=b-a;
fa=subs(y,a);
fb=subs(y,b);
T
(1)=h/2*(fa+fb);
m=1;
while1
h=h/2;
k=1:
(2^m-1);
su=sum(yk);
S
(1)=h/2*(fa+fb)+h*su;
mS(i+1)=S(i)+(S(i)-T(i))/(4^i-1);
if(abs(S(m+1)-T(m))<
epsilon)
break;
T=S;
m=m+1;
f=S(m+1);
(5)自适应辛普森求积算法
functionf=AdaptiveSimpson(n)
epsilon=0.001;
p=[ab];
p0=p;
ep=[epsilon];
m=0;
q=0;
f=0;
n1=length(ep);
n=length(p0);
if(n==1)break;
h=p0
(2)-p0
(1);
4;
yk=subs(y,p0
(1)+k*h/4);
s0=h/6*(yk
(1)+4*yk(3)+yk(5));
s1=h/12*(yk
(1)+4*yk
(2)+yk(3));
s2=h/12*(yk(3)+4*yk(4)+yk(5));
if(abs(s0-s1-s2)<
15*ep
(1))