- ベストアンサー
Fortranプログラムの問題についての質問
- fortranプログラムについての次の問題について質問させてください。 i=1、2、・・・、50に対し(i,a500(i))(i,a2000(i))を次の演算に従い計算せよという問題です。
- 自分は添字のnなどについてはプログラム上では無視し、一次元配列aとbを宣言して、「DOループも用いて i=1~49を回してまずa2(これがb)を求め、そのa2を元の漸化式の右辺に結果を入れ、それを500回と2000回 別々に回す」という操作を考えたのですがうまくいきません。
- i-1やi+1をどう扱うかや、そもそもこの考え方は合っているのか、どうするほうが良いのかなどについてアドバイスをいただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「do j=1,500→enddoをiをはさんだりしてやったみました」というのが わからないんですが, どうやったんでしょうか? 単純に do j = 1, 500 a(1) = 0 a(50)=1 do i = 2, 49 b(i) = 式の右辺 enddo a=b enddo で動かない?
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
だからさぁ, ・どんなプログラムを書いたのか ・どんな結果が得られたのか ・どのような結果が期待されるのか くらいは書こうよ. 「do~enddo の配置を変えたりしながらやってみた」っていってもどのようなプログラムを使ったのか全くわからんし, 「どうもうまくいきませんでした」といっても何がどう「どうもうまくいかないのか」がわからんの. もちろん「回答をもらうつもりはなくただ単に愚痴を零しているだけ」ならいいけど, それはこんなところでしないでもらいたい.
補足
do j = 1, 500 a(1) = 0 a(50)=1 do i = 2, 49 b(i) = 式の右辺 enddo a=b enddo とか a(1) = 0 a(50)=1 do i = 2, 49 b(i) = 式の右辺 enddo do j = 1, 500 a=b enddo とか思いつく限りの組み合わせでDOループを回したということです。なんでそこまで怒るのかよく分かりませんが、お返事ありがとうございました。 自力でうまく回せました。
- Tacosan
- ベストアンサー率23% (3656/15482)
考え方はそれであってると思う. 「うまくいかない」とは, どのようなプログラムでどううまくいかないと言っているんでしょうか?
補足
DOループの配置(?)などがよくわかりません。自分は、初期値をプログラムで書いた後、 do i=2,49 b(i)=上記の演算の右辺 enddo としたあと、 a(i)=b(i) としてまた同じ演算を500回(またそれと別に2000回)行うことを考えているのですが、どう書けばいいのか思い つきません・・・。do j=1,500→enddoをiをはさんだりしてやったみましたがそれらしき値が得られなかったということです。
補足
説明不足でした。すみません。色々とdo j=1,500・・・enddoの配置を変えたりしながらやってみたということです。 Tacosanさんの書いてくださったプログラムも書いてみたのですがどうもうまくいきませんでした・・・。