数值分析上机作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运行结果:
请输入搜索精度:10^-6 请输入允许误差:10^-6 最大的 delta 值为:0.774597
本实验取 10 ,找到的最大的 0.774597
6
② 当 x0 (, 1) 时,计算结果如下: x0 -1000 -500 -100 -10 -1.5 Newton 序列收敛于-1.732051 xend -1.732051 -1.732051 -1.732051 -1.732051 -1.732051
数值分析上机作业
(1、2、3、4、6 章)
第一章
17. 舍入误差与有效数 设 SN
j
j 2
N
2
1 13 1 1 ,其精确值为 。 1 2 2 N N 1
1 1 2 2 1 3 1
2
(1)编制按从大到小的顺序 S N (2)编制按从小到大的顺序 S N 程序;
6
% 求解 x=zeros(1,size(A,1)); for z=size(A,1):-1:1 a = A(z,1:end-1); b = sum( a.*x ); x(z) = ( A(z,end)-b ) / A(z,z); end end
(2)消元后所得增广矩阵:
31.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -13.00000 29.54839 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -9.00000 28.25873 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -10.00000 75.46127 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -11.00000 -3.35044 -31.18563 44.60200 0.00000 0.00000 0.00000 0.00000 -10.00000 -4.19355 -1.27729 -0.45200 -7.17969 45.87319 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -30.00000 21.38070 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -5.00000 -0.78472 -0.51319 26.41308 0.00000 0.00000 0.00000 0.00000 -9.00000 -3.57799 -0.56154 -0.36724 -2.42000 27.38950 -15.00000 20.70968 -16.69214 -5.90690 -22.34832 8.49257 -1.44605 4.60810 7.94922
function [ A,x ] = Three_39( A,b ) A = [A,b]; for i=1:size(A,1) % 列主元交换 a=A(i:end,i); f=find(a==max(a)); n=A(f(1)+i-1,:); A(i,:)=A(f(1)+i-1,:); A(f(1)+i-1,:)=n; % 消元 for j=i+1:size(A,1) A(j,:)=A(j,:)-A(i,:)*( A(j,i)/A(i,i) ); end end
5
xend 1.732051 1.732051 1.732051 -1.732051 -1.732051
xend 0.000000 0.000000 0.000000 0.000000 0.000000
xend 1.732051 1.732051 -1.732051 -1.732051 -1.732051
function [ S ] = One_17_1( N ) S = single( 0 ); for i = 2:N S = S + 1/(i^2ቤተ መጻሕፍቲ ባይዱ1); end end
(2)
function [ S ] = One_17_2( N ) S = single( 0 ); for i = N:-1:2 S = S + 1/(i^2-1);
end end
(3)
function [ ] = One_17_3( ) N = input('请输入 N 值:'); S0 = single( 1/2*(3/2-1/N-1/(N+1)) ); S1 = One_17_1( N ); S2 = One_17_2( N ); fprintf('精确值为:%f\n',S0); fprintf('从大到小顺序累加得 SN=%f\n',S1); fprintf('从小到大顺序累加得 SN=%f\n',S2); end
3
(2)①
function [ ] = Two_20_2( ) precision = input('请输入搜索精度:'); epsilong = input('请输入允许误差:'); xend = 0; k = 0; while abs( xend-0 ) < epsilong k = k + precision; xend = Two_20_1( k,epsilong ); end fprintf('最大的 delta 值为:%f\n',k); end
V T (15, 27, 23,0, 20,12, 7,7,10)T
(1)编制解 n 阶线性方程组 Ax b 的列主元 Gauss 消去法的通用程序; (2)用所编程序解线性方程组 RI V ,并打印出解向量,保留 5 位有效数字; (3)本题编程之中,你提高了哪些编程能力?
解: (1)
4
当 x0 (1, ) 时,计算结果如下: x0 -0.95 -0.90 -0.85 -0.80 -0.78 Newton 序列收敛于 1.732051 或-1.732051 当 x0 ( , ) 时,计算结果如下: x0 -0.77 -0.5 -0.1 0.3 0.77 Newton 序列收敛于 0 当 x0 ( ,1) 时,计算结果如下: x0 0.78 0.80 0.85 0.90 0.95 Newton 序列收敛于 1.732051 或-1.732051 当 x0 (1, ) 时,计算结果如下: x0 1.5 10 100 500 1000 Newton 序列收敛于 1.732051 (3)通过本题发现,Newton 迭代法解方程初始值的选取非常重要,不同的初始值会收 敛于方程不同的根,且有些区间是全局收敛,有些区间是局部收敛。此外,发现 Newton 迭 代法虽然使用方便,但是在数据量较大时,寻找最优的迭代区间变得非常困难,本实验为了 找出尽可能大的 值,程序运行了很长一段时间,因此 Newton 迭代法最优收敛区间寻找的 普遍方法可能是一个非常有用的课题。
解向量如下所示:
0.28923 0.34544 0.71281 0.22061 I 0.43040 0.15431 0.05782 0.201050 0.29023
(3)在本题目的编程之中,我学会了矩阵的数乘和循环语句的嵌套使用,学会了用数 学工具来处理复杂方程的解的问题。 同时也学会了在电路分析等自己的专业领域运用列主元 高斯消去法解决问题。
SN
0.7400495 0.7499000 0.7499990
有效位数 8 8 11
102 104 106
4.950495013922307 109 4.999500036184656 109 5.000444502911705 1013
(4)通过本题可以看出,不同算法造成的误差是不同的,好的算法可以让计算结果精 度更高。对于本题,当采用从大到小的顺序累加计算时,计算误差随着 N 的增大而增大;当 采用从小到大的顺序累加计算时,计算误差随着 N 的增大而减小。因此在 N 比较大时宜采 用从小到达的顺序累加计算。
1
按从大到小的顺序计算得: N
SN
0.7400495 0.7498521 0.7498521
误差 e
有效位数 8 4 3
102 104 106
N
4.950495013922307 109 4.790499950002580 105 1.469000004999943 104
误差 e
按从小到大的顺序计算得:
xend 1.732051 1.732051 1.732051 1.732051 1.732051
第三章
39.列主元 Gauss 消去法 对于某电路的分析,归结为求解线性方程组 RI V ,其中
0 0 10 0 0 0 31 13 0 13 35 9 0 11 0 0 0 0 0 9 31 10 0 0 0 0 0 0 10 79 30 0 0 0 9 0 R 0 0 0 30 57 7 0 5 0 0 0 0 7 47 30 0 0 0 0 0 0 0 0 30 41 0 0 0 0 0 5 0 0 27 2 0 0 0 0 9 0 0 0 2 29
2
第二章
20.Newton 迭代法 (1)给定初值 x0 及容许误差 ,编制 Newton 法解方程 f ( x) 0 根的通用程序; (2)给定方程 f ( x)
x3 * * * 3 , x2 3; x 0 ,易知其有三个根 x1 0 , x3 3
①由 Newton 方法的局部收敛性可知存在 0 ,当 x0 (, ) 时 Newton 迭代序
* 列收敛于根 x2 ,试确定尽可能大的 ;
②试取若干初始值,观察当 x0 (, 1) , (1, ) , ( , ) , ( ,1) , (1, ) 时 Newton 序列是否收敛以及收敛于哪一个根; (3)通过本上机题,你明白了什么?
解: (1)
function [ xend ] = Two_20_1( x0, epsilong ) syms X; f(X) = X^3/3 - X; df(X) = diff(f(X)); x(1) = x0 - double( f(x0)/df(x0) ); x(2) = x(1) - double( f(x(1))/df(x(1)) ); k=1; while abs( x(k+1)-x(k) ) > epsilong k = k+1; x(k+1) = x(k) - double( f( x(k) )/df( x(k) ) ); end xend = ( x(k)+x(k+1) )/2; end
运行结果:
请输入 N 值:10^2 精确值为:0.740049504950495 从大到小顺序累加得 SN=0.7400495 从小到大顺序累加得 SN=0.7400495 请输入 N 值:10^4 精确值为:0.749900004999500 从大到小顺序累加得 SN=0.7498521 从小到大顺序累加得 SN=0.7499000 请输入 N 值:10^6 精确值为:0.749999000000500 从大到小顺序累加得 SN=0.7498521 从小到大顺序累加得 SN=0.7499990
1 ,计算 S N 的通用程序; N 1
2
1 1 N 1 ( N 1)2 1
2
1 ,计算 S N 的通用 2 1
2
(3)按两种顺序分别计算 S102 , S104 , S106 ,并指出有效位数(编制程序时使用单精 度) ; (4)通过本上机题你明白了什么? 解: (1)