• 締切済み

楕円積分のプログラミング

楕円積分を数値計算で求めようとしています。 Fortranを使っているのですが、まずニューメリカルレシピinCをFortranに直して実行しました。 きちんと翻訳して直したはずなので、それなりの値が出るのですが、どうも誤差が大きいようです。 それはMathematicaでの組み込み関数による計算と比較したことによります。どちらがより近いのかはわからないのですが・・・。(Mathematicaでの計算は正しい(かなり近い)値を返してくれているのでしょうか?どなたか知っておられたらそちらも教えていただけるとありがたいです。どの程度信用できるのか。。。) どちらにせよ、いいプログラムはないでしょうか? ちょっと難しいかもしれませんが、よろしくお願いします。

noname#97208
noname#97208

みんなの回答

  • colder
  • ベストアンサー率43% (30/69)
回答No.1

わざわざ翻訳しなくても Numerical Recipes in Fortranを 使えばよいのでは

参考URL:
http://www.library.cornell.edu/nr/
noname#97208
質問者

お礼

はい、もちろんそうしようと思ってみたのですが、同じプログラムが見つからなかったんです。 日本語版の方では内容が違うようで。。。(他な項はきちんとそのまま直訳してあるのですが。) でも、よく見たら見つけることができました。 +Mathematicaと答えが違うと質問に書いてしまいましたが、kの定義がMathematicaとその他の本やプログラムで違うことに気づき、僕の勘違いでした。 両方ちゃんと信用できる値が返ってきます。 ありがとうございました。

関連するQ&A

  • 第2種不完全楕円積分と楕円弧長

    第2種不完全楕円積分と楕円弧長 添付した画像はCASIO社の計算サイトで計算した結果の画像です。この出力数値は他の計算 ソフトでも確認を取っており、極めて信頼のおける正確な数値です。ほとんど真円に近い形状です。 楕円弧長=長半径*楕円積分値に当てはめて求めようとするとイメージが一致しません。 長半径=100とすると弧長は99.9885・・・。そんな筈はないですよね。どこが間違っている のでしょうか?

  • 楕円積分の式について

    実務に楕円積分の利用を考慮しています。数値計算で求める方法は既にエクセルでソフトを作成済みですが、もう少しスマートに求める方法はないかと思います。画像の計算式ですが、積分範囲の{π/2,0}は右辺の級数展開式のπ/2に対応することに着目して、積分範囲が{π/m、0}であれば、級数展開式のπ/2をπ/mに置き換えることは可能でしょうか? 画像の引用元のURLは下記です。 http://www12.plala.or.jp/ksp/mathInPhys/elliptical/ 置き換えの可否だけで構いません。手元には第一種楕円積分と第二種楕円積分の関数をアドインに組み込んであるエクセルファイル(ブック)があるのでこの有効性を確認するために必要というのが質問の背景にあります。

  • 第1~3種楕円積分の違いとは

    楕円積分についての質問はいくつかあるようなのですが 私が知りたいのは第1~3種ある楕円積分の違いについてです。 これらは導出するための手順が違うために最終的な式が異なるだけで 求めようとする数値は同じですよね? となるとどれがもっとも正確な値を算出出来るのでしょうか? もっとも正確な値を算出出来る式が1つあれば他の式は不要ではないのでしょうか?使い分けるものなのでしょうか?

  • 完全楕円積分のHastings公式

    完全楕円積分の数値計算プログラムを作成しています. 完全楕円積分を(多項式+対数×多項式)の形に近似するHastings公式というものがあるそうなのですが,その多項式の係数の値の表を探しております. 多項式は4次式以上で可能なら有効数字が15桁ほどある数表がいいのですが参考になる文献やWEBページなどがあれば教えていただけないでしょうか.

  • 第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法に関する疑問に対する回答、さらに宜しければ元の質問に関する回答もいただけると嬉しいです。

  • 第2種楕円積分の逆関数?

    Cをある定数とおいた時、E(φ,k)を第2種楕円積分として、   E(φ,sqrt(1/2))=C の時のφの値を求めるにはどうすればよいでしょうか? E(φ,k)の逆関数がわかればいいのでしょうか・・。 色々調べても皆目見当がつかなかったので、どうかよろしくお願いいたします。

  • 楕円体上の最短測地線

    地球上の二点の長さを手計算でやろうと思い立ってこの問題にぶつかりました。赤道半径と極半径に22kmの差があるので、地球を球とみなせば容易に計算できるのですが、かなりの誤差が心配されます。 とりあえずモデルとして採用しているのは、αをパラメータとして、 x^2+y^2+αz^2=1 であらわされる楕円体です。この楕円体上の二点の最短測地線を求めたいです。楕円体上の測地線が何で与えられるのかすら知りません。(2点を通る平面で切断した切断面なのかと想像はしているのですが)また、それらの中で最短の測地線を与えるものは具体的に計算できるのでしょうか?さらに最短測地線が求まったとして、その楕円弧長はやはり楕円積分となって初等関数では表せませんか? とりあえず疑問にしているのは、 ・楕円体上の任意の二点の最短線を求める方法 ということです。ご教示よろしくお願いします。

  • Mathematicaにおける関数定義と部分積分

    Mathematicaにおける関数定義と部分積分 u[t_,x_]:=u[t,x] のように定義し、 u[t,x]に0を代入した場合、 u[t,l]の計算結果が0になってほしいのですが、 u[t,l]となってしまいます。 /.u[t,x]->0 とした場合に、u[t,x]の項だけでなく、u[t,l]の項も0になってほしいのです。 どのようにすれば、所望の動作をさせることができますか? また、Integrate[f[x]*g[x],{x,0,l}]で部分積分を実行したいのですが、 Mathematicaはやってくれません。 関数形のまま扱い、任意の回数部分積分を実行したいのです。 やはり、自分で関数を作るしなかないのでしょうか? 何かヒントがあれば、教えていただければ幸いです。 よろしくお願いいたします。

  • 畳み込み積分の数値計算方法

    y(t)=∫f(τ)h(t-τ)dτ, 積分区間 0≦τ≦t. この畳み込み積分のfとhの関数形が具体的にわかっているときに、y(t)の値を求めるにはどうすればいいのでしょうか。積分が解析的な式で表される場合はその式にtの値を代入すれば済むと思いますが、解析的な式でかけない場合は数値計算しないといけないと思います。数値計算はどのようにするのでしょうか? ラプラス変換とかフーリエ変換とか使うのでしょうか? 数値積分をするのでしょうか? 常套手段があると思うので、教えて下さい。

  • 1/(1+x^4)の積分について

    こんにちは。 1/(1+x^4)の積分について質問です。 たとえば、1/(1+x)、1/(1+x^2)、1/(1+x^3)は比較的簡単に 初等的に積分できます。 しかし、1/(1+x^4)はどうやら一筋縄ではいかないようです。 これについて、質問があります。 (i)1/(1+x^4)は初等的に積分できるか?   もし、初等的に積分できないとすれば、何らかの特殊関数(たとえば、  楕円積分など)で表すことができるか? (ii)x^2/(1+x^4)ではどうか? 以上です。よろしくお願い申し上げます。

専門家に質問してみよう