一階線形同次微分方程式#
線形微分方程式#
線形微分方程式とは線形性を持つ微分方程式である.微分方程式を
と定義する,ここで\(y'=\frac{dy}{dx}\)であり,実定数 \(\alpha,\beta\)に対して,
が成立すれば微分方程式が線形であり,その微分方程式を線形微分方程式と呼ぶ.
一階線形微分方程式#
ここでは一階線形微分方程式に着目し,その解法を紹介する.まず一階線形微分方程式は以下の形式で表される微分方程式である.
ここで\(p(x)\)と\(q(x)\)は\(x\)の関数である.ここで\(p(x)\)と\(q(x)\)はすべての入力に対して0を出力しないという点に留意されたい.もし0を出力する場合,この関数は恒等的に0ではない関数と呼ばれ,この形式の微分方程式は変数分離形に容易に求めることができる.
一階線形同次微分方程式#
上記では,\(p(x)\)と\(q(x)\)は恒等的に0ではない関数であると説明したが,ここでは,\(q(x)=0\)のときの微分方程式を考える.このとき微分方程式は以下のように変形できる.
このときの微分方程式を一階線形同次微分方程式と呼ぶ.
一階線形同次微分方程式の解法#
上記に示した一階線形微分方程式の一般解は変数分離形で容易に計算できる.まず左辺には\(y\)に関する項を,右辺には\(x\)に関する項となるように式変形を行う.
次に,両辺を積分する.
これを解くと,以下の解が得られる.
ここで,\(C'\)は積分定数である.第4回の式展開でも紹介したように,\(\log |y| = x \rightarrow e^x = |y|\) であり,絶対値を外すと,\(y=\pm e^x\) となる.従って,上記の一般解は \(y(x)\)の形に書き換えることができる.
ここで,\(C=\pm e^{C'}\)とした.
一階線形同次微分方程式の具体例#
では,次の一階線形同次微分方程式を解いてみよう.以下の微分方程式は \(p(x)=x\) のときの場合である.
解答はクリックで確認できる.
まず,左辺に \(y\) のみ,右辺に \(x\) の項のみとなるよう変数分離形に整理すると,
となる.続いて,両辺を積分する.
積分定数を \(C'\) とすると以下となる.
\(y\) について整理すると,
となり,一般解が得られた.ここで,\(C=\pm e^{C'}\)とした.
Pythonによる実装#
では,上記の微分方程式をsympyで解く.単一のセルで作成したが,各行での動作は前回の講義のようにStep-by-stepで確認されたい.
from sympy import symbols, Eq, Derivative, Function, dsolve
# 変数と未知関数の定義
x = symbols('x')
y = Function('y')(x)
# dy/dxの定義
dy = Derivative(y, x)
# 微分方程式の定義
eq = Eq(dy + x*y, 0)
# 微分方程式を解く
y_ = dsolve(eq, y)
y_
import numpy as np
from sympy import plotting
import matplotlib.pyplot as plt
N = 10
eqs = []
for c in np.linspace(-3, 3, N):
eqs.append(y_.rhs.subs(symbols('C1'), c))
p = plotting.plot(*eqs, (x, -2, 2), show=False)
cm = plt.get_cmap('magma', N)
for i in range(cm.N):
p[i].line_color = cm(i)
p.show()
