一階線形非同次微分方程式#
\(p(x)\)と\(q(x)\)は恒等的に0ではない関数として扱うときの一階線形微分方程式を扱う.このとき,
の形式の微分方程式は一階線形非同次微分方程式と呼ばれる.
特殊解が既知のときの解法#
一階線形非同次微分方程式の解 \(y\) を求める際に,その特殊解 \(z\) が与えられているならば,同次微分方程式に帰着させることができる.では,与えられた一階線形非同次微分方程式が
として与えられ,その特殊解が \(z\) ならば,次の方程式も得られる.
これらの等式を引き算すると
ここで \(Y = y - z\) として考えると,\(\frac{dY}{dx} = \frac{dy}{dx} - \frac{dz}{dx}\) より
となり,これは一階線形同次微分方程式の形式となる.その一般解は任意定数\(C\)を用いて
として表され,\(Y = y - z\)より,本来求めたい関数 \(y\) について整理すると,
となり,一階線形非同次微分方程式の解が求めることができた.またこの解を見ると,その解が同次微分方程式の解 \(C e^{-\int p(x) dx}\) と特殊解 \(z\) の和となっていることがわかる.
特殊解が既知のときの解法の具体例#
では,次の一階線形非同次微分方程式を解いてみよう.ただし,特殊解として \(y = x - 1\) が与えられている.
解答はクリックで確認できる.
このとき,\(y = x - 1\) を考えると,\(\frac{dy}{dx} = 1\) より,上記の微分方程式を満たす解であることがわかる.これを特殊解として考える.非同次微分方程式の一般解は同次微分方程式の一般解と特殊解との和であったので,以下の同次形
の一般解が,
であったので特殊解との和をとると,前述の非同次形の一般解は
となる.
積分因子による解法#
この形式の微分方程式は積分因子法で解くことが一般的である.具体的には両辺に積分因子 \(e^{\int p(x) dx}\) を乗算すると以下の形に変形できる.
このとき,左辺の項に着目すると,関数 \(y\) と \(e^{\int p(x) dx}\) の関数の積 \(y e^{\int p(x) dx}\) の \(x\) に関する微分であることがわかる(参考:積の微分法則).
これを元に前述の式を書き換えると,
この式を\(x\)について積分すると一階線形非同次微分方程式の一般解が得られる.左辺については \(\frac{d}{dx} y e^{\int p(x) dx}\) が \(y e^{\int p(x) dx}\) の \(x\) に関する導関数であるので,それを \(x\) で積分する,つまり,結果は \(y e^{\int p(x) dx}\) となるのは当たり前である.
ただし,\(C'\)は積分定数とし,ここでは,任意定数 \(C=-C'\) とした.
積分因子による解法の具体例#
では,次の一階線形非同次微分方程式を解いてみよう.以下の微分方程式は \(p(x)=1, q(x)=x\) のときの場合である.
解答はクリックで確認できる.
まず積分因子 \(e^{\int p(x) dx}\) を計算する.ここで \(p(x)=1\) より,
となる.両辺に積分因子をかけると,
であり,左辺に着目すると関数 \(ye^x\) の微分になっているので(微分に注意 \((e^x)'=e^x\)),
両辺を \(x\) で積分し,\(y\) について整理する.
となり,一般解を導出できた.このとき,\(C\) は積分定数である.
定数変化法による解法#
一階線形非同次微分方程式の解を求めるにあたり,同次微分方程式の解を定数変化法というテクニックで変形し,解が同次微分方程式の解と特殊解の和となる性質から一般解を導出方法がある.これを紹介する.
ではまず同次微分方程式,
の一般解が
で与えられるところからスタートする.前述から解が同次微分方程式の解と特殊解の和となる性質がわかっているので,特殊解を求めるために,ここで積分定数 \(C\) を変数 \(x\) の関数 \(C(x)\) として特殊解 \(y_2\) を仮定する.
この同次微分方程式の一般解を求めたい非同次微分方程式に代入し,式変形をする.
として,関数\(C(x)\)の微分で整理することができた.右辺は変数 \(x\) の項のみなので\(x\)で積分すると,
ただし,ここで \(C'(x)\) の積分時に積分定数はこのあとまとめられるので省略する.得られた \(C(x)\) を \(y_2 = C(x) e^{-\int p(x) dx}\) に代入すると以下の特殊解 \(y_2\) が得られる.
最後に,前述から解が同次微分方程式の解と特殊解の和 \(y=y_1 + y_2\) となる性質から一般解 \(y\) が,
と求められることがわかる.この解は積分因子による解法と一致していることを確認されたい.
定数変化法による解法の具体例#
では,次の一階線形非同次微分方程式を解いてみよう.
解答はクリックで確認できる.
まずこの微分方程式の同次形
の一般解を考える.これは変数分離形で解くことができ,
となることを確認されたい.この一般解から特殊解を次のように仮定する.
ただし,\(C(x)は変数 \)x\( を持つ関数である.前述の式変形より,\)C’(x) = q(x) e^{\int p(x) dx}$ なので,具体的に計算すると,
これを \(x\) で積分すると,
となる.これを仮定した特殊解 \(y_2\) に代入すると,
となる.最後に,非同次形の一般解 \(y\) は同次形の一般解 \(y_1\) + 非同次形の特殊解 \(y_2\) だったので
と一般解を導出できた.ただし,任意定数 \(C=C_1+C_2\) とする.
Pythonによる実装#
では,具体例に挙げた微分方程式をsympyで解く.
from sympy import symbols, Eq, Derivative, Function, dsolve
# 変数と未知関数の定義
x = symbols('x')
y = Function('y')(x)
# dy/dxの定義
dy = Derivative(y, x)
# 微分方程式の定義
eq = Eq(dy + y, x)
# 微分方程式を解く
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()
Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.
Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.
