- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值代数五次作业
第一题:
程序:
1. gongetidu.m
x=gongetidu(A,b,s,kmax)
输入值:n*n的矩阵A ,n*1的矩阵b,以及控制迭代停止的s和最大允许的迭代次数kmax
输出值:gongetidu法求解问题A*x=b的解x
2. xldSOR.m
[x,w]=xldSOR(A,b)
输入值:n*n的矩阵A ,n*1的矩阵b
输出值:超松弛迭代法迭代用法求解问题A*x=b的解x,以及最佳松弛因子w
3.call1.m
第一题的程序
问题分析:
1.方程分析
将Dirichlet问题转化为如下差分形式:
将 按照自然顺序排序并记向量x ,大小为 [1 ,(n-1)^2]
系数矩阵A为
矩阵大小为[(n-1)^2, (n-1)^2 ] , 其中B=-I/4 ,S’是对角元均为 1+h2/4 ,次对角元均为-1/4
向量b ,讨论两种情况:
(1) 对于
即对应的b的分量为 =
(2)对于,
例如 i=1, j= ,有 ,有
即对应的b的分量为
为此,可以用for循环同理定义矩阵b,令b=
再将矩阵b按照自然顺序排序得到向量b
由此计算 A*x=b
最后再将1*(n-1)2的向量x变化为(n-1)*(n-1)的矩阵。
2.算法分析:
1. 实共轭梯度法
采用实共轭梯度法解对称正定方程组A*x=b,在||rk||很小或者迭代次数达到最大允许的迭代次数kmax来终止迭代,即令sqrt(r’r)s||b||2或kkmax
2. SOR迭代法:
SOR迭代法需要确定最佳松弛因子wopt。选用不同的w值1:0.01:2,用相同的初始向量迭代400次,考虑 x400-x399的无穷范数,无穷范数最小的认为其收敛速度最快,作为最佳松弛因子wopt .再用这个w ,令xk=(D-wL)-1 [(1-w)D+wU] xk-1+w(D -wL)-1 b; 直到 xk- xk-1 的无穷范数0.0001, 将此时的xk 作为解。这样的解满足有四位有效数字。
实验结果
1. 用实共轭梯度法求解
x=gongetidu(A,b,10^(-6),1000)
即在||rk||小于10^(-6)*||b||或者迭代次数达到最大允许的迭代次数kmax=1000来终止迭代。
得到的解x及r=A*x-b的前若干项为
x 208.4 135.1259527 104.1295 90.8499457 86.5346764 87.6299562 92.4930221 100.260195 110.413275 122.587999 b-Ax 6.99E-06 -8.77E-06 4.24E-05 -3.40E-06 -2.35E-05 -2.29E-05 -5.08E-05 -2.61E-05 -1.25E-05 -9.38E-07
残量r(x)的二范数||A*x-b||2=||r(x)||2= 8.7224e-004
系统计算时间为Elapsed time is 0.026339 seconds.
结果分析:
实共轭梯度法求解速度非常快,这与书中的结论“只要线性方程组的系数矩阵是十分良态的,共轭梯度法就会收敛的非常快”相符合。可以通过增加迭代次数增加精度。
将x重新排列成矩阵U,并画图得:
2.用上节课的SOR迭代法进行求解。
其中通过对不同的w分别迭代400次选取迭代速度最快的最为最佳松弛因子wopt。对wopt迭代指导精确到0.0001终止。
得到x和b-Ax的前若干项为:
x 208.4005 135.1266 104.13 90.85062 86.53487 87.62954 92.49222 100.2599 110.4141 122.5888 b-A*x 2.91E-06 4.42E-06 5.69E-06 6.71E-06 7.47E-06 7.99E-06 8.26E-06 8.30E-06 8.13E-06 7.76E-06 残量r(x)的二范数||A*x-b||2=||r(x)||2= 1.5601e-004
系统计算时间为Elapsed time is 9.345953 seconds.
最佳松弛因子为1.5530,精切到小数点后两位
结果分析:
由于需要选取SOR迭代法的最佳松弛因子,迭代法需要的时间较长,但是精度较好。可以通过以下方式改进:先确定松弛因子的大概范围再精细计算以减少计算量
3.同时用共轭梯度法和SOR迭代法进行对比求解
为了方便比较,令两种迭代法的终止条件都设定为||rk||10^(-10)*||b||或者kmax=2000, 比较两种方法在结果要求精度较高的情况下的计算效果。
运算时间 残差二范数||r||2 共轭梯度 0.030
文档评论(0)