解線性方程組的迭代法:Jacobi迭代法與Gauss-Seidel迭代法(Python3))

Jacobi迭代法:

import numpy as np

# Jacobi 迭代法計算線性方程

# Ax = b, x_0為初始值, epsilon為誤差限, n為最大迭代次數(shù)

A = np.array([[1,2,-2],

? ? ? ? ? ? [1,1,1],

? ? ? ? ? ? [2,2,1]])

b = np.array([1,2,3])

x_0 = np.array([0,0,0])

epsilon = 0.01

n = 100

def jacobi(A, b, x_0, n, epsilon):

? ? s = len(A)

? ? D = np.diag(np.diag(A))

? ? inv = np.linalg.inv(D)

? ? M = np.eye(s)-np.dot(inv,A)

? ? count = 0

? ? # rho 為譜半徑

? ? rho = np.max(np.linalg.eig(M)[0])

? ? if rho >= 1:

? ? ? ? print("Jacobi迭代法發(fā)散")

? ? else:

? ? ? ? x = x_0

? ? ? ? err = 0x3f3f3f

? ? ? ? while 1:

? ? ? ? ? ? if count >= n:

? ? ? ? ? ? ? ? break

? ? ? ? ? ? if err < epsilon:

? ? ? ? ? ? ? ? break

? ? ? ? ? ? x = np.dot(M, x_0)+np.dot(inv, b)

? ? ? ? ? ? print("第",count,"次迭代結果:",x[0],',',x[1],',',x[2],'\n')

? ? ? ? ? ? count = count + 1

? ? ? ? ? ? err = abs(max(x-x_0))

? ? ? ? ? ? x_0 = ximport numpy as np

# Gauss-Seidel 迭代法計算線性方程

# Ax = b, x_0為初始值, epsilon為誤差限, n為最大迭代次數(shù)

A = np.array([[1,2,-2],

? ? ? ? ? ? [1,1,1],

? ? ? ? ? ? [2,2,1]])

b = np.array([1,2,3])

x_0 = np.array([0,0,0])

epsilon = 0.01

n = 100

def GS(A, b, x_0, n, epsilon):

? ? D = np.diag(np.diag(A))

? ? L = -1*np.tril(A-D)

? ? U = -1*np.triu(A-D)

? ? inv = np.linalg.inv(D-L)

? ? M = np.dot(inv,U)

? ? count = 0

? ? # rho 為譜半徑

? ? rho = abs(np.max(np.linalg.eig(M)[0]))

? ? if rho >= 1:

? ? ? ? print("Gauss-Seidel迭代法發(fā)散")

? ? else:

? ? ? ? x = x_0

? ? ? ? err = 0x3f3f3f

? ? ? ? while 1:

? ? ? ? ? ? if count >= n:

? ? ? ? ? ? ? ? break

? ? ? ? ? ? if err < epsilon:

? ? ? ? ? ? ? ? break

? ? ? ? ? ? x = np.dot(M, x_0)+np.dot(inv, b)

? ? ? ? ? ? print("第",count,"次迭代結果:",x[0],',',x[1],',',x[2],'\n')

? ? ? ? ? ? count = count + 1

? ? ? ? ? ? err = abs(max(x-x_0))

? ? ? ? ? ? x_0 = x

? ? print("譜半徑:",rho)

GS(A, b.T, x_0, n, epsilon)

? ? ? ? print("譜半徑:",rho)

jacobi(A, b.T, x_0, n, epsilon)


Gauss-Seidel迭代法:

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容