- ベストアンサー
ベッセル関数
円筒座標系での電磁場のマクスウェル方程式を磁場に関して解いて得られる解が複素数を引数とする0次のベッセル関数 AJ0(kr)、kが複素数、Aは実係数、rは実変数 で得られるのですが 引数を実数に変換する方法がわかりません。 純虚数の引数であれば実数の引数の変形ベッセル関数に変換でき、 実数の引数であれば手持ちの本にベッセル関数の値が載っているのですが 複素数の引数の場合の処理方法がわからなくて困っています。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
z = x+yi として z^2 = (x^2 - y^2) + 2xyi や r exp(iθ) = r (cosθ+i sinθ) みたいに,実部と虚部をうまく分離したような形で処理できないか, というご質問と思いますが, 一般にはこういうふうにうまくはいきません. 今の例で言えば, J0(z) = u(x,y) + iv(x,y) となるように u,v を定義することはもちろん可能ですが, u,v がよく知られた関数になるわけではありません(と思います). 複素変数のベッセル関数というより仕方がないでしょう. 計算センターなど科学計算用ライブラリにはたいてい 複素変数のベッセル関数のサブルーチンが入っています. あるいは,Cで書かれたソースなどもどこかにあるかも知れませんが ちょっと今は手が回りません.
その他の回答 (2)
- siegmund
- ベストアンサー率64% (701/1090)
siegmund です. http://oshiete1.goo.ne.jp/kotaeru.php3?q=195527 で uni050 さんご紹介のページからちょっとたどった http://www.netlib.org/cgi-bin/search.pl で,bessel と入れてサーチしてみて下さい. 沢山出てきます.
お礼
なるほど、いろいろとありがとうございました。 どうにかやってみます。
- siegmund
- ベストアンサー率64% (701/1090)
siegmund です. 級数展開自体は x を複素数 z にして Jn(z) = (z/2)^n Σ[{(-1)^n (z/2)^2n } / { n! Γ(n + m + 1 )}] でそのまま使えます. n が非整数ですと頭の (z/2)^n のブランチが悩ましいところですが, 整数なら心配は要りませんね. 級数展開は z=0 の一点の周辺の近似になりますから, 実際の数値計算で得かどうかはよくわかりません. 数値計算プログラムとしては,1点の周りで正確であるよりも 対象とする変数の範囲すべてで規定以上の精度を保証しないといけませんから. アルゴリズムはちょっと私の手に余ります. なお,Mathemtica には組み込み関数で BesselJ(n,z) があります. あと,Maple や それに似ている MuPAD にもあるかもしれません(未確認). MuPAD はある条件を満たせばフリーで使えるらしいです (私はまだ使ったことはありませんが). http://home.att.ne.jp/star/mathmodern/link/linkcontents.html などからリンクをたどってみてください.
お礼
なるほど、そのまま複素変数のベッセル関数として計算させるしかないわけですね。 ありがとうございます。 サブルーチンを探してみます。 どのような計算手法なのか知りたいので、 第1種ベッセル関数の解が Jn(x) = (x/2)^n Σ[{(-1)^n (x/2)^2n } / { n! Γ(n + m + 1 )}] であるように、複素変数のベッセル関数を数値計算する方法が詳しく載っている本などをもしご存知でしたら教えていただきたいです。