线性方程的迭代方法 |
您所在的位置:网站首页 › 线性方程组的三种迭代解法 › 线性方程的迭代方法 |
本文将介绍求解线性方程 采用如下迭代格式: M是一个相对于A更便于求逆的矩阵。可以很方便的验证上述格式在
当 再把 如果 注意到现在 设 由此,我们选择 到此我们已经得到了一个算法。但其在每步中需要使用 Gram-Schmidt 方法来求 Proposition 1: Proof: 使用归纳法。
又
Proposition 2: Proof: 由前得知, Proposition 3: Proof: 由命题二得 由命题三可知, Proposition 4: Proof: 首先, 可设 设 最后一式第二项同 即 代回得 最终实现 import numpy as np def CG(A,b,x,n): r = b - A @ x for i in range(n): s = r @ r if i==0: p = r else: p = r + s / _s * _p _s, _p = s, p q = A @ p a = s / (q @ p) x += a * p r -= a * q print(max(abs(r))) return xBiCGLet Then we calculate the LU decompostion of where Now consider finding we can deduce that Thus where then resulting code def BCG(A,b,x,n): r1 = b - A @ x r2 = np.array(r1) for i in range(n): s = r1 @ r2 if i==0: p1 = r1 p2 = r2 else: p1 = r1 + s / _s * _p1 p2 = r2 + s / _s * _p2 _s, _p1, _p2 = s, p1, p2 q1 = A @ p1 q2 = A.T @ p2 a = s / (p2 @ q1) x = x + a * p1 r1 = r1 - a * q1 r2 = r2 - a * q2 print(max(abs(r1))) return map(np.array, (X,P1,P2,R1,R2)) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |