$ Ax=B $ をPythonで解く方法

キーワード: python, numpy, jupyter notebook, anaconda

  • PythonはWindowsでもmacOSでも無料で使える
  • iOSだとPythonista 3が有料だが使える

何が便利か

式を立てた時点で検算が出来る

注意点

あくまでも答えを求めるものであって過程までは示してくれない。

$$ \left[\begin{array}{cc} 10+20j & 20j \\ 20j & -10j \end{array} \right] \left[ \begin{array}{c} x_1 \\ x_2 \end{array} \right] = \left[ \begin{array}{c} 100\\ 100j \end{array} \right] $$

を$Ax=B$として考え,以下のようにA, Bを作る。


In [ ]:
import numpy as np
A = [[10+20j, 20j], [20j, -10j]]
B = [100, 100j]

行列式

  • 行列式はnp.linalg.det(A)

In [6]:
delta = np.linalg.det(A)
print(delta)


(600-100j)

解くときはsolve(A, B)


In [7]:
x = np.linalg.solve(A, B)
print(x)


[ 3.51351351-1.08108108j -2.97297297-2.16216216j]

極形式へ

  • 直接の変換はできないので大きさと偏角を個別に求める
    • 大きさ: np.abs
    • 偏角: np.angle
  • 角度単位はradianなのでdegreeとradianの変換が必要
    • degreeからradianへ: np.radians
    • radianからdegreeへ: np.degrees

大きさ


In [8]:
print(np.abs(x))


[ 3.67607311  3.67607311]

偏角


In [9]:
print(np.degrees(np.angle(x)))


[ -17.10272897 -143.97262661]

※この手の線形代数については演習室PCで使えるソフトとしてはMATLABやMathematicaがある