数値流体解析のための数学#2
#2は「離散化」をお勉強します。
尚、ここでのお勉強は下記の教科書に基づいて行っております。
①離散化とは?
離散化とは、連続である物理現象を単位時間や有限の場所で評価する方法。
これにより近似的に現象を再現できる。
数学的には、連続な関数を有限な点数における値の分布で近似する事を離散化と呼ぶ。
②ボールの投げ上げ問題
・解析解の計算
ある高さ$h_{0}$から一定速度$v_{0}$でボールを投げ上げた時、そのボールの高さ$h$は
時間$t$の関数として以下で表される。
$h = - \frac{1}{2} g t^2 + v_{0} t + h_{0}・・・(1)$
また$h =h_{0}$の時、つまり、投げ始めと最高点まで達して元の位置まで
戻ってくる時間$t$は、
$h_{0} = - \frac{1}{2} g t^2 + v_{0} t + h_{0}$
$0 = - \frac{1}{2} g t^2 + v_{0} t$
ゆえに$ t = 0, \frac{2 v_{0}}{g}$
これをpythonで実装する
import numpy as np
import matplotlib.pyplot as plt
g = 9.8
v0 = 10
h0 = 0
t = np.linspace(0, 2 * v0 / g, 50)
h = -(1/2) * g * t ** 2 + v0 * t + h0
plt.scatter(t, h)
plt.show()
・数値解の計算
※この場合、(1)式は定まってない(分かってない)。
$t_{i+1} \equiv t_{i} + \Delta{t}$
$h(t_{i}) \equiv h_{i}$
$h_{i+1} \equiv h_{i} + \Delta{h}・・・(2)$
を定義する。
$\Delta{h}$と$\Delta{t}$の関係を考える時、
実験もしくは観察より、以下が分かった(とする)。
$\frac{\Delta{h}}{\Delta{t}}= -gt + v_{0}.・・・(3)$
これを(2)式に代入すると
$h_{i+1} = h_{i} + (-g t_{i} + v_{0}) \Delta{t}$
となる。
これをpythonで実装する
import numpy as np
import matplotlib.pyplot as plt
g = 9.8
v0 = 10
h0 = 0
dt = 0.1
t = 0
h = h0
while h >= h0:
... plt.scatter(t,h)
... h = h + ( -g *t + v0) * dt
... t = t + dt
...
plt.show
・解析解と数値解の比較
import numpy as npimport matplotlib.pyplot as pltg = 9.8v0 = 10h0 = 0dt = 0.1t = 0h = h0while h >= h0:... plt.scatter(t,h)... h = h + ( -g *t + v0) * dt... t = t + dt...... h = h + ( -g *t + v0) * dt... t = t + dt...T = np.linspace(0, 2 * v0 / g, 50)H = -(1/2) * g * T**2 + v0 * T + h0plt.scatter(T, H)plt.legend()plt.show()
③まとめ
重要なのは、微分係数(ここでは(3)式)がわかれば
再帰的に値が求まる事。
この再帰的に求まった値を近似する事で微分方程式の解
(つまり解析解)に近づく事(検証する)ができる。
よって、数値計算における離散化とは、微分係数及び
ステップの幅を定義する事である。
コメント
コメントを投稿