重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

2粒子があってr1粒子がr2粒子から受ける力を考えて
連立2階微分方程式を数値的に解く。
解く方法は「ルンゲ・クッタ・ニストローム法」です。

どうやってrのベクトルをルンゲクッタの公式を利用して
解いたらいいのかわかりません。
誰か助けてください。

A 回答 (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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/29 06:58

↓間違えました。


「for(j=0;j++<j<12)」は、「for(j=0;j<12;j++)」です。
なに語なんだかって感じですよね。
    • good
    • 0

アドバイスや回答がないので気になっています。


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

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

お礼日時:2002/10/29 06:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!