はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

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で微分する.


\begin{eqnarray*}
\frac{dx}{dy}
&=& k\frac{d}{dy}\frac{ \sin{(ky)} }{ \cos{(ky)} }\\\\
&=& k \frac{\sin'{(ky)}\cos{(ky)} - \sin{(ky)}\cos{(ky)'} }{\cos{(ky)}^{2}}\\\\
&=& k \frac{k\cos{(ky)}^{2} + k\sin{(ky)}^{2} }{\cos{(ky)}^{2}}\\\\
&=& \frac{k^{2} }{\cos{(ky)}^{2}}
\end{eqnarray*}

逆関数微分より

$$ \frac{dy}{dx} = \frac{1}{k^{2} }\frac{1}{\frac{1}{ \cos{(ky)}^{2} } } $$

$\cos{(ay)}^2$を変換する.


\cos^2{(ky)} + \sin^{2}{(ky)} = 1 \\\\
1 + \frac{\sin^{2}{(ky)}}{\cos^2{(ky)}} = \frac{1}{\cos^2{(ky)}} \\\\
\frac{1}{\cos^2{(ky)}} = 1 + \tan^{2}{(ky)}  \\\\

よって,

$$ \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$を戻すと,


\begin{eqnarray*}
\frac{1}{a}  \cdot \frac{1}{K}\tan^{-1}{(X / K)}
&=& \frac{1}{a} \cdot \sqrt{\frac{a}{(c - \frac{b^{2}}{4a})}} \tan^{-1}{\left[ (x+\frac{b}{2a}) \sqrt{ \frac{a}{(c - \frac{b^{2}}{4a})} } \right] } \\\\
&=& \sqrt{\frac{1}{(ac - \frac{b^{2}}{4})}}\tan^{-1}{\left[ \frac{2a}{2a}(x+\frac{b}{2a}) \sqrt{ \frac{a}{(c - \frac{b^{2}}{4a})} } \right]} \\\\
&=& \sqrt{\frac{1}{(ac - \frac{b^{2}}{4})}}\tan^{-1}{\left[ (2ax+b) \sqrt{ \frac{1}{(4ac - b^{2})} } \right]} \\\\
&=& \frac{2}{2}\sqrt{\frac{1}{(ac - \frac{b^{2}}{4})}}\tan^{-1}{\left[ (2ax+b) \sqrt{ \frac{1}{(4ac - b^{2})} } \right]} \\\\
&=& \frac{1}{ \sqrt{ (4ac - b^{2}) } }2\tan^{-1}{ \left[ \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} } \right] } \\\\
\end{eqnarray*}

よって,


\begin{eqnarray}
\int \frac{1}{ax^{2} + bx + c} dx
= \frac{1}{ \sqrt{ (4ac - b^{2}) } }2\tan^{-1}{ \left[ \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} } \right] } + C \\\\
\end{eqnarray}

可視化

$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}}}]} $$

よって,


\begin{eqnarray}
\int \frac{1}{ax^{2}+bx+c} dx
= \frac{2}{\sqrt{4ac - b^2}} \left( \tan^{-1}{[ \frac{2ax + b}{\sqrt{4ac - b^2}}] } - \tan^{-1}{[ \frac{b}{\sqrt{4ac - b^2}} ]} \right) \\
\end{eqnarray}

fig. $1/(ax^{2}+bx+c)$の積分

可視化用コード:

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への変換

今,変数分離型の次の微分方程式があるとする.


\begin{eqnarray*}
\frac{dx}{dt} &=& (ax^{2}+bx+c)f(t)\\\\
\int \frac{1}{(ax^2+bx+c)} dx &=& \int f(t) dt \\\\
\frac{1}{ \sqrt{ (4ac - b^{2}) } }2\tan^{-1}{ \left[ \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} } \right] } &=& F(t) + C 
\end{eqnarray*}

これをarc tangentからtangentへ変換する.


\begin{eqnarray*}
\tan^{-1}{ \left[ \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} } \right] } &=& \frac{\sqrt{ (4ac - b^{2}) }}{2} (F(t)+C) \\\\
\tan{\left[ \frac{\sqrt{ (4ac - b^{2}) }}{2} (F(t)+C) \right]}
&=& \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} } \\\\
\end{eqnarray*}

$\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} $を \tanh{x} へ変換する

hyperbolic tangentの定義は


\begin{eqnarray*}
\tanh{x} = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
\end{eqnarray*}

tanの式を変形して上記の形にする.


\begin{eqnarray*}
-i\tan{(ix)}
&=& -i \frac{e^{i^2 x} - e{-i^2x}}{i(e^{i^2x} + e{-i^2x})} \\\\
&=& - \frac{e^{- x} - e{x}}{(e^{-x} + e{x})} \\\\
&=& \frac{e{x} - e^{- x}}{e^{-x} + e{x}} \\\\
&=& \tanh{x}
\end{eqnarray*}

よって,


\begin{eqnarray*}
-i\tan{(ix)}
= \tanh{x} \\\\
\tan{(ix)} = i\tanh{x}
\end{eqnarray*}

ちなみにsinh, cosh, tanh, tanを可視化すると

fig. 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})} } $$


\begin{eqnarray*}
\tan{\left[ \frac{\sqrt{ (4ac - b^{2}) }}{2} (F(t)+C) \right] }
&=& \tan{\left[ \frac{\sqrt{ -( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
&=& \tan{\left[ \frac{\sqrt{ i^2 ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
&=& \tan{\left[ \frac{i \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
&=& i \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
\end{eqnarray*}

 \begin{eqnarray}
i \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] }
= \frac{(2ax+b)}{  \sqrt{(4ac - b^{2})} }
\end{eqnarray}

$x$の式に直す.


\begin{eqnarray*}
2ax + b &=&  \sqrt{(4ac - b^{2})} i \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
2ax + b &=&  - \sqrt{(b^{2}-4ac)}  \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
2ax &=& -b  - \sqrt{(b^{2}-4ac)}  \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] } \\\\
x &=& \frac{-b  - \sqrt{(b^{2}-4ac)}  \tanh{\left[ \frac{ \sqrt{  ( b^{2} - 4ac) }}{2} (F(t)+C) \right] }}{2a}
\end{eqnarray*}

この式はSIRモデルのRecoveredを時間tの関数に直すと出てくる.