1つだけ過去を変えられるとしたら?

オイラー法とルンゲ・クッタ法
のプログラムを作るにあたっての質問です。

ネットで調べたら

do i=0,N-1
x=x+h*f(x,y)
t=t+h

というのがでてきたのですが、
do文の中にiと言うものは一回も出てきていません。
どうしてこのようなものでまわるのでしょうか???

初心者なので、わかりやすくお願いします。

A 回答 (7件)

#1,3,6です。



> do文でxが変数ならxの値が変わるのはわかるのですが、

> iが変数なので、
> iとxの関係が見つけたプログラムだと書かれていないので
> 変わらないと思ったのですが、、、、

> どうでしょう???


xもiも変数です。(違う言い方をするとiは「ループ変数」です。)

do i=0,N-1
x=x+h*f(x,y)
t=t+h

を順を追って説明すると、(この3行だけに絞ります。また、便宜上変数に番号をつけます。)

i=0
x1=x0+h*f(x0,y)
t1=t0+h
 ↓
i=1
x2=x1+h*f(x0+h*f(x0,y),y)
t2=(t0+h)+h
 ↓
i=2
x3=x2+h*f(x1+h*f(x0+h*f(x0,y),y),y)
t3=((t0+h)+h)+h
 …
(以下n-1まで続く。)

の様に変化しますよね?

iとxの関係をプログラムを書かなければいけないなんて言う規則はありません。
iは純粋に回数だけ覚えていれば良い変数なんです。(カウンターなんですから。)

どうでしょう?
    • good
    • 0
この回答へのお礼

すごい!!!!!!!!!!!!!!!!
やっとわかった気がします。

だからi=n-1なんですね。

iが変化するとxも連動して変わるなんてすごいですね。

ありがとうございました。

お礼日時:2011/01/03 20:18

#1,3です。



> xが変わるわけでもhやf(x,y)の値が
> 変わるわけでもないので意味がないと思うのですが??

xの値は変わりますよね?

x=x+h*f(x,y)

で、次のループは変更されたxを使ってますよね?


また、

t=t+h

この処理は、ループに入れないで「t=t+n*h」でも同じかも…。
    • good
    • 0
この回答へのお礼

do文でxが変数ならxの値が変わるのはわかるのですが、

iが変数なので、
iとxの関係が見つけたプログラムだと書かれていないので
変わらないと思ったのですが、、、、

どうでしょう???

お礼日時:2010/12/31 09:41

あぁそうか, そういう意味ではむしろ


「なぜ t が出てくるのかなぞ」
と書いた方が適切だった.
    • good
    • 0
この回答へのお礼

すこしごっちゃになってきているので・・・

お礼日時:2010/12/31 09:39

微分方程式


dx/dy=f(x,y)=1+y^2
とオイラー法による式
x=x+h*f(x,y)
で, どの変数とどの変数が対応しているのか, 理解できていないように思えます.
    • good
    • 0
この回答へのお礼

そうです!!!!
自分でそこがよくわかっていなかったので
疑問を日本語にしていただきありがとうございます!!

お礼日時:2010/12/31 09:37

#1です。

「お礼」拝見しました。

***
これがわからないのですが・・・・
ループの中に変数がないと
どんなに変数が変わっていっても

値は変わっていかないと思うのですが??
***

もう少し言語仕様を読んだ方が良いですよ…。

***
do 変数=初期値,最終値[,刻み幅]
 繰り返したい処理
end do
***

これで、勝手に(刻み幅によりますが)インクリメントされてループが回ります。
「繰り返したい処理」の中でループ変数を変更する必要はありません。言語の仕様です。
(ま~、ループ変数を変更することは出来ますが、変更した後の処理の方がめんどくさいし…。)
    • good
    • 0
この回答へのお礼

再びありがとうございます。
う~ん。まだいまいちわかりません

do 変数=初期値,最終値[,刻み幅]
 繰り返したい処理
end do

これ自体はわかるのですが、
dx/dy=f(x,y)=1+y^2

do i=0,N-1
x=x+h*f(x,y)
t=t+h
end do
にしたとき、繰り返したい処理の中にiがないので、
いくら変数のiが変わっても
xが変わるわけでもhやf(x,y)の値が
変わるわけでもないので意味がないと思うのですが??

再びすいません。

お礼日時:2010/12/29 18:56

i 以前に y がなぜ出てくるのだろうか?


そちらの方が疑問.
    • good
    • 0
この回答へのお礼

dy/dx=f(x,y)=1+y^2

という式でなので、yが出てきています。

お礼日時:2010/12/28 21:09

何を言っているのか理解できないんですが…。



どうしてループの中にループで使用している変数が出てこなければいけないのでしょう?

do 変数=初期値,最終値[,刻み幅]
 繰り返したい処理
end do

で、勝手に回ってくれるんですよ?

※c言語とかなら、ループを回すとき自分で増減させますが、この場合は勝手に1ずつ増加されます。
    • good
    • 0
この回答へのお礼

>どうしてループの中にループで使用している変数が出てこなければいけないのでしょう?

これがわからないのですが・・・・
ループの中に変数がないと
どんなに変数が変わっていっても

値は変わっていかないと思うのですが??
詳しくおしえてください。

お礼日時:2010/12/28 21:07

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


おすすめ情報