データの入出力(1) 出力の書式指定 PRINT ’(1X, I3, 2X, 3F10.5)’, k, s, c, p WRITE(*, ’(1X, I3, 2X, 3F10.5)’) k, s, c, p Iw Fw.d Ew.d Aw nX / 整数データをw文字幅に右詰めで書く 実数データをw文字幅に右詰めで、小数点以下d桁で書く 実数データを10の指数表式で書く 文字データをw文字幅に右詰めで書く n桁スキップ 改行 例) PRINT ’(3F12.5)’) t, x, v WRITE(*, ’(3F12.5)’) t, x, v 2 データの入出力(2) ファイル入出力 WRITE(装置番号, 書式識別子 [,制御項目]) READ(装置番号, 書式識別子 [,制御項目]) 入力リスト 装置番号 5: キーボード(入力), 6: ディスプレイ(出力) 入出力ファイルの割り当て OPEN(装置番号, FILE=ファイル名 [,制御項目]) CLOSE(装置番号 [,制御項目]) 制御項目 FORM=‘UNFORMATTED’: binary(入出力) 例) OPEN(10, FILE=’a.dat’) READ(5, ’(I6)’) k WRITE(10, ’(A10,F10.5)’) s, c WRITE(10, ’(3F12.5)’) t, x, v CLOSE(10) 3 データのプロット GNUPLOTを利用 マニュアル 例えばhttp://graph.pc-physics.com/ WINDOWS版だと入力補助機能あり データのプロット 設定 ファイルへ出力 set size square set xlabel 'x' set ylabel 'y' plot 'a1.dat' using 2:3 with lines title 'Euler' replot 'a2.dat' using 2:3 with lines title 'R-K' set terminal postscript eps color set output 'a.eps' replot set terminal wxt (最初に確認 したもの) set output スクリプトファイルを作成しておけば再利用が可能 例) load 'a.gp' gnuplot起動時にgnuplot 'a.gp'としてもよい EPS形式の場合 JPG形式の場合 set terminal jpeg set output 'a.jpg' show terminal 4 変数が増えた場合 偏微分方程式 安定に時間発展を計算するために技法が必要 (数値粘性、陰解法) 2 Dt r 拡散方程式 2 D 2 t r 2 1 を満たすようtを十分小さくとる 区間をn分割 差分化 微分 ri r r(n)=1 r(0)=0 r(1) r(2)... i 1 i t 2 ri r 2 i 1 2 i i 1 t 2 各iについて方程式の右辺を評価し、時間発展を計算 (境界点以外) 境界条件 Euler法、Runge-Kutta法... r0 0 0 値を固定 もしくは 0 0 1 r 微分値を固定 5
© Copyright 2024 ExpyDoc