• 締切済み

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

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

みんなの回答

  • adinat
  • ベストアンサー率64% (269/414)
回答No.1

高校数学でもそうですが、パラメータ付きの関数の零点を求める問題は、変数分離法というのが基本です。コンピュータでの数値計算でもそうですが、パラメータを入れてのグラフ描画などは難しいことが多いこと、また変数を分離させて残った関数が、わりに扱いやすい関数になる可能性があること、があるからです。とはいえ万能とは限らないので、もちろんdaitasuki様の提示されたような方法でも問題はありません。 以下、一例です。変数分離させて、xJ1(x)/J0(x)=aという方程式を考えます。左辺をf(x)=xJ1(x)/J0(x)とおきましょう。これは0次ベッセルの零点に一位の極(関数が定義できない点)を持つ、単調増大な関数です。フリーソフトでもこの関数を描画できるソフトがあります。またJ0とJ1の零点は交互に訪れます。たとえればsinとcosの関係ですね。またf(0)=0です。ここから単調に増大して、最初のJ0の零点=2.40482…で∞になります。ここでいったん-∞になって、また単調増加して、J1の最初の零点=3.83170…で0になります。さらに増大して、J0の2番目の零点=5.52007…で再び∞になります。また-∞になって単調増大して、以下これを繰り返します。ベッセル関数の零点は詳しく調べられていて、特殊関数の数表などいろいろなところに載っていますし、プログラムを組んで簡単に調べることもできます。このことを利用すれば、f(x)=aのn番目の解は、J1のn-1番目の零点からJ0のn番目の零点の間に存在することが分かります。これに留意してニュートン法なり2分法なりを用いて解の探索を行ってください。 この問題に限らず、ニュートン法を使うときに留意すべきことは、初期値のとり方を工夫しないとどの解に収束するかが分からない、ということです。大まかでもいいからグラフをイメージして、初期値をどこにとれば、狙った解に収束させることができるかを考えてからプログラミングすべきです。多少アナログ的な考えですが、そうすれば望んだ解が直ちに得られると思います。 以下J0とJ1の零点を参考までに10番目まで計算させましたので、参考にしてください。 J0 1st zero = 2.4048255576957727686216318793264546431242449091460 2nd zero = 5.5200781102863106495966041128130274252218654787829 3rd zero = 8.6537279129110122169541987126609466855657952312754 4th zero = 11.791534439014281613743044911925458922022924699695 5th zero = 14.930917708487785947762593997388682207915850115633 6th zero = 18.071063967910922543147882975618176560248986747001 7th zero = 21.211636629879258959078393350526306836181808975976 8th zero = 24.352471530749302737057944763178907184569372675149 9th zero = 27.493479132040254795877288234607414546529568860550 10th zero = 30.634606468431975117549578926854232737273571629178 J1 1st zero = 3.8317059702075123156144358863081607665645452742878 2nd zero = 7.0155866698156187535370499814765247432763115029010 3rd zero = 10.173468135062722077185711776775844069819512500192 4th zero = 13.323691936314223032393684126947876751216644731358 5th zero = 16.470630050877632812552460470989551449438126822273 6th zero = 19.615858510468242021125065884137509850247402661881 7th zero = 22.760084380592771898053005152182257592905370738073 8th zero = 25.903672087618382625495855445979874287905427031367 9th zero = 29.046828534916855066647819883531961100414171793084 10th zero = 32.189679910974403626622984104460369219052867711015

daitasuki
質問者

お礼

回答ありがとうございます。 また,わざわざJ0とJ1の零点の計算結果まで載せていただき,ありがとうございます。 非常に丁寧な説明をしていただき,関数f(x)=xJ1(x)/J0(x)のイメージがよく分かりました。 念のためプログラムを作ってグラフを書いてみましたが,イメージ通りでした。 これを元に,y=a(ためしにa=1.0)との交点から解の範囲を定めて二分法もしくはRegula-falsi法で数値的に解いた所,文献にある5番目(n=5)までの解(この解の解き方がこの文献に載ってなかったのです。)と良好な一致を示す数値解が得られました。 ずっと悩んでいた部分が解決され,すっきりしました。 改めて御礼を申し上げます。 ありがとうございました。

