- ベストアンサー
解き方を教えてください。
2粒子があってr1粒子がr2粒子から受ける力を考えて 連立2階微分方程式を数値的に解く。 解く方法は「ルンゲ・クッタ・ニストローム法」です。 どうやってrのベクトルをルンゲクッタの公式を利用して 解いたらいいのかわかりません。 誰か助けてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「ニストローム」というのが分からないけど、 ルンゲクッタなら、これですか? 間違ってないとおもいますが。 3次元の場合、位置と速度で、 12変数の1階常微分方程式系として、考えました。 (ほんとは、4変数くらいに落とすんですかね) dx[j]/dt = f(j,x[]) Cなんかで書くと、 double x[12]; double xx[12]; //中間のx用 double f( int j , double* x ); double dt; //1stepの時間 for(j=0;j++<j<12){ l[1][j] = dt * f( j , x ); xx[j] = x[j] + l[1][j] / 2.0; } for(j=0;j++<j<12){ l[2][j] = dt * f( j , xx ); xx[j] = x[j] + l[2][j] / 2.0; } for(j=0;j++<j<12){ l[3][j] = dt * f( j , xx ); xx[j] = x[j] + l[3][j]; } for(j=0;j++<j<12){ l[4][j] = dt * f( j , xx ); x[j] = x[j] + l[1][j] / 6.0 + l[2][j] / 3.0 + l[3][j] / 3.0 + l[3][j] / 6.0; }
その他の回答 (2)
- petit-C
- ベストアンサー率46% (7/15)
↓間違えました。 「for(j=0;j++<j<12)」は、「for(j=0;j<12;j++)」です。 なに語なんだかって感じですよね。
- mmky
- ベストアンサー率28% (681/2420)
アドバイスや回答がないので気になっています。 たくさんの専門家がいますので、もう少し具体的に質問を説明するといいのではと思い、アドバイスしています。 具体的に何を求めるのかという点と、 「ルンゲ・クッタ・ニストローム法」について概略でも載せてくださいね。 コメントまで
お礼
そうですよね。 きっともっと具体的にした方がいいんですよね。 わかってるんですけど、どうやって載せたらよいのかよくわかんなくて。 でも、アドバイスありがとうございました。 今度はもう少し詳しく載せてみます。
お礼
まずはフォートランで作ろうと思ってて・・・。 でも、なんとなくすこし分かった気がします。 とりあえず、頑張ってみます。 お答えありがとうございました。