(written by t. megane)
Pythonを使ってn元連立一次方程式を解きます.
C言語等の言語では数値計算で連立方程式を解くには,掃出し法をさせるコードを書いて・・・等と
割とめんどくさかったりしますが,Pythonのnumpyの中にあるlinalgというモジュールを使うと
非常に簡単に解くことができます,便利なものはどんどん使っていきましょう.
まずは以下の2元連立一次方程式を解いてみます.
これを解くために,連立方程式を行列の形で書きます.
行列の形にしたものがこちらになります,高校数学の内容ですね.
この行列をAx=Bといった感じで考えます.Aは左辺の2×2行列,Bは右辺の行列です
numpyのlinalgにあるsolve関数では,引数にこのA行列とB行列を与えてあげると
xに相当する,つまりは解の計算をしてくれます.コードはこんなかんじ。
from numpy import *
from numpy.linalg import *
def main():
a=array([[4,2],[3,1]])
b=array([1,2])
x=solve(a,b)
print(x)
if __name__ == '__main__':
main()
実行してみると,解として[1.5,-2.5]という値をだしてくれます
これで2元連立一次方程式が解けたというわけです.
続いて,変数を1個増やした3元連立一次方程式を解いてみます.
ソースコードはこんな感じ.
from numpy import *
from numpy.linalg import *
def main():
a=array([[4,2,2],[3,1,2],[1,1,1]])
b=array([1,2,4])
x=solve(a,b)
print(x)
if __name__ == '__main__':
main()
これで3元の連立一次方程式が解けちゃいます.べんり。