- 締切済み
ケプラー問題をニュートン法で解くプログラム
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>.... 問題は、θ(t)に対する非線型方程式 > f(θ)=θ - e*sinθ - t = 0 を解くというものです。 >ここではe = 0.5としてニュートン法を用いてθを求める.... ニュートン法を用いて f(θ) の零点を勘定するのでしたら、下記参照。 http://www-utap.phys.s.u-tokyo.ac.jp/~fujii/m1semi_0423.pdf >ケプラー方程式 / 2 二体問題 >u = L + e sin u (2.228) ふつうのニュートン法にすぎませんが..... 。 xn+1 = xn - f(xn)/f'(xn) (2.234)
- info22
- ベストアンサー率55% (2225/4034)
ニュートン法は θ=θ(t)のθ=0とするtの近似値を数値計算で求めるものですが、 質問の問題はθを求めたいようですので、ニュートン法を適用できる問題ではないと思いますが如何でしょう。 何をしたいかが、今ひとつわかりかねます。 問題を整理して補足いただけませんか?
関連するQ&A
- ニュートン法の問題がどうしてもわからないので教えてください。
非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方式がある。この方法ではf(x)=0の解の近似値を次の漸化式から求める。 x_(i+1) =x_i - f(x_i)/f'(x_i) なぜこのアルゴリズムで解を得られるのかをf(x)=x^2 - e^x -2 =0 を例に説明せよ。 という問題です。 どなたかわかる方がいたらお願いします。
- 締切済み
- 数学・算数
- ニュートン法のプログラムの問題です。
ニュートン法のプログラムを書き換える問題なのですが、考えたものを実行してみても上手く値が求められなかったので質問させてください。 ・問題 ニュートン法でbのn乗根を求めるプログラムです。 これを、bを与えたときx/(x^2+1)=bとなるxを求めるプログラムに書き換えなさい。 10 input "n,b";n,b 20 x=1 30 f=x^n-b 40 d1=n*x^(n-1) 50 x1=x-f/d1 60 e=1*10^(-6) 70 if abs(f)<e then goto 100 80 x=x1 85 print x 90 goto 30 100 end 考えたものとしては、 f(x) = x^n - b を f(x) = x/(x^2 + 1) - b に、 d1(x) = n*x^(n - 1) を d1(x) = 1/(x^2 + 1) - 2*x^2*/((x^2 + 1)^2)に 改変するという方法だったんですが… 考え方とどのように改変すればこの値が求められるのか、わかる方教えてください! ちょっと急ぎなのでできれば簡潔に書いていただけると助かります… よろしくお願いします!
- 締切済み
- その他(プログラミング・開発)
- ニュートン法を用いたプログラミング
プログラミングの質問です。ニュートン法でf=tx^2+3/2x^4を最小にするx(>=0)をtの関数として求めるプログラムを作成せよ。また実行結果をt vs xグラフに表せ、とういう問題なのですが、式に文字Xのみが出てくる方程式ならできるのですが、tが入ってきたのでわからなくなってしまいました。どなたか教えていただけないでしょうか。よろしくお願いします。
- ベストアンサー
- その他(学問・教育)
- ニュートン法で解が収束しない
こんにちは。 差分式で表した非線形方程式をニュートン法で解いています。が収束しな解あります。ニュートン法は初期値に依存しているため、初期値を可変的にしてみましたがダメでした。何かいい方法はないでしょうか? 参考になるか分かりませんが、使っているプログラムのニュートン法の計算の一部は以下のようです。 call g(x,f,df) h=f/df x=x-h if(dabs(h/x)<1.d-14) then return endif
- ベストアンサー
- その他(学問・教育)
- C言語のプログラムの問題で質問です。
C言語のプログラムの問題で質問です。 問題は、 与えられた実数(a,b,c,d)に対して、次の連立非線形方程式の解 を「ニュートン法」を用いて解く。 f1(x,y)=y+ax^2-b=0 f2(x,y)=y^2+cx^2-d=0 ただし初期値(a,b,c,d)を入力でき、上記の方程式の解が画面表示されること。 という問題です。 普通の連立方程式を解くプログラムならできるのですが、ニュートン法 で解くというのが分かりません。 プログラムを教えてください。参考にしたいです。
- ベストアンサー
- C・C++・C#
- ニュートン法をC言語でプログラム
方程式 cos^2x-0.5=0 (0<x<π) の解をニュートン法で求める という問題をC言語のプログラムを作り計算したいのですが分かりません。 自分で考えてみたプログラムは以下の通りです。 #include <stdio.h> #include <math.h> #define f1(x) cos(x)*cos(x)-0.5 #define f2(x) sin(2*x) /* ニュートン法による方程式の解 */ main() { double x0,x1,a,b,c,d,g,n; a=1; x0=0.7; n=0; while(a>0.0001){ b=x0; d=f1(b); g=f2(b); x1=x0-d/g; c=x1; a=f1(c); n=n+1; printf(" n= %f x1=%f x0=%f\n",n,x1,x0); printf(" a= %f → 解 x= %f \n", a,x1); x0=x1; } } 自分としてはこれが精一杯で、何故間違ってるのか、何をどうすればいいのか、さっぱり分かりません。どういったところが間違ってるのか可能性だけでも示して頂ければ幸いです。 参考として、ニュートン法によるプログラム例として書かれていたものを上げさせて頂きます。 例: e^x-3=0 の解をニュートン法により計算する。 #include <stdio.h> #include <math.h> #define f1(x) exp(x)-3 #define f2(x) exp(x) /* ニュートン法による方程式の解 */ main() { double x0,x1,e,a,b,c,d,g,n; a=1; x0=3; n=0; while(a>0.0001){ b=x0; d=f1(b); g=f2(b); x1=x0-d/g; c=x1; a=f1(c); n=n+1; printf(" n= %f x1=%f x0=%f\n",n,x1,x0); printf(" a= %f → 解 x= %f \n", a,x1); x0=x1; } }
- 締切済み
- 数学・算数
- ニュートンラフソン法について
ニュートンラフソン法についての質問です。ニュートンラフソン法を利用するプログラム課題は理解できるのですが、別の問題の一つである次の問題をどう考えていけばよいのかわからないです。 「次の連立方程式f(x,y)=0、g(x,y)=0に対するニュートンラフソン法の反復公式を誘導せよ。」 参考書を調べますと一般のニュートンラフソン法はテーラー展開を用いて証明しているので、これも何らかの形でテーラー展開を利用するのではないかと思いますが、そこから先へ進めなくて困っています。よろしければどなたかコメントお願いいたします。
- ベストアンサー
- 数学・算数
- 3連立非線型方程式の解法プログラム(ニュートン法)を教えてください
未知数が3つで非常に難解な非線型方程式を3連立方程式にして解きたいと思っています。 ですが、手計算による代入法等の解法を行うと、とんでもなく式が長くなってしまいとても解けません。そこでc言語のプログラミングにて計算し、3連立方程式から3つ未知数の解を求めたいのですが、プログラミングはまったくの初心者であるため、いまいちよく分かりません。 解法プログラミングとしてはニュートン法が最も適切だとお聞きしました。ニュートン法にて例として下記のような式を解く場合、どのようにプログラムすれば良いか教えていただけたら幸いです。 例 2*x*x*x + 4*x*y + cos(z) = 0 x*x*y*z + logz + 2*y = 0 2*x*x + y*z +z*z*z +4 + e~(-xy) =0 この例は私が勝手に作成したので解は存在しているかわかりませんが、実際にこのような3連立非線型方程式を解く場合はどのようなプログラムになるか教えていただけたら幸いです。また、実際に私が解こうと思っている式はこの例より非常に長いものとなっています。あつかましいようですがそのことを考慮に入れてお教え頂けたら幸いです。何卒お願いいたしします。
- ベストアンサー
- 数学・算数
- ニュートン法について
ニュートン法について 3次方程式x^3-30x^2+200x=0は0,10,20を根とする。 このことを使って、ニュートン法を1回用いることにより、x^3-30x^2+200x+1=0の根で10に近いものの近似値を求めよ。 ちなみにニュートン法は「aがf(a)=0の根に十分近ければ、a-f(a)/f’(a)は更に精密な近似値となる」です。 数学に詳しい方に答えていただけると幸いです。 宜しくお願いいたします。
- ベストアンサー
- 数学・算数
補足
省略しすぎでした・・すみません。 問題を全部書くと↓のようになります。 ケプラー問題で相対距離r=(x、y)は次の運動方程式に従う。 d^2r/dt^2 = -r/r^3 (両辺の分子にあるrはどちらもベクトルで、右辺の分母のrはスカラーです。) 運動の保存量は全エネルギーE=v^2/2 - 1/r と 角運動量l=r^2*(dφ/dt)である。 簡単のためE=-1/2とすると質点の楕円軌道の長径は1になる。 また楕円軌道の離心率をeとするとl = (1-e^2)^(1/2)となる。 ここで新しい座標θを導入する。(θは楕円軌道上の1点と中心を結んだ線分とx軸のなす角。) x = cosθ - e , y = {(1-e^2)^(1/2)}*sinθとなる。 ここで角運動量の保存則をθで表し、θ(0)=0の初期条件で1回積分すると θ - e*sinθ = t を得る。 離心率eを与え、時刻tを決めるとθ(t)に対する非線形方程式 f(θ)=θ- e*sinθ - tを解く問題となる。 (1)Newton法を用いてθを求めよ。ただしe = 0.5とする。 こんな感じです。これについてのプログラムをC言語を使って作るというものです。長々とすみません。