シミュレーション物理4 運動方程式の方法.

Slides:



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

計算物理2013年度 磁気相転移の臨界指数を求める. 今回の授業の目的 磁石が温度によって磁化をもったり,もたなかっ たりする様を計算機シミュレーションで調べる これは本当に数値実験。これを発展させて,脳の ニューロンの発火具合などのシミュレーションも 可能となる。
2. 数値微分法. 数値微分が必要になる場合として、次の 2 つが考えられる。 関数が与えられていて、その微分を近似的に計算する。 (数値微分の精度が十分で、かつ、計算速度が数値微分の方が 早い場合など。) 離散的な点の上で離散的なデータしかわかっていない関数の微 分を近似的に計算する。(偏微分方程式の数値解を求めたい時.
神戸大・理 2009 年度 地球および惑星大気科学実習 (2009/07/17) 資料をもとに作成.
ブラックホール宇宙の構成方法と その構造 阿部君, 中尾さん, 孝森君 ( 大阪市立大学 ) 柳 哲文( YITP)
陰関数定理と比較静学 モデルの連立方程式体系で表されるとき パラメータが変化したとき 如何に変数が変化するか 至るところに出てくる.
Computational Fluid Dynamics(CFD) 岡永 博夫
有限差分法による 時間発展問題の解法の基礎
ニュートン重力理論における ブラックホール形成のシミュレーション
Natural beauty of the standard model I -A possible origin of a U(1) gauge degree of freedom- 西川 美幸.
Fortran と有限差分法の 入門の入門の…
運動方程式の方法: 惑星の軌道 出席のメール(件名に学生番号と氏名)に,中点法をサブルーチンを使って書いたプログラムを添付
シミュレーション物理3 プログラミングの基本 その2
2010年7月9日 統計数理研究所 オープンハウス 確率モデル推定パラメータ値を用いた市場木材価格の期間構造変化の探求 Searching for Structural Change in Market-Based Log Price with Regard to the Estimated Parameters.
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
1 次方程式 直線   と 軸が交わる点 解ける! 解析的に解ける(解析解)   または 厳密に解ける (厳密解)
数楽(微分方程式を使おう!) ~第5章 ラプラス変換と総仕上げ~
常微分方程式と偏微分方程式 1.常微分方程式 独立変数が一個のもの 振動の運動方程式 2.偏微分方程式 独立変数が二個以上のもの
重力3体問題の数値積分Integration of 3-body encounter.
Korteweg-de Vries 方程式のソリトン解 に関する考察
4. 双曲型偏微分方程式の数値解法入門 双曲型の偏微分方程式(partial differential equation, PDE)の最も簡単なの例として1変数の線形PDE    を考える; この方程式の意味は大雑把に言って、Δx の セル内に流入流出する f の量がフラックス その結果セル内で f.
シミュレーション物理5 運動方程式の方法: サブルーチンの使い方.
シミュレーション論Ⅰ 第4回 基礎的なシミュレーション手法.
大阪工業大学 情報科学部 情報システム学科 宇宙物理研究室 B 木村悠哉
第二回 連立1次方程式の解法 内容 目標 連立1次方程式の掃出し法 初期基底を求める 連立1次方程式を掃出し法を用いてExcelで解析する
学年 名列 名前 福井工業大学 工学部 環境生命化学科 原 道寛
周期境界条件下に配置されたブラックホールの変形
イントロダクション 田浦健次朗 TA: 河内さん,竹内さん.
4.2 連立非線形方程式 (1)繰返し法による方法
流体のラグランジアンカオスとカオス混合 1.ラグランジアンカオス 定常流や時間周期流のような層流の下での流体の微小部分のカオス的運動
重力レンズ効果を想定した回転する ブラックホールの周りの粒子の軌道
理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
数楽(微分方程式を使おう!) ~第4章 他分野への応用(上級編)~
電気回路Ⅱ 演習 特別編(数学) 三角関数 オイラーの公式 微分積分 微分方程式 付録 三角関数関連の公式
ラグランジュ微分と オイラー微分と 移流項の 三者の関係を直感で理解する方法
動力学(Dynamics) 運動方程式のまとめ 2008.6.17
情報科学 第6回 数値解析(1).
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
宇宙磁気流体・プラズマシミュレーション サマーセミナー ~三次元MHDコードの作成〜
整数データと浮動小数データ 整数データと浮動小数データの違い.
繰り返し計算 while文, for文.
SPH法を用いた重力の潮汐力効果のシミュレーション
スペクトル法の一部の基礎の初歩への はじめの一歩
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
傾きがわかった関数の軌跡を求める. 変数は二つ以上
古典論 マクロな世界 Newtonの運動方程式 量子論 ミクロな世界 極低温 Schrodinger方程式 ..
流体の粘性項を 気体分子運動論の助けを借りて、 直感的に理解する方法
川崎浩司:沿岸域工学,コロナ社 第2章(pp.12-22)
Relativistic Simulations and Numerical Cherenkov
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
深海底は海嶺軸から遠ざかるにつれ、規則正しく深くなる。 なぜか?
重力レンズ効果による画像の変形と明るさの変化
(昨年度のオープンコースウェア) 10/17 組み合わせと確率 10/24 確率変数と確率分布 10/31 代表的な確率分布
動力学(Dynamics) 力と運動方程式 2008.6.10
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
シミュレーション物理2 プログラミングの基本
Chapter 26 Steady-State Molecular Diffusion
情報とコンピュータ 静岡大学工学部 安藤和敏
Numerical solution of the time-dependent Schrödinger equation (TDSE)
河川工学 -流出解析その2- 貯留関数法,タンクモデル,キネマティックウエイブ法
逆運動学:手首自由度 運動学:速度、ャコビアン 2008.5.27
北大MMCセミナー 第62回 附属社会創造数学センター主催 Date: 2016年11月4日(金) 16:30~18:00
定常剛体回転する宇宙ひもからの 重力波放射
情報科学 第6回 数値解析(1).
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
宿題を提出してください. 配布物:ノート 3枚 (p.49~60), 中間アンケート, 解答用紙 3枚 (1枚は小テスト,2枚は宿題用)
How shall we do “Numerical Simulation”?
北大MMCセミナー 第28回 Date: 2014年10月3日(金)14:30~16:00 ※通常と開始時間が異なります
シミュレーション物理8 磁性.
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

シミュレーション物理4 運動方程式の方法

運動方程式 物理で最もよく出てくる。そもそも物理はものの運動を議論する学問から出発(つり合いは運動を行わないという意味で含まれる) 代表例 ニュートンの運動方程式 波動方程式 シュレーディンガー方程式

運動方程式(微分方程式の解法) 高次の微分方程式を1階微分方程式に変形 N変数の2階微分方程式2N変数の1階微分方程式 dy/dt=f(t,y)を考察(yはベクトルでもよいが説明のため,1次元で考える)

運動方程式の解き方1 最も原始的なとき(オイラー法) 時間を離散的に0,Dt, 2Dt,3 Dt …と刻む。 y(nDt)=ynとして

運動方程式の解き方2; オイラー法の改良 オイラー法だと精度が悪い。1タイムステップでDt2の誤差。目標がt秒後の粒子の位置だとすると,N=t/Dt回のステップが必要。するとこの誤差が蓄積して,tDt程度の誤差が生じる。 オイラー法を改良してDt3の誤差しか生じないようにする。そのためには?

2次のRunge-Kutta法(中点法) 直感的な意味;yの時間変化を決めるfがt,yに依存している。 そこでfはtとt+Dt,yとy+Dyの中点で決めるとよい。

2次のRunge-Kutta法の証明 通常のテイラー展開 Runge-Kutta法

4次のRunge-Kutta法 txとしてx,yで図で解釈

4th Order Runge-Kutta法 多くの場合,力は時間にはあらわに依存しない。 レポート課題:2番目の場合について,証明せよ

問題 まずは自由落下から。t=0,y=0で初速0でものを落とした場合を, Euler法 中点法 Runge-Kutta法 で解くこと。 次に空気抵抗がある場合をとく。空気抵抗は速度に比例。

無次元化 ここでは1秒、1メートルを基本単位とする。

課題:それぞれを数値的にといて解析的な式と比較しよう

program euler !------------------------- ! This is a program to investigate the free fall ! Euler method ! 2005/5/2 Written by T. Ohtsuki implicit none ! Always begin with this statement integer,parameter::double=selected_real_kind(14) ! Type defined real(kind=double), parameter::zero=0.0_double,one=1.0_double,& half=0.5_double ! Parameter defined real(kind=double), parameter::pi=3.1415926535897932 ! Parameter defined real(kind=double)::x,vx,deltat,xnew,vxnew,t,tmax,analytic ! Real variables defined real(kind=double), parameter::g=9.8_double,gamma=1.0_double ! Parameter defined integer::i,nmax ! integer defined deltat=0.05_double ! Time interval x=zero ! Initial position vx=zero ! Initial velocity tmax=5._double! Target time nmax=int((tmax-deltat/2._double)/deltat)+1! Number of iteration required do i=1,nmax ! Equation of motion vxnew=vx-g*deltat-gamma*vx*deltat ! Vx is slightly changed xnew=x+vx*deltat ! X is slightly changed vx=vxnew ! Set vxnew as vx x=xnew ! Set xnew as x end do !Compare the analytic and numerical results tmax=deltat*nmax analytic=-g*tmax/gamma-g/gamma**2*exp(-gamma*tmax)+g/gamma**2 print *,tmax,x,analytic stop end

program midpoint !------------------------- ! This is a program to investigate the free fall ! 2005/5/2 Written by T. Ohtsuki ! midpoint method implicit none ! Always begin with this statement integer,parameter::double=selected_real_kind(14) real(kind=double), parameter::zero=0.0_double,one=1.0_double,half=0.5_double real(kind=double), parameter::pi=3.1415926535897932 real(kind=double), parameter::g=9.8_double,gamma=1._double real(kind=double)::x,vx,deltat,xnew,vxnew,t,tmax,analytic real(kind=double)::xk1,xk2,vxk1,vxk2 integer::i,nmax deltat=0.05_double x=zero vx=zero tmax=5._double nmax=int((tmax-deltat/2._double)/deltat)+1 do i=1,nmax !ここだけEuler法とちょっと違う vxk1=-deltat*(g+gamma*vx) xk1=deltat*vx vxk2=-deltat*(g+gamma*(vx+half*vxk1)) xk2=deltat*(vx+half*vxk1) vxnew=vx+vxk2 xnew=x+xk2 vx=vxnew x=xnew end do !Compare the analytic and numerical results tmax=deltat*nmax analytic=-g*tmax/gamma-g/gamma**2*exp(-gamma*tmax)+g/gamma**2 print *,tmax,x,analytic stop end

コンパイル f90 filename(必ず.f90で終わるファイル) a.outというファイルができるのでそれを実行(a.outと打ち込む) もしa.outでなく、たとえばEuler1という名前の実行ファイル(キーボードで打ち込むと結果が出るものを実行ファイルという)がほしければ f90 -o Euler1 finename