数值分析上机题matlab版东南大学.docx
《数值分析上机题matlab版东南大学.docx》由会员分享,可在线阅读,更多相关《数值分析上机题matlab版东南大学.docx(36页珍藏版)》请在冰豆网上搜索。
数值分析上机题matlab版东南大学
数值分析上机报告
第一章
一、题目
精确值为
。
1)编制按从大到小的顺序
,计算SN的通用程序。
2)编制按从小到大的顺序
,计算SN的通用程序。
3)按两种顺序分别计算
并指出有效位数。
(编制程序时用单精度)
4)通过本次上机题,你明白了什么?
二、通用程序
clear
N=input('PleaseInputanN(N>1):
');
AccurateValue=single((0-1/(N+1)-1/N+3/2)/2);
Sn1=single(0);
fora=2:
N;
Sn1=Sn1+1/(a^2-1);
end
Sn2=single(0);
fora=2:
N;
Sn2=Sn2+1/((N-a+2)^2-1);
end
fprintf('ThevalueofSnusingdifferentalgorithms(N=%d)\n',N);
disp('____________________________________________________')
fprintf('AccurateCalculation%f\n',AccurateValue);
fprintf('Caculatefromlargetosmall%f\n',Sn1);
fprintf('Caculatefromsmalltolarge%f\n',Sn2);
disp('____________________________________________________')
三、求解结果
PleaseInputanN(N>1):
10^2
ThevalueofSnusingdifferentalgorithms(N=100)
____________________________________________________
AccurateCalculation0.740049
Caculatefromlargetosmall0.740049
Caculatefromsmalltolarge0.740050
____________________________________________________
PleaseInputanN(N>1):
10^4
ThevalueofSnusingdifferentalgorithms(N=10000)
____________________________________________________
AccurateCalculation0.749900
Caculatefromlargetosmall0.749852
Caculatefromsmalltolarge0.749900
____________________________________________________
PleaseInputanN(N>1):
10^6
ThevalueofSnusingdifferentalgorithms(N=1000000)
____________________________________________________
AccurateCalculation0.749999
Caculatefromlargetosmall0.749852
Caculatefromsmalltolarge0.749999
____________________________________________________
四、结果分析
有效位数
n
顺序
100
10000
1000000
从大到小
6
3
3
从小到大
5
6
6
可以得出,算法对误差的传播又一定的影响,在计算时选一种好的算法可以使结果更为精确。
从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数算所得到的结果才比较准确。
第二章
一、题目
(1)给定初值
与容许误差
,编制牛顿法解方程f(x)=0的通用程序。
(2)给定方程
易知其有三个根
a)由牛顿方法的局部收敛性可知存在
当
时,Newton迭代序列收敛于根x2*。
试确定尽可能大的
。
b)试取若干初始值,观察当
时Newton序列的收敛性以与收敛于哪一个根。
(3)通过本上机题,你明白了什么?
二、通用程序
文件search.m
%%寻找最大的delta值%%
clear
%%
flag=1;
k=1;
x0=0;
whileflag==1
delta=k*10^-6;
x0=delta;
k=k+1;
m=0;
flag1=1;
whileflag1==1&&m<=10^3
x1=x0-fx(x0)/dfx(x0);
ifabs(x1-x0)<10^-6flag1=0;
end
m=m+1;
x0=x1;
end
ifflag1==1||abs(x0)>=10^-6flag=0;
end
end
fprintf('Themaximundeltais%f\n',delta);
文件fx.m
%%定义函数f(x)
functionFx=fx(x)
Fx=x^3/3-x;
文件dfx.m
%%定义导函数df(x)
functionFx=dfx(x)
Fx=x^2-1;
文件Newton.m
%%Newton法求方程的根%%
clear
%%
ef=10^-6;%给定容许误差10^-6
k=0;
x0=input('PleaseinputinitialvalueXo:
');
disp('kXk');
fprintf('0%f\n',x0);
flag=1;
whileflag==1&&k<=10^3
x1=x0-fx(x0)/dfx(x0);
ifabs(x1-x0)flag=0;
end
k=k+1;
x0=x1;
fprintf('%d%f\n',k,x0);
end
三、求解结果
1.运行search.m文件
结果为:
Themaximumdeltais0.774597
即得最大的δ为0.774597,Newton迭代序列收敛于根
=0的最大区间为(-0.774597,0.774597)。
2.运行Newton.m文件
在区间
上各输入若干个数,计算结果如下:
区间
上取-1000,-100,-50,-30,-10,-8,-7,-5,-3,-1.5
13-1.732051
PleaseinputinitialvalueXo:
-30
kXk
0-30.000000
1-20.022247
2-13.381544
3-8.971129
4-6.056000
5-4.150503
6-2.937524
7-2.215046
8-1.854714
9-1.743236
10-1.732158
11-1.732051
12-1.732051
PleaseinputinitialvalueXo:
-10
kXk
0-10.000000
1-6.734007
2-4.590570
3-3.212840
4-2.371653
5-1.922981
6-1.757175
7-1.732580
8-1.732051
9-1.732051
PleaseinputinitialvalueXo:
-10000
kXk
0-10000.000000
1-6666.666733
2-4444.444589
3-2962.963209
4-1975.309031
5-1316.873025
6-877.915856
7-585.277997
8-390.186470
9-260.126022
10-173.419911
11-115.617118
12-77.083845
13-51.397880
14-34.278229
15-22.871618
16-15.276949
17-10.228459
18-6.884780
19-4.688772
20-3.274807
21-2.407714
22-1.939750
23-1.761259
24-1.732762
25-1.732051
26-1.732051
PleaseinputinitialvalueXo:
-100
kXk
0-100.000000
1-66.673334
2-44.458891
3-29.654263
4-19.792016
5-13.228447
6-8.869651
7-5.989231
8-4.107324
9-2.910755
10-2.200189
11-1.848687
12-1.742235
13-1.732139
14-1.732051
15-1.732051
PleaseinputinitialvalueXo:
-50
kXk
0-50.000000
1-33.346672
2-22.251125
3-14.864105
4-9.954458
5-6.703960
6-4.571013
7-3.200520
8-2.364515
9-1.919703
10-1.756405
11-1.732548
12-1.732051
PleaseinputinitialvalueXo:
-3
kXk
0-3.000000
1-2.250000
2-1.869231
3-1.745810
4-1.732212
5-1.732051
6-1.732051
PleaseinputinitialvalueXo:
-1.5
kXk
0-1.500000
1-1.800000
2-1.735714
3-1.732062
4-1.732051
5-1.732051
PleaseinputinitialvalueXo:
-8
kXk
0-8.000000
1-5.417989
2-3.739379
3-2.684934
4-2.078246
5-1.802928
6-1.736023
7-1.732064
8-1.732051
9-1.732051
PleaseinputinitialvalueXo:
-7
kXk
0-7.000000
1-4.763889
2-3.322318
3-2.435533
4-1.952915
5-1.764630
6-1.732931
7-1.732051
8-1.732051
PleaseinputinitialvalueXo:
-5
kXk
0-5.000000
1-3.472222
2-2.524180
3-1.996068
4-1.776618
5-1.733674
6-1.732053
7-1.732051
8-1.732051
结果显示,以上初值迭代序列均收敛于-1.732051,即根
。
在区间
即区间(-1,-0.774597)上取-0.774598,-0.8,-0.85,-0.9,-0.99,计算结果如下:
PleaseinputinitialvalueXo:
-0.774598
kXk
0-0.774598
10.774605
2-0.774645
30.774884
4-0.776324
50.785049
6-0.840641
71.350187
81.993830
91.775963
101.733628
111.732053
121.732051
131.732051
PleaseinputinitialvalueXo:
-0.8
kXk
0-0.800000
10.948148
2-5.625370
3-3.872625
4-2.766197
5-2.121367
6-1.818292
7-1.737822
8-1.732079
9-1.732051
10-1.732051
PleaseinputinitialvalueXo:
0.85
kXk
00.850000
1-1.475375
2-1.819444
3-1.737969
4-1.732081
5-1.732051
6-1.732051
PleaseinputinitialvalueXo:
-0.9
kXk
0-0.900000
12.557895
22.012915
31.781662
41.734049
51.732054
61.732051
71.732051
PleaseinputinitialvalueXo:
-0.99
kXk
0-0.990000
132.505829
221.691081
314.491521
49.707238
56.540906
64.464966
73.133840
82.326075
91.902303
101.752478
111.732403
121.732051
131.732051
计算结果显示,迭代序列局部收敛于-1.732051,即根
,局部收敛于1.730251,即根
。
在区间
即区间(-0.774597,0.774597)上,由search.m的运行过程表明,在整个区间上均收敛于0,即根
。
PleaseinputinitialvalueXo:
0.774598
kXk
00.774598
1-0.774605
20.774645
3-0.774884
40.776324
5-0.785049
60.840641
7-1.350187
8-1.993830
9-1.775963
10-1.733628
11-1.732053
12-1.732051
13-1.732051
PleaseinputinitialvalueXo:
0.8
kXk
00.800000
1-0.948148
25.625370
33.872625
42.766197
52.121367
61.818292
71.737822
81.732079
91.732051
101.732051
PleaseinputinitialvalueXo:
0.85
kXk
00.850000
1-1.475375
2-1.819444
3-1.737969
4-1.732081
5-1.732051
6-1.732051
PleaseinputinitialvalueXo:
0.9
kXk
00.900000
1-2.557895
2-2.012915
3-1.781662
4-1.734049
5-1.732054
6-1.732051
7-1.732051
PleaseinputinitialvalueXo:
0.99
kXk
00.990000
1-32.505829
2-21.691081
3-14.491521
4-9.707238
5-6.540906
6-4.464966
7-3.133840
8-2.326075
9-1.902303
10-1.752478
11-1.732403
12-1.732051
13-1.732051
在区间
即区间(0.774597,1)上取0.774598,0.8,0.85,0.9,0.99,计算结果如下:
计算结果显示,迭代序列局部收敛于-1.732051,即根
,局部收敛于1.730251,即根
。
PleaseinputinitialvalueXo:
4
kXk
04.000000
12.844444
22.163724
31.834281
41.740007
51.732105
61.732051
71.732051
PleaseinputinitialvalueXo:
3
kXk
03.000000
12.250000
21.869231
31.745810
41.732212
51.732051
61.732051
PleaseinputinitialvalueXo:
1.5
kXk
01.500000
11.800000
21.735714
31.732062
41.732051
51.732051
区间
上取100,60,20,10,7,6,4,3,1.5,计算结果如下:
62.213605
71.854126
81.743136
91.732156
101.732051
111.732051
PleaseinputinitialvalueXo:
10
kXk
010.000000
16.734007
24.590570
33.212840
42.371653
51.922981
61.757175
71.732580
81.732051
91.732051
PleaseinputinitialvalueXo:
7
kXk
07.000000
14.763889
23.322318
32.435533
41.952915
51.764630
61.732931
71.732051
81.732051
PleaseinputinitialvalueXo:
6
kXk
06.000000
14.114286
22.915068
32.202578
41.849650
51.742392
61.732142
71.732051
81.732051
PleaseinputinitialvalueXo:
100
kXk
0100.000000
166.673334
244.458891
329.654263
419.792016
513.228447
68.869651
75.989231
84.107324
92.910755
102.200189
111.848687
121.742235
131.732139
141.732051
151.732051
PleaseinputinitialvalueXo:
60
kXk
060.000000
140.011114
226.690749
317.818845
411.916762
58.000848
65.418546
73.739736
82.685151
92.078360
101.802967
111.736027
121.732064
131.732051
141.732051
PleaseinputinitialvalueXo:
20
kXk
020.000000
113.366750
28.961323
36.049547
44.146328
]
结果显示,以上初值迭代序列均收敛于1.732051,即根
。
综上所述:
(-∞,-1)区间收敛于-1.73205,(-1,δ)区间局部收敛于1.73205,局部收敛于-1.73205,(-δ,δ)区间收敛于0,(δ,1)区间类似于(-1,δ)区间,(1,∞)收敛于1.73205。
通过本上机题,明白了对于多根方程,Newton法求方程根时,迭代序列收敛于某一个根有一定的区间限制,在一个区间上,可能会局部收敛于不同的根。
第三章
一、题目
列主元Gauss消去法对于某电路的分析,归结为求解线性方程组
。
其中
(1)编制解n阶线性方程组
的列主元高斯消去法的通用程序;
(2)用所编程序线性方程组
,并打印出解向量,保留5位有效数;
二、通用程序
%%列主元Gauss消去法求解线性方程组%%
%%参数输入
n=input('PleaseinputtheorderofmatrixA:
n=');%输入线性方程组阶数n
b=zeros(1,n);
A=input('InputmatrixA(suchasa2ordermatrix:
[12;3,4]):
');
b(1,:
)=input('Inputthecolumnvectorb:
');%输入行向量b
b=b';C=[A,b];%得到增广矩阵
%%列主元消去得上三角矩阵
fori=1:
n-1[maximum,index]=max(abs(C(i:
n,i)));
index=index+i-1;
T=C(index,:
);
C(index,:
)=C(i,:
);
C(i,:
)=T;
fork=i+1:
n%%列主元消去
ifC(k,i)~=0
C(k,:
)=C(k,:
)-C(k,i)/C(i,i)*C(i,:
);
end
end
end
%%回代求解%%
x=zeros(n,1);
x(n)=C(n,n+1)/C(n,n);
fori=n-1:
-1:
1
x(i)=(C(i,n+1)-C(i,i+1:
n)*x(i+1:
n,1))/C(i,i);
end
A=C(1:
n,1:
n);%消元后得到的上三角矩阵
disp('Theupperteianguularmatrixis:
')
fork=1:
n
fprintf('%f',A(k,:
));
fprintf('\n');
end
disp('Solutionoftheequations:
');
fprintf('%.5g\n',x);%以5位有效数字输出结果
PleaseinputtheorderofmatrixA:
n=4
InputmatrixA(suchasa2ordermatrix:
[12;3,4])[121-2
253-2
-2-235
1