博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性方程组的迭代解法数值结果分析
阅读量:6689 次
发布时间:2019-06-25

本文共 956 字,大约阅读时间需要 3 分钟。

       纸上得来终觉浅,绝知此事要躬行。                                

                                           ----(宋)陆游

 

       在使用有限差分法的五点格式求解偏微分方程组时,把问题转化为求解数量级从10直到为10^4个未知数的稀疏矩阵的线性方程组,然后使用了Jocobi迭代,G-S迭代,SOR迭代以及CG迭代求解。

       不管从程序的运行时间还是结果精度来看,SOR迭代和CG迭代较另外两种迭代法占优,而数值结果显示SOR迭代和CG迭代的收敛速度基本相当(后者稍微占优一点儿),这和理论的推导结果吻合地很好。

      从程序使用的内存空间考虑的话,问题变得复杂了。简言之,CG方法依旧胜出,而除了Jacobi迭代法之外的其他迭代方法在处理数量级为10^4个未知数的时候都会遇到out momery的情况。

      综合考虑,在能使用CG方法的情况下(它适用于稀疏矩阵的线性方程组的求解,但是要求线性方程组对应的系数矩阵为对称正定阵,在五点差分格式中,满足该条件且矩阵为稀疏矩阵),首选CG方法。

      PS:

      1.在使用G-S迭代法求解数量级为10^4个未知数的方程组(此时,方程组对应的系数矩阵为10^8的数量级)时,如果使用其对应的矩阵迭代格式的话,那么要涉及到稀疏矩阵的求逆,就五点差分格式转化的方程组而言,在G-S迭代中涉及的稀疏矩阵的逆却不是稀疏矩阵,由于要存储的数据太多,导致out momery而使程序无法计算下去。

      2.再拿G-S迭代法来看,发现其分量的迭代格式能够大量地节省存储空间,它只需要系数矩阵和常数项的存储信息而不涉及到逆矩阵的计算和存储。不过呢,较矩阵的迭代格式,分量迭代格式更新的速度太慢。程序中未知数的个数在10^3数量级,后者运行时间大概需要200多秒,前后两次迭代的误差设置为10e-2,而同样规模如果使用G-S的矩阵迭代格式运行时间不到1秒,而前后两次迭代的误差设置为10e-4。所以,从运行时间考虑,G-S方法的分量迭代格式显然慢。

      3. 虽然G-S迭代的矩阵格式和分量格式在理论推导上没有什么区别,但是在实际的程序运行过程中却出现了巨大的差异。这主要是matlab的最重要的一个特点是向量化计算产生的。从某个角度来看,分量迭代格式类似于显格式,而矩阵迭代格式类似于隐格式。

转载于:https://www.cnblogs.com/liuyc/p/3703693.html

你可能感兴趣的文章
eclipse在切换控件时flex项目无视图模式了
查看>>
Android******Context******
查看>>
MyBatis框架介绍(1)
查看>>
突破R内存限制的企业级大数据挖掘利器:Microsoft R Server 快速上手
查看>>
PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释
查看>>
ORACLE SQL(八)
查看>>
不使用(a+b)/2这种方式,求两个数的平均值。
查看>>
Maven 编译出错
查看>>
服务器硬盘分区只读监控
查看>>
Linux下部署多个Tomcat
查看>>
互联网mysql表设计
查看>>
ListView原理与优化
查看>>
Scala单例对象和伴生对象
查看>>
epoll_create, epoll_ctl和epoll_wait 实例讲解,总结得不错
查看>>
DNS权威性应答与非权威性应答的关系
查看>>
Python3快速入门(四)——Python包管理
查看>>
QT开发(三十八)——Model/View框架编程
查看>>
Docker镜像与容器命令
查看>>
Java基础学习总结(7)——Object类
查看>>
Myeclipse优化配置
查看>>