有方程組如下:
迭代法求解x,python**如下:
import numpy as np結果如下:import matplotlib.pyplot as plt
a = np.array([[8, -3, 2], [4, 11, -1], [6, 3, 12]])
b = np.array([[20, 33, 36]])
# 方法一:消元法求解方程組的解
result = np.linalg.solve(a, b.t)
# print('result:\n', result)
# 方法二:迭代法求解方程組的解
b = np.array([[0, 3/8, -2/8], [-4/11, 0, 1/11], [-6/12, -3/12, 0]])
f = np.array([[20/8, 33/11, 36/12]])
error = 1.0e-6
steps = 100
xk = np.zeros((3, 1)) # initialize parameter setting
errorlist =
for k in range(steps):
xk_1 = xk
xk = np.matmul(b, xk) + f.t
print('xk:\n', xk)
if errorlist[-1] < error:
print('iteration: ', k+1)
break
# 把誤差畫出來
x_axis = [i for i in range(len(errorlist))]
plt.figure()
plt.plot(x_axis, errorlist)
【參考文獻】
《機器學習演算法原理與程式設計實踐》鄭捷,第五章第一節
雅克比迭代法求方程組的解(Python實現)
求方程組 5 x1 2 x2 x 3 12 x1 4x2 2x3 202x1 3x 2 10x 3 2 5x 1 2x 2 x3 12 x1 4 x2 2 x3 20 2x1 3x2 10x3 2 上面方程當然是非常容易求解的,但是方程規模變大的時候 比如係數矩陣是100w 100w的時候,這時候,...
數值計算(迭代法解方程組)
ax b經過一定的變換成x bx f 然後從初始向量出發,計算xk 1 b xk f 經過一定的次數後得到xk 1會收斂於真正的值。問題來了?如何得到x bx f這種形式?如何證明收斂?接下來的幾個演算法都是圍繞這個問題。coding utf 8 import numpy as np a packa...
C 解方程組之Jacobi迭代法
迭代過程 首先將 方程組中的 係數矩陣 a分解成三部分,即 a l d u,如圖1所示,其中 d為對角陣,l為下三角矩陣,u為上三角矩陣。之後確定迭代格式,x k 1 b x k f 這裡 表示的是上標,括號內數字即迭代次數 如圖2所示,其中 b稱為迭代矩陣,雅克比迭代法中一般記為 j。k 0,1,...