第三次matlab作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0.3333 0.7222 1.1481 1.5849 2.0265 2.4698 2.9138 3.3581 3.8025 4.2469 4.6914 5.1358 5.5802 6.0247 6.4691 6.9136 7.3580 7.8025 9.7369 8.9397
i= 5 从迭代次数可以看出 b 的不同对于高斯-赛德尔迭代法收敛速度也是有影响的。 其他改换参数的实验由于篇幅原因就不枚举。 实验结果综合分析: 从①中可以看出两种算法的结果会收敛于同一向量且高斯-塞尔德迭代法比雅可比迭代更 快 从①和②比较可以看出不同的迭代初值的选取对收敛速度没有影响,对于雅可比迭代法初 值的选择对于结果有一定微小偏差 从①和③比较可以看出不同的 b 的选取(在迭代初值一样时)对于收敛速度会有影响。
i= 8 高斯-赛德尔迭代法 matlab 实现: n=20;x0=zeros(1,20);b=ones(1,20); x=x0'; M=0.0001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x;
第一题:迭代法求解方程组
实验目的: (1) 选取不同的初始向量 x (0) 和不同的方程组右端项向量 b, 给定迭代误差要求, 用 雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛? 若收敛,记录迭代次数,分析计算结果并得到你的结论; (2) 取定右端向量 b 和初始向量 x (0) ,将 A 的主对角线元素成倍增长若干次,非主 对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足
0.4444 0.4444 0.5206 0.4571
i= 4 与 x0=zeros(1,20)同样方法迭代次数(均为 4)无差别,所得结果也无差异。 ③当改变 b 值时,很显然结果将会不同,我们在此观测 b 的不同对收敛速率的影响。 改变 b=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] 雅可比迭代法: n=20;x0=zeros(1,20);b=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; x=x0'; M=0.0001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=A*x+1/3*b'; i=i+1; end x i 所得结果如下: x= 0.3333 0.7222 1.1481 1.5849 2.0265 2.4698 2.9138 3.3581
B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=B*x+1/3*b'; i=i+1; end x i 得到结果: x= 0.3333 0.3889 0.4259 0.4367 0.4416 0.4433 0.4440 0.4443 0.4444 0.4444 0.4444 0.4444 0.4445 0.4445 0.4445 0.4445 0.4445 0.4445 0.5207 0.4572
i= 8
与之前的 x0=zeros(1,20)时的雅可比法迭代次数(均为 8)无差别,结果存在些许不同 高斯-赛德尔迭代法 matlab 实现: n=20;x0=ones(1,20);b=ones(1,20); x=x0'; M=0.0001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; for j=1:20 x(j)=B(j,:)*x+1/3*b(j); end i=i+1; end x i 得到结果如下: x= 0.3333 0.3889 0.4259 0.4367 0.4416 0.4433 0.4440 0.4443 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444
3.8025 4.2469 4.6914 5.1358 5.5802 6.0247 6.4691 6.9136 7.3580 7.8025 9.7369 8.9397
i= 10 从迭代次数可以看出 b 的不同对于雅可比迭代法收敛速度是有影响的。 高斯-赛德尔迭代法: n=20;x0=zeros(1,20);b=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; x=x0'; M=0.0001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; for j=1:20 x(j)=B(j,:)*x+1/3*b(j); end i=i+1; end x i 所得结果如下: x=
0.380952199300130 0.412920021716459 0.383616068508181
i= 7 可以看出收敛速度加快 ③将 A 的主对角元变为 9(即在我的 matlab 命令中加入 B=B/3) 雅可比迭代法 matlab 实现: n=20;x0=zeros(1,20);b=ones(1,20); x=x0'; M=0.00001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B=B/3; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=B*x+1/3*b'; i=i+1; end x i 得到如下结果: x= 0.333333333333333 0.351851851851852 0.362139917695473 0.363225880201189 0.363571991058274 0.363621385064382 0.363633733565909 0.363635762248302 0.363636181215318 0.363636236342557
10 ②将 A 的主对角元变为 6(即在我的 matlab 命令中加入 B=B/2) 雅可比迭代法 matlab 实现: n=20;x0=zeros(1,20);b=ones(1,20); x=x0'; M=0.00001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B=B/2; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=B*x+1/3*b'; i=i+1; end x i 得到如下结果: x= 0.333333333333333 0.361111111111111 0.377314814814815 0.379822530864197 0.380706661522634 0.380884827246228 0.380936513167295 0.380948234596479 0.380951332402763 0.380952030106882 0.380952176624746 0.380952197555870 0.380952199300130 0.380952199300130 0.380952199300130 0.380952199300130 0.380952199300130
for j=1:20 x(j)=B(j,:)*x+1/3*b(j); end i=i+1; end x i 得到如下结果: x= 0.3333 0.3889 0.4259 0.4367 0.4416 0.4433 0.4440 0.4443 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.5206 0.4571
x(k 1) x(k)
105 ,比较收敛速度,分析现象并得出你的结论。
实验分析:本实验是单纯的数学问题,利用迭代法的有关原理直接进行 matlab 命令执行, 完成实验要求。 实验过程:
(1)
①当 n=20;x0=zeros(1,20);b=ones(1,20),误差要求时 M= x 雅可比迭代法 matlab 实现: n=20;x0=zeros(1,20);b=ones(1,20); x=x0'; M=0.0001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=B*x+1/3*b'; i=i+1; end x i 得到如下结果:
(2)
取定 b=ones(20,1) , x (0) =zeros(20,1) ,M= ①主对角元仍为 3 雅可比迭代法 matlab 实现: n=20;x0=zeros(1,20);b=ones(1,20); x=x0';
x (k 1) x (k)
wenku.baidu.com
105
M=0.00001; for i=1:n-2 B(i,i)=0; B(i+1,i)=1/6; B(i+2,i)=1/12; end B(n-1,n-1)=0;B(n,n)=0; B(n,n-1)=1/6;B(n-1,n)=1/6; B; i=0; t=10*ones(20,1); while max(abs(x-t))>M t=x; x=B*x+1/3*b'; i=i+1; end x i 得到结果如下: x= 0.333333333333333 0.388888888888889 0.425925925925926 0.436728395061728 0.441615226337449 0.443329903978052 0.444022919524463 0.444281311918915 0.444382128613524 0.444420464095497 0.444435249220986 0.444440880468446 0.444442989085336 0.444443727101247 0.444443953467472 0.444444009283802 0.444444019361750 0.444444020524590 0.520633995713674 0.457142099873634 i=
(k 1)
x(k)
104 时
x= 0.3333 0.3889 0.4259 0.4367 0.4416 0.4433 0.4440 0.4443 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.4444 0.5206 0.4571
i= 4 ②当改变 x (0) 值后: 当 n=20;x0=ones(1,20);b=ones(1,20),误差要求时 M= x 雅可比迭代法: n=20;x0=ones(1,20);b=ones(1,20); x=x0'; M=0.0001; for i=1:n-2
(k 1)
x(k)
104 时