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入門 基礎文法とサンプル集 |
コメント