• 締切済み

ベッセル関数のゼロ点を求めるプログラム

ベッセル関数のゼロ点(x軸との交点)を小さい順に10個求めるプログラムを作りたいのですが、プログラム作成に不慣れなもので困っています。 参考程度でもいいのでどなたかお教え願えませんでしょうか? よろしくお願いします。 ちなみにベッセル関数は第1種でして、プログラムはMatlabを使おうと思います。

みんなの回答

  • neuralnet
  • ベストアンサー率35% (14/39)
回答No.2

matlab にはベッセル関数を求めるライブラリが存在します。 著作権侵害になるのでここには乗せることはできませんが、 プログラムソースを簡単に閲覧することができます。 edit besselとコマンドウィンドウに打ち込むと besselのソースコードを読むことができます。 bessel ではbesseljが呼び出されています。 edit besselj とコマンドウィンドウに打ち込むと besselchk と besselmxが読み出されています。 おそらくbesselchkとbesselmxが御所望のプログラムです。 このソースコードをデバッグしながらいろいろ試せば 何をやっているのかわかると思います

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

プログラムは分かりませんが、 ベッセル関数の零点を下の計算サイトで計算してくれます。 同サイトの下にベッセル関数J_ν(x)の級数展開式が書いてありますので プログラムを作成する場合に役立つかも知れません。 sを1,2,3, ..., 10 まで与えて計算すれば小さい方からs番目の零点を 順に計算してくれます。 http://keisan.casio.jp/has10/SpecExec.cgi?path=08000000%2e%93%c1%8e%ea%8a%d6%90%94%2f04000100%2e%83x%83b%83Z%83%8b%8a%d6%90%94%2f10010200%2e%83x%83b%83Z%83%8b%8a%d6%90%94%81i%8bt%8a%d6%90%94%81j%2fdefault%2exml

