2次の分数関数の積分とhyperbolic tangentへの変換
2次の分数関数の積分とhyperbolic tangentへの変換
2次の分数関数$\frac{1}{ax^{2}+bx+c}$の積分の導出とhyperbolic tangentへの変換メモ.
まず平方完成する
分母$ax^{2}+bx+c$を平方完成する.
$$ ax^{2} + bx + c = a(x^{2} + b/a x + c/a)\\ = a{ (x+\frac{b}{2a})^{2} + \frac{c}{a} - \frac{b^{2}}{4a^{2}} }\\ = a{ (x+\frac{b}{2a})^{2} + \frac{1}{a}(c - \frac{b^{2}}{4a}) }\\ = a{ (x+\frac{b}{2a})^{2} + \sqrt{\frac{1}{a}(c - \frac{b^{2}}{4a})}^{2} }\ $$
これで$X^{2} + K^{2}$の形になった.
$1/(x^{2} + k^{2})$の積分を求める
$1/(x^{2} + k^{2})$の積分を求める.これは$\tan^{-1}{(x/k)}/k$(arc tangent)の形になる.
$y = \frac{1}{k}\tan^{-1}{(x/k)}$の微分を考える.
$$ ky = \tan^{-1}{(x/k)}\ x/k = \tan{ky}\ x = k \tan{ky} $$
$\tan{x} = \sin{x}/\cos{x}$より
$$ x = k \tan{(ky)}\ = k\frac{ \sin{(ky)} }{ \cos{(ky)} } $$
これをyで微分する.
$$ \frac{dy}{dx} = \frac{1}{k^{2} }\frac{1}{\frac{1}{ \cos{(ky)}^{2} } } $$
$\cos{(ay)}^2$を変換する.
よって,
$$ \frac{dy}{dx} = \frac{1}{k^{2} }\frac{1}{1 + \tan^{2}{(ky)} } \\ = \frac{1}{k^{2} +( k\tan{(ky)})^{2} } \ $$
今,$x=k\tan{(ky)}$より
$$ \frac{d}{dx}(\frac{1}{k}\tan^{-1}{(x/k)}) = \frac{1}{ x^{2} + k^{2} } \ $$
$$ \int \frac{1}{x^{2} + k^{2} } dx = \frac{1}{k}\tan^{-1}{(x/k)} $$
平方完成した式を積分する
$a{ (x+\frac{b}{2a})^{2} + \sqrt{\frac{1}{a}(c - \frac{b^{2}}{4a})}^{2} }$ を積分する.
$$ X = (x+\frac{b}{2a}) \ K = \sqrt{\frac{1}{a}(c - \frac{b^{2}}{4a})}\ $$
とおくと,
$$ a{ (x+\frac{b}{2a})^{2} + \sqrt{\frac{1}{a}(c - \frac{b^{2}}{4a})}^{2} } = a( X^{2} + K^{2} ) $$
よって,積分は,
$$ \frac{1}{a} \int \frac{1}{ X^{2} + K^{2} } dX = \frac{1}{a} \cdot \frac{1}{K}\tan^{-1}{(X / K)} $$
$X$と$K$を戻すと,
よって,
可視化
$x=0$を開始点として,積分の初期値を0として$y=\frac{1}{ax^{2}+bx+c}$とx軸間の面積を求める場合,
$$ 0 = \frac{1}{\sqrt{4ac - b^{2}}} 2\tan^{-1}{[\frac{2a \cdot 0 + b}{\sqrt{4ac - b^{2} }}]}+C \\ C = -\frac{1}{\sqrt{4ac - b^{2}}} 2\tan^{-1}{[\frac{b}{\sqrt{4ac - b^{2}}}]} $$
よって,
可視化用コード:
import numpy as np import matplotlib.pyplot as plt a = 1 b = 1 c = 1 x = np.linspace(0, 1) f = 1 / ( a * x**2 + b * x +c ) fig = plt.figure(figsize=(5,5)) plt.plot(x, f, label="$1/(ax^2+bx+c)$") beta = np.sqrt(4*a*c - b*b) inte = (2*np.arctan((2*a*x+b)/beta))/beta C = -2*np.arctan(b/beta)/beta inte += C plt.plot(x, inte, label="integral") plt.xlim(-.1, 1.1) plt.ylim(-.1, 1.1) plt.legend() plt.grid(True) plt.title("a=1, b=1, c=1") plt.savefig("(ax2+bx+c)-1_integral.png") plt.show()
hyperbolic tangentへの変換
今,変数分離型の次の微分方程式があるとする.
- $C$は積分定数
これをarc tangentからtangentへ変換する.
$\tan{x}$をオイラーの公式で表す
$$ \sin{x} = \frac{e^{ix} - e{-ix}}{2i}\ \cos{x} = \frac{e^{ix} + e{-ix}}{2} $$
ここで$i=\sqrt{-1}$の虚数単位
よって,
$$ \tan{x} = \frac{\sin{x}}{\cos{x}}\ = \frac{e^{ix} - e{-ix}}{i(e^{ix} + e{-ix})} $$
$ \tan{x} $をへ変換する
hyperbolic tangentの定義は
tanの式を変形して上記の形にする.
よって,
ちなみにsinh, cosh, tanh, tanを可視化すると
tanの無限に上昇にする部分がhyperbolic tangentでは裏返しのようにされて$\pm 1$へ収束するようになっている.
可視化コード:
# 双曲線 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1, +1, 1000) sinh = (np.exp(x) - np.exp(-x))/2 cosh = (np.exp(x) + np.exp(-x))/2 tanh = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)) tan = (np.tan(x)) plt.plot(x, sinh, label="sinh") plt.plot(x, cosh, label="cosh") plt.plot(x, tanh, label="tanh") plt.plot(x, tan, label="tan") # plt.plot(x, 1/tanh, label="1/tanh") plt.legend() plt.grid(True) plt.savefig("img/img_chapter7/sinh_cosh_tanh_tan.png") plt.show()
hyperbolic tangentへ変形
次の左辺をhyperbolic tangentへ変形する.
$$ \tan{\left[ \frac{\sqrt{ (4ac - b^{2}) }}{2} (F(t)+C) \right]} = \frac{(2ax+b)}{ \sqrt{(4ac - b^{2})} } $$
$x$の式に直す.
この式はSIRモデルのRecoveredを時間tの関数に直すと出てくる.