LoginSignup
1
0

More than 3 years have passed since last update.

PythonとSymPyで連立常微分方程式を解く。

Last updated at Posted at 2020-04-21

ここではPythonにsympyをインストールして連立常微分方程式を解いてみたいと思います。

sympyのサイト

ウォーミングアップ

まずはsympyを用いた基本的な関数の微分の例を書いておきます。

import sympy as sym
x = sym.Symbol('x')
h = x**3 + 3*x + 1
h.diff(x,1)

連立一次常微分方程式

ではおもむろに連立一次常微分方程式を解いてみましょう。

x = sym.Symbol('x')
f = sym.Function('f')
g = sym.Function('g')
h = sym.Function('h')
eq1 = sym.Eq(f(x).diff(x,1),g(x)+h(x))
eq2 = sym.Eq(g(x).diff(x,1),h(x)+f(x))
eq3 = sym.Eq(h(x).diff(x,1),f(x)+g(x))
sym.dsolve([eq1, eq2, eq3])

偏微分方程式には対応してない?

調子に乗って偏微分方程式を解いてみましょう。

偏微分の計算自体は可能です。

x = sym.Symbol('x')
y = sym.Symbol('y')
u = x**2 - y**2
u.diff(x,1)

しかし、以下の様な計算をさせようとしても上手く答えが出てきません。

x = sym.Symbol('x')
y = sym.Symbol('y')
u = x**2 - y**2
v = sym.Function('v')
eq1 = sym.Eq(u.diff(x,1), v(x,y).diff(y,1))
eq2 = sym.Eq(u.diff(y,1), -v(x,y).diff(x,1) )
sym.dsolve([eq1, eq2])

う~む…。大学2年生相当くらいまでは対応していて、3年生相当以上になるとまだちょっと対応できてないのですかね。(;^_^A

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0