Fortran と有限差分法の 入門の入門の…

Slides:



Advertisements
Similar presentations
Division of Process Control & Process Systems Engineering Department of Chemical Engineering, Kyoto University
Advertisements

2. 数値微分法. 数値微分が必要になる場合として、次の 2 つが考えられる。 関数が与えられていて、その微分を近似的に計算する。 (数値微分の精度が十分で、かつ、計算速度が数値微分の方が 早い場合など。) 離散的な点の上で離散的なデータしかわかっていない関数の微 分を近似的に計算する。(偏微分方程式の数値解を求めたい時.
情報基礎実習 I (第6回) 木曜4・5限 担当:北川 晃. Stream クラスを用いたファイルの接続 … Dim インスタンス名 As New IO.StreamReader( _ “ ファイルの絶対パス ”, _ System.Text.Encoding.Default) … s = インスタンス名.
神戸大・理 2009 年度 地球および惑星大気科学実習 (2009/07/17) 資料をもとに作成.
Shell Script & gnuplot の 簡単な説明!! 日本大学文理学部情報システム解析学科 谷聖一 研究室 田中 勇歩 1.
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
プログラムのパタン演習 解説.
有限差分法による 時間発展問題の解法の基礎
情報とコンピュータ 静岡大学工学部 安藤和敏
東京工科大学 コンピュータサイエンス学部 亀田弘之
京都大学情報学研究科 通信情報システム専攻 湯淺研究室 M2 平石 拓
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
運動方程式の方法: 惑星の軌道 出席のメール(件名に学生番号と氏名)に,中点法をサブルーチンを使って書いたプログラムを添付
数値計算及び実習 第3回 プログラミングの基礎(1).
VBA H106077 寺沢友宏.
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
重力3体問題の数値積分Integration of 3-body encounter.
C言語 配列 2016年 吉田研究室.
4. 双曲型偏微分方程式の数値解法入門 双曲型の偏微分方程式(partial differential equation, PDE)の最も簡単なの例として1変数の線形PDE    を考える; この方程式の意味は大雑把に言って、Δx の セル内に流入流出する f の量がフラックス その結果セル内で f.
基礎プログラミング (第五回) 担当者: 伊藤誠 (量子多体物理研究室) 内容: 1. 先週のおさらいと続き (実習)
シミュレーション物理5 運動方程式の方法: サブルーチンの使い方.
数値計算及び実習 第7回 プログラミングの基礎(5).
第二回 連立1次方程式の解法 内容 目標 連立1次方程式の掃出し法 初期基底を求める 連立1次方程式を掃出し法を用いてExcelで解析する
4.2 連立非線形方程式 (1)繰返し法による方法
情報基礎実習I (第1回) 木曜4・5限 担当:北川 晃.
電気回路Ⅱ 演習 特別編(数学) 三角関数 オイラーの公式 微分積分 微分方程式 付録 三角関数関連の公式
スクリプト言語を用いたPHITSの連続実行
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
第7回 条件による繰り返し.
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
基礎プログラミング演習 第10回.
整数データと浮動小数データ 整数データと浮動小数データの違い.
繰り返し計算 while文, for文.
FlexとBison+アルファ -実習編-
スペクトル法の一部の基礎の初歩への はじめの一歩
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
コンピュータに計算させる命令を確かめよう!
情報とコンピュータ 静岡大学工学部 安藤和敏
情報とコンピュータ 静岡大学工学部 安藤和敏
第7回 条件による繰り返し.
情報とコンピュータ 静岡大学工学部 安藤和敏
phononの分散関係の計算 -カイラルナノチューブ(18,3)-
MPIを使った加算  齋藤グループ 小林直樹
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
3.条件式.
東京工科大学 コンピュータサイエンス学部 亀田弘之
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
情報工学科 3年生対象 専門科目 システムプログラミング 第4回 シェルスクリプト 情報工学科 篠埜 功.
制御文の役割と種類 IF文 論理式と関係演算子 GO TO文
情報とコンピュータ 静岡大学工学部 安藤和敏
ガイダンス 電子計算機 電気工学科 山本昌志 1E
定常剛体回転する宇宙ひもからの 重力波放射
シミュレーション物理4 運動方程式の方法.
C言語講座 制御(選択) 2006年 計算技術研究会.
2008年6月5日 非線形方程式の近似解 2分法,はさみうち法,Newton-Raphson法)
情報実習I (第6回) 木曜4・5限 担当:北川 晃.
Cプログラミング演習 ニュートン法による方程式の求解.
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング基礎a 第7回 C言語によるプログラミング入門 ファイル入出力
確率的フィルタリングを用いた アンサンブル学習の統計力学 三好 誠司 岡田 真人 神 戸 高 専 東 大, 理 研
プログラミング入門2 第5回 配列 変数宣言、初期化について
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
printf・scanf・変数・四則演算
情報処理Ⅱ 2006年10月20日(金).
プログラミング演習I 補講用課題
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

Fortran と有限差分法の 入門の入門の… 高橋芳幸

目次 Fortran 入門 1-5 偏微分方程式の数値解法 1-2 差分の諸々 まとめ

Fortran 入門 1 表示 -------------------------------------- program test1 implicit none write( 6, * ) “Hello world!” end program test1 “おまじない” 画面に出力

Fortran 入門 2 計算 -------------------------------------- program test2 implicit none real(8) :: num1, num2, num3, num4 num1 = 3.0 num2 = 5.0 num3 = 6.0 num4 = num3 * (num1 + num2) write( 6, * ) num4 end program test2 “おまじない” 変数宣言 値の設定 計算 ( 6×( 3 + 5 ) ) 画面に出力

