公式出不来刷新一下
上了数值分析课,写个程序玩玩,程序有待完善,缺少收敛判断。
Update:
2016年12月14日:补充超松弛迭代法(SOR)。
Jacobi迭代公式:
$$x^{(k+1)}=-D^{-1}(L+U)x^{(k)}+D^{-1}b$$ 令
$$B=-D^{-1}(L+U),\quad d=D^{-1}b$$ 得到
$$x^{(k+1)}=Bx^{(k)}+D$$
# -*- coding: utf-8 -*-
import numpy as np
def jacobi (A,b):
n1 = len(A)
n2 = len(A.T)
x = np.ones([n1,1])
N=0
if (n1 != n2):
print "The input matrix is not squre matrix"
else :
B = np.zeros([n1,n1])
D = np.zeros([n1,n1])
d = np.ones([n1,1])
B = A.copy()
for i in range(n1):
B[i,i] = 0.0
D[i,i] = A[i,i].copy()
B = np.dot(-np.linalg.inv(D),B)
d = np.dot(np.linalg.inv(D),b)
x1 = x
x2