【Python/SymPy】行列の微積分

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

コメント