• ベストアンサー

解き方を教えてください。

2粒子があってr1粒子がr2粒子から受ける力を考えて 連立2階微分方程式を数値的に解く。 解く方法は「ルンゲ・クッタ・ニストローム法」です。 どうやってrのベクトルをルンゲクッタの公式を利用して 解いたらいいのかわかりません。 誰か助けてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • petit-C
  • ベストアンサー率46% (7/15)
回答No.2

「ニストローム」というのが分からないけど、 ルンゲクッタなら、これですか? 間違ってないとおもいますが。 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; }

tietyantie
質問者

お礼

まずはフォートランで作ろうと思ってて・・・。 でも、なんとなくすこし分かった気がします。 とりあえず、頑張ってみます。 お答えありがとうございました。

その他の回答 (2)

  • petit-C
  • ベストアンサー率46% (7/15)
回答No.3

↓間違えました。 「for(j=0;j++<j<12)」は、「for(j=0;j<12;j++)」です。 なに語なんだかって感じですよね。

  • mmky
  • ベストアンサー率28% (681/2420)
回答No.1

アドバイスや回答がないので気になっています。 たくさんの専門家がいますので、もう少し具体的に質問を説明するといいのではと思い、アドバイスしています。 具体的に何を求めるのかという点と、 「ルンゲ・クッタ・ニストローム法」について概略でも載せてくださいね。 コメントまで

tietyantie
質問者

お礼

そうですよね。 きっともっと具体的にした方がいいんですよね。 わかってるんですけど、どうやって載せたらよいのかよくわかんなくて。 でも、アドバイスありがとうございました。 今度はもう少し詳しく載せてみます。