• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

sympy

date: 2021-01-03 excerpt: sympyの使い方とチートシート

tag: pythonsympy


sympyのチートシート

概要

  • jupyter上で動作する数式を作成したり微分したり積分したり固有値を求めたりできるライブラリ
  • google colabはデフォルトでインストールされてサポートされており、ちょっとした計算をするのに便利

初期化

import sympy
from sympy import *
sympy.init_printing()

シンボル、変数の作成

  • なにか代入可能な値の変数 
x = symbols("x")
y, z = symbols("y, z")

定数の作成

  • 変数ではなく定数を扱いたい時
l = var("l") # ラムダの定数が作成される

予約された定数

sympy.E # ネイピア数
sympy.pi # パイ

式を展開

f = (2*x + 3) ** 4
display(f.expand())
\[16 x^{4} + 96 x^{3} + 216 x^{2} + 216 x + 81\]

式を分解

f = x**2 + 2*x + 1
display(f.factor())
\[\left(x + 1\right)^{2}\]

微分

((x + 1)**2).diff(x)
\[2 x + 2\]

二階微分

((x + 1)**2).diff(x, 2)
\[2\]

積分

(x).integrate(x)
\[\frac{x^{2}}{2}\]

定積分

integrate(exp(-x), (x, 0, oo))
\[1\]

関数の描画

plot(x**2 + 1)

方程式を解く

solve(2*x**2 + 2 -4)

連立方程式を解く

x, y = symbols("x, y")
solve([x+y-2, x -y - 0], [x, y])
\[\left\{ x : 1, \ y : 1\right\}\]

定数を使用してそのまま解く

a, b, c = var("a, b, c")
sol = solve([a*x + b*y - 2, a*x - b*y -c], [x, y])
display(sol)
\[\left\{ x : \frac{c + 2}{2 a}, \ y : \frac{2 - c}{2 b}\right\}\]

summation(サーメーション, Σ)

from sympy import *
x = symbols("x")
n = var("n")
f = x 
Sum(f, (x, 0, n)).doit().factor(n)
\[\frac{n \left(n + 1\right)}{2}\]

極限

x = symbols("x")
f = (1 + 1/x)**x
display(f)
display(limit(f, x, oo))
\[\left(1 + \frac{1}{x}\right)^{x}\] \[e\]

逆関数を求める

指数関数の逆関数を求める

import sympy
from sympy import Eq
l = sympy.var("lambda")
t, y = sympy.symbols('t y')
n = Eq(y,1 - sympy.E**(-l * t))
n # 指数関数を表示

# 式nをtについて解く
s = sympy.solve(n, t)
s[-1] # 逆関数が表示
  • sympy-inverse-example

行列

固有値を求める

m = Matrix([[0, 1-I, 1], [1+I, 0, 1-I], [1, 1+I, 0]])
display(m)
display(m.eigenvals())
\[\left[\begin{matrix}0 & 1 - i & 1\\1 + i & 0 & 1 - i\\1 & 1 + i & 0\end{matrix}\right]\] \[\left\{ 0 : 1, \ - \sqrt{5} : 1, \ \sqrt{5} : 1\right\}\]

google colabでのsimpy練習

  • colab


pythonsympy Share Tweet