第十三课 稳定双共轭梯度法(BiCGSTAB)解方程
非对称方程
前面的方法只使用于方程是对称排列的情况,对于非对称排列的情况,只需要在之前的基础上做一些改进。尽管最终方法的编程相对简单,但完整的数学推理也很复杂,感兴趣的同学可以查看这方面的资料,了解更多细节。我们选择基于前一节的共轭梯度法编程的一种方法,称为“稳定双共轭梯度”(“BiCGSTAB”)。该算法采取以下步骤:
初始化阶段:
迭代阶段:
我们看到了与上文相似但更复杂的计算过程。
算例采用第一篇中的基础算例
具体求解过程可以看高斯消元法
程序如下:
#线性联立方程的双共轭梯度法
import numpy as np
import math
import B
n=3
converged=np.array([False])
v=np.zeros((n,1))
r=np.zeros((n,1))
r0_hat=np.zeros((n,1))
p=np.zeros((n,1))
s=np.zeros((n,1))
t=np.zeros((n,1))
#xnew=np.zeros((n,1))
a=np.array(