関連するQ&A

  • ベッセル関数の零点

    円形膜の振動を考えた時にその解はベッセル関数を用いて表されると思うのですが、第1種ベッセル関数の零点を求める際に必要なm,nの値はどのように決定すればいいのでしょうか。 よろしくお願いします。

  • ベッセル関数の零点

    たとえばJ_{1/2}(x)=sin x/x^{1/2}ですが(定数倍は無視することにします)この最初の正の零点はπであることは直ちにわかります。そこでパラメータtを用意して、J_{1/2}(tx)の最初の零点を考えるとπ/tになるかと思います。これはtの関数とみて(0,∞)上無限階微分可能です。そこでこれを一般化してベッセル関数J_ν(tx)の最初の正の零点をj(ν,t)と表わすことにしたとき、j(ν,t)はtの関数とみたとき(0,∞)上どの程度滑らかな関数になるのか、ということを考えてみました。 直感的に連続であることは自明で、それは証明できると思うのですが、どれぐらい微分できるのか、といったことがらはベッセルの零点を具体的に関数表示できないので、それを調べる方法を思いつきません。何か方法をご存知ある方はいらっしゃいませんか。 知りたいのはν=1/2,1,3/2,…という場合についてです。一般次元でのシュレディンガー作用素の固有値問題を考えていますので。

  • 第1種変形ベッセル関数

    第1種変形ベッセル関数をFortranで書くとどのようなプログラムになるのでしょうか。 Fortran初心者です。よろしくお願いします。

  • 0次と1次の第2種変形ベッセル関数の関係

    0次の第2種変形ベッセル関数 K_0(x)は微分することで 1次の第2種変形ベッセル関数 K_1(x)と一致します。 つまり、 d/dx [ K_0(x) ] = - K_1(x) という関係があります。 一方で、 K_1(x) = f ( K_0(x) ) あるいは K_0(x) = f ( K_1(x) ) のように関数による関係はございますでしょうか? 手元にある特殊関数の書籍を見てみましたが載っていませんでした。 どなたかご存じでしたら教えてください。

  • 整数次の第二種ベッセル関数(ノイマン関数)の微分

    第二種ベッセル関数Nn(x)のxに関する微分を計算することを考えています。整数次のとき、極限が現れますが,ノイマン関数のxに関する微分の計算はどのように行えばよいのでしょうか。 第一種ベッセル関数の値とその微分値,ノイマン関数の値を用いた計算はできています。数値計算で計算することを考えていますので、これらの値を再利用する手法などがあれば、ぜひ教えて頂ければ幸いです。 ご存じの方がいらっしゃいましたら、ご教授よろしくお願い致します。

  • 複素数を引数とする(?)ベッセル関数

    皆様,お忙しい所回答お願いいたします。 一度他の方が似たような質問があったのですが,それだけでは解決できなかったので再度質問させていただきます。 質問はタイトルの通り,複素数を引数zとするベッセル関数Jn(z)がどうなるのか分かりません。 さまざまな参考書では実数もしくは純虚数をを引数とするベッセル関数の理論やプログラムのサブルーチンはあるのですが,複素数に関しては見つかりません。 大きな数学辞典を見ても,載っている数表は引数が実数のものばかりです。 どうしてこのような関数を必要としているのかというと,電磁界の円柱散乱問題の所で円柱媒質が導電率σを持つ損失性媒質の場合,波数kが複素数となり円柱内部電磁界の解析解に含まれるベッセル関数の引数が複素数となってしまうからです。(Jn(kr)という風に) 複素数を引数zとするベッセル関数Jn(z)の理論について,ご教授の方何卒お願いいたします。 また,参考文献等ありましたらそちらもご教授お願いいたします。

  • 平面波exp(-jx)をベッセル関数を用いてあらわすと・・・

    円筒波動関数について勉強しています。 今、平面波exp(-jx)を円筒座標系で表そうとしているのですが、その変換式が Σa*Jn(ρ)*exp(jnΦ) (Σはn=-∞~n=∞まで)と表されています。 aは定数、Jn(ρ)はn次の第一種ベッセル関数、ρは円筒座標系の原点から外に伸びていく変数、Φは円筒座標系のxy面上の角度 この式について、わからないことがあります。 なぜこの式がx方向に進む平面波を表すのでしょうか?定性的なことが理解できません。 しかも第一種ベッセル関数は進行波でないのに進行波をあらわしている。 このこともさらに混乱を深めています。 どのように理解すればよいのでしょうか? あまりベッセル関数に関する知識がないのでできれば優しくおねがしします。 勉強している本はR.F.Harringtonのtime-harmonic electromagnetic fields です。

  • ベッセル関数を含む超越方程式の解

    お忙しい所,回答の方お願いいたします。 私は現在,以下のようなベッセル関数を含む超越方程式 Xn*J1(Xn)=a*J0(Xn)(a:正定数,n=1,2,・・・) の任意の正定数aを設定した時の解Xnを得たいと考えています。 おそらく数値的に解くのだと思いますが,様々な数値計算プログラミングに関する本を調べているのですが載っておらず,悩んでいます。 私の今の考えはまず f(x)=x*J1(x)-a*J0(x)=0 の関数のプログラムを組んでグラフを作り,x軸と交わる位置から解の範囲を定めて,ニュートン法や2分法などを使用して解くというものです。 しかし,この方法に自信がありません。 もし「他に簡単な方法がある!」,「このやり方ではこういう点が難しく解けない!」などございましたら 回答の方,何卒よろしくお願いいたします。

  • 頂点と通過する1点を与えらた二次関数

    二次関数の問題です。 全く分からなくて困っています。 どなたか教えて下さい。 頂点の座標が(-1,6)で点(3,-2)を通る2次関数のグラフがある。この2次関数のグラフとx軸との交点をそれぞれA,Bとする時線分ABの長さを求めなさい。 択一式の問題なので正確な数が出ないかもしれません。

  • 二次関数

    二次関数のy=2x2+4xの頂点x軸との交点およびy軸との交点の座標を求める問題がよくわからないので解説お願いします。