反復ソリューションに比べて緩和法のセット方法(Python実装)

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/a19990412/article/details/90349029

数値解析のトピック

需要方程式
{ 5 バツ 1 + 2 x 2 + x 3 = 12 x 1 + 4 x 2 + 2 x 3 = 20 2 x 1 + 3 x 2 + 10 x 3 = 2 \左\ {\開始{アレイ} {C} 5x_1 + 2x_2 + X_3 = -12 \\ -x_1 + 4x_2 + 2x_3 = 20 \\ 2x_1 + -3x_2 + 10x_3 = 2 \端{アレイ} \右。

ガウスに基づいて実際に緩和オーバー - ザイデル反復

コントラストは、ガウスの影響で前の反復法と比較することができる
ガウス-ザイデル反復方程式法(Python実装)の溶液

コード

import numpy as np

A = np.array([[5.0, 2, 1], [-1, 4, 2], [2, -3, 10]])
B = np.array([-12.0, 20, 3])
x0 = np.array([1.0, 1, 1])
x = np.array([0.0, 0, 0])
w = 1.5
times, MT = 0, 1000

while times < MT:
    tempx = x0.copy()
    for i in range(3):
        temp = 0
        for j in range(3):
            if i != j:
                temp += x0[j] * A[i][j]
        x[i] = (B[i] - temp) / A[i][i]
        x0[i] = x[i]
    x = w * x + (1-w) * tempx
    calTemp = max(abs(x - tempx))
    times += 1
    if calTemp < 1e-4:
        break
print(times)
print(x)
  • Xは、算出結果である[-4、3、2]

おすすめ

転載: blog.csdn.net/a19990412/article/details/90349029