関連するQ&A

  • ベッセルの微分方程式

    テキストによると、円筒座標系での電磁場のマクスウェル方程式を磁場に関して解いて得られる方程式が f’’+1/x*f’+k^2*f=0 解はベッセル関数 AJ0(kx)+BY0(kx) A,Bは定数 しかしこの方程式は一般的なベッセルの微分方程式と少し違います。 x^2f’’+xf’+x^2f=0 x^2で割り算してるのはともかく、係数kの分だけ違うのです。これでもベッセルの微分方程式であり解はベッセル関数であると言えるのでしょうか?

  • パラメータ付き超越方程式の解の滑らかさ

    先日Besselの零点とかいう変な質問をしてしまったのですが、再度考えなおした結果、次のような問題に帰着しました。 sin x + {x/√{2ta^2-x^2}}cos x = 0 という超越方程式を考えます。ただし 0<x<√{2t}a,t>π^2/{8a^2},aは正の定数とします。この超越方程式はx=0が解ですが、0<x<√{2t}aの範囲に少なくとも一つは解が存在することはグラフを見ればすぐにわかります。そこで、0<x<√{2t}aでの解のうちで最小のものをr(t)と書くことにします(a>0は定数とみて動かさないことにします)。このときr(t)がtについての連続関数になるのは直感的に自明なのですが、微分可能性や、より高階の微分可能性、あるいは実解析的か?ということを考えたいのですが、何かよい方法をご存知の方いらっしゃいませんか? 最近mathematicaやmapleの使い方を勉強したりしているのですが、まだ使いこなせてはいないです。計算機を援用する方法でもありがたいです。よろしくお願いします。

  • 超越方程式

    前の質問を締め切っていないのに新しい質問をさせて頂きます。いわゆる超越方程式は四則やベキ根では解けませんが、解を初等関数で表わせれば十分と思われます。超越方程式も全てが解けないわけではない(例えばlog(sin x)=a の解はx=Arcsin(exp(a)) )と思いますが、どのような場合に解を初等関数で表わせるかについてある程度一般的な理論はあるのでしょうか。  また初等関数の有限回の合成では表わせないが無限回の合成で表わせる場合もあります。例えば弧長が1で弦と円弧の距離が0.2の扇形の角を求める方程式は  1-0.2x = cos(x/2) になりますが、この解は   X[n+1] = 2 Arccos(1-0.2 X[n]) という数列の極限になります。ある初等関数の無限回の合成は他の初等関数を用いても有限回の合成では表わせないということについて私はある「証明」を思い付きました。  「無限回の合成がある極限に収束するならば、その値は(ある範囲で)初期値の取り方に依存しません。しかし初等関数の有限回の合成が定数になるのは  (sin x)^2 + (cos x)^2 = 1 のような場合しかありません。したがって無限回の合成が他の初等関数の有限回の合成に等しくなることはない。」 というものですがこのような証明でよろしいでしょうか。

  • ベッセルの方程式の問題の解き方が分かりません

     次のベッセルの方程式の問題の解き方が分かりません。  数学に詳しい方、よろしければご教示願えないでしょうか。 問題は、  ベッセルの方程式に帰着できるさまざまな方程式がある。示されている置換を 使って、次の微分方程式の一般解を求めよ。 4*x^2*y" + 4*x*y' + (x - ν^2)*y = 0 (√x = z)  このように解いてみました。  ベッセルの微分方程式は、 x^2*y" + x*y' + (x^2 - ν^2)*y = 0 で、  一般解は、 y(x) = A*Jν(x) + B*Yν(x) ここで、A と Bは任意定数、Jν(x)は第1種ベッセル関数、Yν(x)は第2種ベッセル 関数。 √x = z より、 dz/dx = 1 / (2*√x) y'とy"は、 y' = dy/dx = (dy/dz)*(dz/dx) = (dy/dz)/(2*√x) y" = d^2y/dx^2 = (d/dx)*(dy/dx) = (d/dz)/(2*√x)*(dy/dz)/(2*√x) = (d^2y/dz^2)/(4*x) ゆえに、 4*x^2*y" + 4*x*y' + (x - ν^2)*y = 4*x^2*(d^2y/dz^2)/(4*x) + 4*x*(dy/dz)/(2*√x) + (x - ν^2)*y = x*(d^2y/dz^2) + 2*√x*(dy/dz) + (x - ν^2)*y = z^2*(d^2y/dz^2) + 2*z*(dy/dz) + (z^2 - ν^2)*y = 0 となって、第 2項目が z*(dy/dz) にならず、2*z*(dy/dz) になってしまいます。  本の回答をみると、 A*Jν(√x) + B*Yν(√x) となっているので、問題の微分方程式を、 z^2*(d^2y/dz^2) + z*(dy/dz) + (z^2 - ν^2)*y = 0 に変形したのだと思いますが、どのようにすれば良いのでしょうか ?  同様に下記の問題も、 x^2*y" + x*y' + 4*(x^4 - ν^2)*y = 0 (x^2 = z) 同じ解き方をしたため、 z^2*(d^2y/dz^2) + z*(dy/dz) + (z^2 - ν^2)*y = 0 に変形できませんでした。  なにとぞよろしくお願いします。

  • ベッセル関数

    円筒座標系での電磁場のマクスウェル方程式を磁場に関して解いて得られる解が複素数を引数とする0次のベッセル関数 AJ0(kr)、kが複素数、Aは実係数、rは実変数 で得られるのですが 引数を実数に変換する方法がわかりません。 純虚数の引数であれば実数の引数の変形ベッセル関数に変換でき、 実数の引数であれば手持ちの本にベッセル関数の値が載っているのですが 複素数の引数の場合の処理方法がわからなくて困っています。 よろしくお願いします。

  • ベッセルの微分方程式について

    ベッセルの微分方程式は標準形で、 x^2(d^2f/dx^2)+x(df/dx)+(x^2-n^2)f = 0 となっています。ある種の物理現象を常微分方程式化してこの形に帰着させると、あとはベッセル関数などを使った定型処理に持ち込めるので、何とかこの形に持ち込むまで頑張るということになると思います。 質問ですが、x^2(d^2f/dx^2)+x(df/dx)+ x c f = 0 という形になった場合、これはベッセルの微分方程式ではない、ということになるでしょうか。左辺最終項の形が標準形と違います。ある文献で”ベッセルの微分方程式になる”と断言されているのですが、標準形にならないので思案しています。例えば、独立変数を変換して式も変換すると標準形になるのでしょうか。よろしくお願いします。 よく、ベッセル、ラゲールなどの微分方程式は級数解を使いますが、いろんな現象から式を変形して標準形に本当にきれいに帰着できるものでしょうか。ちょっと違うとか亜種があるのかなと思いますが。 よろしくお願いします。

  • ベッセル関数とcosの積分

    \int_{0}^{∞} J0(nx) cos(mx) dx という式、ここでJ0(nx)は0次のベッセル関数です。 山口勝也さんという方の「詳細微分方程式・特殊関数演習」という本のp244に上記の解が2通りかかれています。 1つは 1 / √(n^2 - m^2) もう1つは 0 しかしながら、その本にはそれぞれの解になる「条件」が明記されているようではないのですが、どういう条件でそれぞれの解になるかご存知でしょうか?

  • ベッセル関数を使う

    CまたはC++で(C系の言語なら何でも構いません)、 J(n, x)(∀x∈R)など4つのベッセル関数を使いたい(作りたい)のですが、可能でしょうか。 よろしくお願いします。

  • ベッセル関数の積分

    ベッセル関数について質問です。 ∫(0→a)r^3(J0(kr))^2dr(J0が0次のベッセル関数です) この積分はどうなりますか?

  • ベッセル関数とノイマン関数の部分で微分方程式の形が分かると、解がすぐに

    ベッセル関数とノイマン関数の部分で微分方程式の形が分かると、解がすぐに出るものがあるそうです。 添付の式1はワイリーの「工業数学 上」p361にある定理1の系1というものらしいです。 これに対して式2が求めたいもので、式1と比べて係数を解決するそうですが、λの二乗の部分から a,b,sの求め方がいまいち理解できません。式3からどう解くのかのヒントをお願いいたします。