クレロー型微分方程式#
クレロー型微分方程式(Clairaut’s equation) は以下の形式を持つ微分方程式である
ここで関数 \(f\) は\(\frac{dy}{dx}\) の関数である.
クレロー型微分方程式の解法#
クレロー型微分方程式の解は関数 \(f\) の形に依存するが,導関数 \(\frac{dy}{dx}\) について解くまでの一般解の導出を行う
まず導関数 \(\frac{dy}{dx}\) を別の関数 \(p\) に置き換える.式は
となる.続いて,上式を\(x\)で微分する.\(y,p\) ともに\(x\)の関数であることに注意すると
となる.第三式が成り立つためには,
もしくは
である必要がある.前者の条件は2階微分すると0ということは導関数は定数,つまり
であるため,一般解は
となる.一方,後者の条件については,以下の方程式より,\(p\)を消去することで \(C\) を含まない特殊解を導出できる.
ただし,関数 \(f\) の形に応じては解を求めることができないので注意されたい.
クレロー型微分方程式の具体例#
次の微分方程式を解いてみよう.
解答はクリックで確認できる.
この微分方程式は,クレロー型の微分方程式であるので \(p=\frac{dy}{dx}\)として式を変形すると,
このとき,\(y\) と \(p\) が \(x\) の関数であることに注意して両辺を \(x\) を微分する.
この等式が成立するためには,
もしくは
である必要がある.前者の条件は2階微分すると0ということは導関数は定数,つまり
であるため,一般解は
となる.後者の条件は,\(p=-x/2\)より,式に代入すると,
という特異解が得られる.
特異解
特異解 とは一般解の任意定数 \(C\) にどのような値を取っても得られない解のことを言う.特殊解は一般解の任意定数を初期条件で固定した解であり,混同しないように注意されたい.
そして,この特異解は得られた曲線に全てに接している曲線である 包絡線 となっている.
包絡線
包絡線(envelope) とは \(\alpha\) をパラメータとする微分可能な関数 \(F(x,y,\alpha)\) が与えられたとき,この関数に接して、かつ接線が軌跡となっている曲線である.ほうらくせんと読む.
Pythonによる実装#
では,上記の微分方程式をsympyで解く.ただし,クレロー型であっても微分方程式の形によってはsympyでは計算できない場合があることに注意されたい.
from sympy import symbols, Eq, Derivative, Function, dsolve
# 変数と未知関数の定義
x = symbols('x')
y = Function('y')(x)
# dy/dxの定義
dy = Derivative(y, x)
# 微分方程式の定義
eq = Eq(y, dy*x + dy**2)
# 微分方程式を解く
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(-1, 1, N):
eqs.append(y_.rhs.subs(symbols('C1'), c))
p = plotting.plot(*eqs, (x, -5, 5), 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.
