693びぼーろく; 部分積分を使わないで積分したい時

被積分関数の形によっては一時的に複素数にすると便利だったりするかも。例えば以下のような場合。 $\displaystyle \int_0^L dx e^{-kx}\sin \frac{\pi x}{L} $ 正統的な方法としては部分積分だろうなと思うけど、一時的に複素数にすることで次のように計算できる。 $\displaystyle \int_0^L dx e^{-kx}\sin \frac{\pi x}{L}=\text{Re}\int_0^L dx e^{-kx}e^{i\frac{\pi x}{L}}=\text{Re}\frac{1}{-k+i\frac{\pi}{L}}\left[-e^{-kL}-1\right]=-\frac{k}{k^2+\frac{\pi^2}{L^2}}\left[1+e^{-kL}\right]$

531びぼーろく; python上でのヤコビ楕円関数

 maximaから移行するにあたって色々と読み替え。pythonでは楕円関数はscipyに入っているらしい。あまり情報がないのでメモ。まず楕円関数は$y={\rm sn}(u,k)$は次の楕円積分の逆関数として定める:
\[u=\int_0^{\arcsin(y)} {\rm d}t \frac{1}{\sqrt{1-k^2\sin^2(t)}}\]
この$k$が母数(elliptic modulus)となる。 他にも${\rm cn}(u,k),{\rm dn}(u,k)$があるけど、調べればわかるので割愛。

さて、このヤコビ楕円関数をpython上で扱いたい場合にはscipyパッケージを使う。ただしelliptic modulus $k^2$の代わりにmを用いて表す。($m=k^2$)


import scipy
scipy.special.ellipj(u,m)

そうすると答えがリストとして返ってくる。その中身は $({\rm sn(u,\sqrt m)},{\rm cn(u,\sqrt m)},{\rm dn(u,\sqrt m)},\phi)$ となるので必要に応じて取り出す。
最後の項目$\phi$は楕円積分の結果を返してくる(らしい)。

それにしてもelliptic modulus の表記が色々あってややこしいと思うのは僕だけだろうか。
たまにmの代わりに$\sin \theta$を使う表記も見かけた気がする。

数値計算をしてみると、半年ぐらい前に解析的に求めた結果が実は間違っていたことが分かった。$\arcsin$の値域は$[-\pi/2,\pi/2]$なのに$[-\pi,\pi]$だと勘違いしていた。恥ずかしい...。
とはいえ予備的に始めた計算が割と順調に行き始めたのでちょっと満足。久しぶりに酒でも飲もうかな。

コメント

このブログの人気の投稿

471びぼーろく; ffmpegの音・映像ずれ修正

329びぼーろく; latexでヤング図を書く