-Python- モジュールを活用した連立方程式の解法

前回の投稿で,境界値問題を解く際の連立方程式ガウスの消去法で解くプログラム例を示しました.その例では,FortranC/C++で書くような,for文を用いて繰り返し計算を用いて行列計算を行うコードとしていました.
pythonには簡単に行列計算を行うモジュールが用意されています.

 
# Import modules
import numpy as np
 
# Global variables
# augmented matrix
a = np.array([[4, -1, 0, -1, 0, 0, 0, 0, 0], [-1, 4, -1, 0, -1, 0, 0, 0, 0],
    [0, -1, 4, 0, 0, -1, 0, 0, 0], [-1, 0, 0, 4, -1, 0, -1, 0, 0],
    [0, -1, 0, -1, 4, -1, 0, -1, 0], [0, 0, -1, 0, -1, 4, 0, 0, -1],
    [0, 0, 0, -1, 0, 0, 4, -1, 0], [0, 0, 0, 0, -1, 0, -1, 4, -1],
    [0, 0, 0, 0, 0, -1, 0, -1, 4]])
 
# Right side of the equation
b = np.array([0, 0, 0.25, 0, 0, 0.5, 0.25, 0.5, 1.5])
 
# Main execution unit
x = np.linalg.solve(a, b)   # Solve equation
 
# Output of result
print(x)
 

上記のプログラムでは,係数行列(a)と方程式の右辺(b)を設定した後に

x = np.linalg.solve(a, b) 

の1行のみで連立方程式を解きます.

実行結果は以下のようになります.

[0.0625 0.125  0.1875 0.125  0.25   0.375  0.1875 0.375  0.5625]
 Pythonでは非常に簡潔な記載で連立方程式が解けてしまいます.