前回と同じ問題設定ですが、 subroutine を使ったプログラムを作ってみましょう。
上のプログラムでは、関数 f(x) しか積分出来ません。 いくつかの別の関数を同様のやり方で積分出来るようにしてみましょう。
(例) k = 10 から 100 まで 10 ずつ増やしてて繰り返す場合。
きざみを省略すると、1 と見なされます。(K が 1 ずつ増える)
(参考文献: 森 正武、「FORTRAN77 数値計算プログラミング」 (岩波コンピュータサイエンス))
今週説明し切れないと思いますので、コピーして試して見て下さい。
上記のプログラムの中の subroutine 部分 (prog033s.f)
関数名 FUNC, 下限 a,上限 b,分割数 Nを与えて 台形則による積分 sum を計算するサブルーチン
を作り、 これを利用して、分割数を10から10おきに100まで増やしていって、 それぞれに対応する Δx と積分値を 出力するプログラム
を作って下さい。 定積分は答えを解析的に求められるもの(例えば先週の演習1) を設定して下さい。 またプログラムは入力無し (read が無い) で動作するようにしてください。 (必要な値はプログラム中に書いておく。) 積分値と解析解の差は Δx と予想された関係にありますか。
関数名 FUNC, 下限 a,上限 b,分割数 Nを与えて Simpson則による積分 sumを計算するサブルーチン
を作り、これを利用して、分割数を10から10おきに100まで増やしていって、 それぞれに対応する Δx と積分値を 出力するプログラム
を作って下さい。 定積分は答えを解析的に求められるもの(例えば先週の演習1) を設定して下さい。 またプログラムは入力無し (read が無い) で動作するようにしてください。 (必要な値はプログラム中に書いておく。) 積分値と解析解の差は Δx と予想された関係にありますか。
ap1 25: f90 prog03.f f90: compile start : prog03.f *OFORT90 V01-04-/A 開始 *プログラム名 = PROG03 *プログラム名 = CHUTEN *プログラム名 = F *プログラム数 = 0003 , エラーはありません。 ap1 26: a.out > prog03.dat ? 10 20
"./a.out > ファイル名"
とすることにより、(スクリーンで見えていた内容が)ファイルへ出力できます。
(すでにあるファイルには出力できません。一度消すか(rm ファイル名)、
別のファイルに出力して下さい。詳しくはここ
を見て下さい。)
ここまで出来れば、 出席の返事の代わりに、
として、出力したファイルを送って下さい。 (xxy の部分は人によって異なります。)