Pythonモジュール「SymPy」で行列の微積分をする方法をソースコード付きで解説します。
行列の微積分
Pythonモジュール「SymPy」では「Matrix.diff」で行列の微分を計算できます。
また「Matrix.integrate」で行列の積分を計算できます。
サンプルコード
サンプルプログラムのソースコードです。
行列の微分
行列Aの微分(変数x、y、xとyに対する)を計算するプログラムです。
# -*- coding: utf-8 -*-
from sympy import *
var("a:z") # a~zまで変数として扱う
# 行列Aの定義
A = Matrix([[1, x]
,[y, x*y**2]])
# 行列Aの微分
dxA = A.diff(x)
dyA = A.diff(y)
dxyA = A.diff(x,y)
# 計算結果の表示
print(dxA) # Matrix([[0, 1], [0, y**2]])
print(dyA) # Matrix([[0, 0], [1, 2*x*y]])
print(dxyA)# Matrix([[0, 0], [0, 2*y]])
if __name__ == '__main__':
main()
「変数x」、「変数y」、「変数xとy」に対する行列Aの積分を求めます。
行列の積分
# -*- coding: utf-8 -*-
var("a:z") # a~zまで変数として扱う
# 行列Aの定義
A = Matrix([[1, x]
,[y, x*y**2]])
# 行列Aの積分
ixA = A.integrate(x)
iyA = A.integrate(y)
ixyA = A.integrate(x,y)
#計算結果の表示
print(ixA) # Matrix([[x, x**2/2], [x*y, x**2*y**2/2]])
print(iyA) # Matrix([[y, x*y], [y**2/2, x*y**3/3]])
print(ixyA)# Matrix([[x*y, x**2*y/2], [x*y**2/2, x**2*y**3/6]])
| – | 関連ページ |
|---|---|
| 1 | ■【Python/SymPy】記号計算入門 ■Python入門 基礎文法とサンプル集 |

コメント