首页/文章/ 详情

【数值算法】系数矩阵非对称时,线性方程组如何求解?

2年前浏览2438

【数值算法】系数矩阵非对称时,线性方程组如何求解?

-稳定双共轭梯度法(Bicgstab)求解线性方程组

在前面的文章和中表明共轭梯度法是求解对称正定线性方程组的一种有效方法,当针对不同的系数矩阵采用不同的预处理方式时,其可以以较少的迭代次数获得较高精度的解。然而,该方法的一个缺点就是其只能适用于对称正定系数矩阵,当系数矩阵不再是对称正定时,此方法可能失效。

以下举例:

上面矩阵A为非对称矩阵,采用共轭梯度法求解过程如下:
 
 
该方程组采用共轭梯度法迭代4862次依然未收敛。因此,对于该非对称方程,可以认为,共轭梯度法几乎是失效的。
在实际工程中,有限元方法形成的刚度系数以对称正定居多,但是实际上也存在非对称的可能,例如,当材料本构采用摩尔-库伦本构时,其形成的刚度矩阵就有可能会是非对称的,此时如果是使用商业软件,应当在软件中选择非对称求解器。如果是自主编程且采用迭代法求解线性方程组,则需要找到一种适用于非对称矩阵的求解方法。

常见的非对称系数矩阵求解方法主要有:广义最小残差法(GMRES),双共轭梯度法(Bicg)稳定双共轭梯度法(BiCGStab),稳定混合双共轭梯度法(BiCGStab(l)),这些方法相对于常规的共轭梯度法在推导上均增加了一些难度,实际推导往往较为复杂。本文不展开推导,仅对稳定双共轭梯度法(BiCGStab)的伪代码作简要粘贴。
BiCGStab法的具体计算过程如下:

具体代码:

image.png

image.png

image.png

image.png


依据上述过程编写程序,计算前述非对称矩阵线性方程组求解结果:
 
 
采用matlab求解该方程组的解:

通过对比可知11次迭代已经获得即为准确的结果。实际上,对于该方法也可以通过一定的预处理方式,使得其所需要的迭代次数更少。
以上,就是稳定双共轭梯度法求解线性方程组的内容,感谢您的阅读!

来源:有限元术
科普材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-06-20
最近编辑:2年前
寒江雪_123
硕士 | cae工程师 签名征集中
获赞 49粉丝 106文章 56课程 9
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