Fortran 入門 3 “おまじない” 変数宣言 (繰り返し)計算 ( 1 + 2 + 3 + … + 10 ) 画面に出力 繰り返し -------------------------------------- program test3 implicit none real(8) :: num integer :: i num = 0 do i = 1, 10 num = num + i end do write( 6, * ) num end program test3 “おまじない” 変数宣言 (繰り返し)計算 ( 1 + 2 + 3 + … + 10 ) 画面に出力

Fortran 入門 4 “おまじない” 変数(配列)宣言 配列に値の設定 画面に出力 配列 -------------------------------------- program test4 implicit none real(8) :: num(5) integer :: i do i = 1, 5 num( i ) = i * 5 end do write( 6, * ) i, num( i ) end program test4 “おまじない” 変数(配列)宣言 配列に値の設定 画面に出力

Fortran 入門 5 “おまじない” 変数宣言 キーボードから読み込み 条件分岐(画面に出力) 条件分岐(と入力) -------------------------------------- program test5 implicit none real(8) :: num write( 6, * ) ‘Input number’ read( 5, * ) num if( num > 10 ) then write( 6, * ) ‘input number is greater than 10’ else write( 6, * ) ‘input number is less than or equal to 10’ end if end program test5 “おまじない” 変数宣言 キーボードから読み込み 条件分岐(画面に出力)

偏微分方程式の数値解法 1 題材とする方程式 は有限差分法(のとある方法)を用いると次のように離散化される. 初期条件 … … … … … 時間 … …

偏微分方程式の数値解法 1 プログラム例 πの設定 座標の設定 初期値の設定 初期値の出力 program partdiff1 implicit none real(8) :: pi, x(100), dx, dt, psi(100), psi_n(100) integer :: t, i pi = acos( -1.0d0 ) dt = 0.2 dx = 2.0 * pi / 100 do i = 1, 100 x( i ) = -pi + dx * ( i – 1 ) end do psi( i ) = 5.0 + 2.0 * sin( x( i ) ) write( 6, * ) 0, x( i ), psi( i ) write( 6, * ) 演算はどうすれば良いでしょう? end program partdiff1 πの設定 座標の設定 初期値の設定 初期値の出力

偏微分方程式の数値解法 1 プログラム例 計算 変数の入れ替え 結果の出力 program partdiff1 implicit none real(8) :: pi, x(100), dx, dt, psi(100), psi_n(100) integer :: t, i pi = acos( -1.0d0 ) dt = 0.2 dx = 2.0 * pi / 100 do i = 1, 100 x( i ) = -pi + dx * ( i – 1 ) end do psi( i ) = 5.0 + 2.0 * sin( x( i ) ) write( 6, * ) 0, x( i ), psi( i ) write( 6, *) 演算はどうすれば良いでしょう? end program partdiff1 do t = 1, 10 do i = 1, 100 psi_n( i ) = psi( i ) - 2 * x(i) * dt end do psi( i ) = psi_n( i ) write( 6, * ) t, x( i ), psi( i ) write( 6, * ) 計算 変数の入れ替え 結果の出力

偏微分方程式の数値解法 1 実行例 プログラム名を main.f90 とする. % ifort main.f90 % a.out > result.txt コンパイル 結果をファイルにリダイレクト

偏微分方程式の数値解法 1 gnuplot を用いた描画方法の例 Version 4.0 patchlevel 0 last modified Thu Apr 15 14:44:22 CEST 2004 System: Linux 2.6.18-5-686 Copyright (C) 1986 - 1993, 1998, 2004 Thomas Williams, Colin Kelley and many others (省略) Terminal type set to 'x11' gnuplot> gnuplot> plot “result.txt” index 0 u 2:3 w l gnuplot> replot “result.txt” index 1 u 2:3 w l gnuplot 起動 0 番目の時間の 2, 3 カラムのデータを描画 1 番目の時間の 2, 3 カラムのデータを重ね描き

偏微分方程式の数値解法 1 数値解の例 数値解は次のようになるだろう. この場合は解析解も同じだろう.

偏微分方程式の数値解法 2 移流方程式 ここでは例として以下に示す 1 次元移流方程式を離散化を扱う. (1) ただし, ここでは c は定数で, 0  x  2 とし, 以下の境界条件(周期境界条件)を与える.

偏微分方程式の数値解法 2 離散化例 1 (1)式は, 有限差分法(のとある方法)を用いると以下のように離散化される. ただし, この方法は数値的に安定ではありません. (安定性については, 必要な人は各自調べてください.)

偏微分方程式の数値解法 2 プログラミング練習 プログラムはどうなるでしょう?

偏微分方程式の数値解法 2 数値解の例 例えば, △x = 2 pi / 100, △t = 0.1 c = 0.1 の場合の数値解は以下のようになるだろう.

偏微分方程式の数値解法 2 離散化例 2 有限差分法による離散化には様々な(精度の)方法がある. 先の例では としたが, としてもよい.

差分の諸々 導出 1 ここでは以下の差分式を導出する. をテイラー展開すると となり, この 2 式より, となる. つまり, この差分式は の誤差が生じるので, 2 次精度となる.

差分の諸々 導出 2 同様に式変形することで, の差分式はそれぞれ, 1 次精度, 4 次精度であることがわかる. 時間についての差分式も同様.

差分の諸々 プログラム実習 興味のある人は, 精度の異なる差分式を導出し, プログラムを作って見てください.

まとめ Fortran 入門(の入門の入門…) 偏微分方程式の数値解法入門(の入門の入門… )