- 締切済み
第2種楕円積分の逆関数?
こちらhttp://oshiete1.goo.ne.jp/qa3629088.htmlで ******************************************************** Cをある定数とおいた時、E(φ,k)を第2種楕円積分として、 E(φ,sqrt(1/2))=C の時のφの値を求めるにはどうすればよいでしょうか? E(φ,k)の逆関数がわかればいいのでしょうか・・ ******************************************************** という質問をし、 ******************************************************** > 実はとあるプログラムの中で、任意のEに対するφを随時出力したい > (例えばy=sinφのサインカーブ上を+φの向きにS[m]進んだとき、その位置でのφの値を求めたい) > のですが、楕円積分関連のサブルーチンを探しても「ニューメリカルレシピ・イン・シー」程度しか見つからず、 > またそれは与えられたφ、kからE(φ,k)を求めるものにすぎませんでした。 与えられたφ,kからE(φ,k) を求めるサブルーチンをお持ちでしたら, f(x) = C という方程式の数値解を求める手法(二分法や Newton 法)と組み合わせればいいのではないでしょうか. Newton 法では f'(x) が必要ですが,今は f(x) が楕円積分になっていますから, f'(x) は楕円積分の被積分関数そのものです. ******************************************************** という返答を戴いたのですが、E(φ,k)は定積分であり、この場合被積分関数をそのままf'(x)としてしまってよいのかと悩んでおります。(Newton法を理解していなかった為なのですが。) 元の質問ページを使えば良かったのですが、誤って締め切ってしまったため、Newton法に関する疑問に対する回答、さらに宜しければ元の質問に関する回答もいただけると嬉しいです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- siegmund
- ベストアンサー率64% (701/1090)
前の回答を書きました siegmund です. Tacosan さんの言われるとおりですが,せっかくですからもう少し. (1) F(φ) = 0 という方程式に対して,適当な初期値 φ_0 を選び (2) φ_{n+1} = φ_n - F(φ_n)/F'(φ_n) で逐次近似して数値解を求めようというのが Newton 法です. 要するに,φ=φ_n で接線を引いて1次方程式を解いた結果が φ_{n+1} ということです. 今は (3) F(φ) = E(φ,k) - C で,k は k = 1/√2 と固定していると思えばよいです. (4) E(φ) = ∫{θ:0→φ} √{1-k^2 sin^2θ} dθ ですから,Tocosan さんの書かれていることにより (5) F'(φ) = E'(φ) = √{1-k^2 sin^2φ} です. というわけで,E(φ,k) のサブルーチンがあれば Newton 法のプログラムは易しいでしょう. もちろん,Newton 法のサブルーチンも既製のものがありまして, 既製品はエラー処理とか収束判定とかそこらへんもしっかりしています. Newton 法は初期値のφ_0 に気をつけなければいけないことがあります. 例えば,2実根のある2次方程式を Newton 法で解くときに, 初期値の選び方によってどちらの解に収束するかが分かれます. 今は,F(φ) がφの単調増加関数ですから,多分心配はいらないでしょう. あと気をつけることは,お持ちの E(φ,k) のサブルーチンのφの範囲でしょうか. φの範囲に限定があるのでしたら(例えば,0からπまで,など), √{1-k^2 sin^2φ} の周期性を考慮して適宜工夫する必要があります.
- Tacosan
- ベストアンサー率23% (3656/15482)
あれ? 1変数の場合は「微分積分学の基本定理」という, とっても基本的かつ重要な定理なんですけど.... 2変数にしても今の場合は同様に成り立ちます.
- Tacosan
- ベストアンサー率23% (3656/15482)
1変数なら F(x) = ∫(t: 0→x) f(t) dt に対し F'(x) = f(x) はいいことにしましょう. 2変数で (定数 k に対し) F(x, k) = ∫(t: 0→x) f(t, k) dt と定義します. 偏微分 Fx(x, k) はどうなると思いますか?
お礼
>1変数なら >F(x) = ∫(t: 0→x) f(t) dt に対し F'(x) = f(x) >はいいことにしましょう. これは定理でしょうか? >Fx(x, k) はどうなると思いますか? kが既知なので、一変数関数となると思います。 つまり、 F(x) = ∫(t: 0→x) f(t) dt に対し F'(x) = f(x) を使ってしまってよい、ということなのでしょうか?
お礼
http://ja.wikipedia.org/wiki/%E5%BE%AE%E5%88%86%E7%A9%8D%E5%88%86%E5%AD%A6%E3%81%AE%E5%9F%BA%E6%9C%AC%E5%AE%9A%E7%90%86 これの2.ですね。ありがとうございました。