C言語プログラミングの練習をした方が良いかな?と考えています。
「C言語これくらい覚えよう」の
「練習問題」の 4.1 「比較的簡単なもの」を解いてみて下さい。
1〜2時間程度取り組んでみて、出来たプログラムを送る、 というのを宿題にしようと考えています。
(2020/11/20 プログラム追記)
ターミナルで適当なディレクトリィにファイルをコピー |
mkdir zemi (例えば) cd zemi curl -O http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1d-e-glsc.c curl -O http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1d-i-glsc.c curl -O http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1n-i-glsc.c curl -O http://nalab.mind.meiji.ac.jp/~mk/labo/text/heat-fdm-0.pdf |
最後の heat-fdm-0.pdf は「発展系の数値解析」という文書である。 4節「数値実験例」と5節「陰解法」の数値計算を再現してみよう。
heat1d-e-glsc.c を試す |
($ はプロンプトで入力はしない。)
$ cglsc heat1d-e-glsc.c $ ./heat1d-e-glsc.c 区間の分割数 N = 20 λ (=τ/h^2) = 0.5 τ=0.00125 最終時刻 Tmax = 1 終りました。X の場合はウィンドウをクリックして下さい。 |
heat1d-i-glsc.c を試す |
$ cglsc heat1d-e-glsc.c $ ./heat1d-e-glsc 区間の分割数 N = 20 λ (=τ/h^2) = 0.5 τ=0.00125 最終時刻 Tmax = 1 終りました。X の場合はウィンドウをクリックして下さい。 bash-3.2$ cglsc heat1d-i-glsc.c bash-3.2$ ./heat1d-i-glsc 入力して下さい : nfunc(1..5)=1 入力して下さい : θ=0 入力して下さい : N=40 入力して下さい : λ=0.5 時間の刻み幅τ= 0.0003125 になりました。 入力して下さい : 最終時刻 Tmax=1 入力して下さい : グラフ書き換え時間間隔(Δt)=0.01 T= 0.0000e+00 I u(i) I u(i) I u(i) I u(i) I u(i) 0 0.0000e+00 1 2.5000e-02 2 5.0000e-02 3 7.5000e-02 4 1.0000e-01 5 1.2500e-01 6 1.5000e-01 7 1.7500e-01 8 2.0000e-01 9 2.2500e-01 10 2.5000e-01 11 2.7500e-01 12 3.0000e-01 13 3.2500e-01 14 3.5000e-01 15 3.7500e-01 16 4.0000e-01 17 4.2500e-01 18 4.5000e-01 19 4.7500e-01 20 5.0000e-01 21 4.7500e-01 22 4.5000e-01 23 4.2500e-01 24 4.0000e-01 25 3.7500e-01 26 3.5000e-01 27 3.2500e-01 28 3.0000e-01 29 2.7500e-01 30 2.5000e-01 31 2.2500e-01 32 2.0000e-01 33 1.7500e-01 34 1.5000e-01 35 1.2500e-01 36 1.0000e-01 37 7.5000e-02 38 5.0000e-02 39 2.5000e-02 40 0.0000e+00 マウスでウィンドウをクリックして下さい。 bash-3.2$ |
10 0.36654433 1.653709 20 0.37118820 0.407728 40 0.37232923 0.101583 80 0.37261327 0.025374 160 0.37268420 0.006342 320 0.37270193 0.001585 640 0.37270636 0.000396 |