functional equation
引言
真實世界的物理現象,物理學家習慣寫成函數方程式。想要用電腦模擬真實世界,設計函數方程式、解函數方程式是必備技能。
比方說,記錄物體所在位置。根據人類目前所知,物體不會分身,不會同時出現在兩個位置,符合函數的概念;物體不會瞬移,不會瞬時出現在遙遠位置,符合連續的概念。因此物體所在位置可以表示成一個連續函數x(t),簡寫成x。
數學家創造了函數、連續,主要是為了符合人類認知。如果影分身之術、飛雷神之術成真,那麼數學家勢必要創造其他數學元件,以符合新認知。
位置的變化多寡,稱作速度,符合微分的概念。因此物體當前速度可以表示成d/dt x(t),簡寫成x′。
物理課教過等速運動。物體速度是40,可以列出等式x′ = 40。大家把40視作一個函數,而非一個實數。
速度也可以忽快忽慢。自訂速度v,可以列出等式x′ = v。
速度的變化多寡,稱作加速度,符合二次微分的概念。因此物體當前加速度可以表示成 d²/dt² x(t),簡寫成x″。
物理課教過等加速度運動。自由落體,加速度是重力加速度g,g是一個物理常數約9.8,可以列出等式x″ = -g。如果又有空氣阻力f,得到加速度a = f/m,可以列出等式x″ = -g + f/m。
加速度也可以不斷變化。彗星撞地球,加速度是引力加速度g = -Gm₁m₂ / r²,G是萬有引力常數約6.7e-11,m₁ m₂是質量,r是距離。地心座標定成0,可以列出等式x″ = -Gm₁m₂ / x²。
我們的目標就是解x,知道物體的所在位置。
functional equation
方程式:已知數、未知數全是實數。實數運算有加減乘除。
x² + 2xy + 2y = 1
函數方程式:已知數、未知數全是函數。函數運算有加減乘除微積代入複合。
d g(x+2) ∫ f(x) dx + 2 = —— f(g(x)) + —————— dx f(x)
函數方程式當中的實數,其實是函數,稱作「常數函數」。
functional
函數:輸入、輸出全是實數。
f(x, y) = x² + 2xy + 2y - 1
泛函數:輸入、輸出全是函數。函數的函數。
d g(x+2) L(f(x), g(x)) = ∫ f(x) dx + 2 - —— f(g(x)) - —————— dx f(x)
我不清楚數學家為何故意讓「泛函數(名詞)」跟「函數的(形容詞)」撞名。
函數方程式的各種要素
一、未知函數:至少一個。 二、函數輸入:至少一個。 三、函數輸出:至少一個。 四、函數輸入運算:變數變換。 五、函數輸出運算:變換。 六、方程式:也包含函數輸入變數。 七、方程式:至少一道。
1. number of unknown function. ∂ ∂ —— f(t) = —— g(t) ∂t ∂t 2. number of input. ∂ ∂ ∂ —— f(t,x,y) = —— f(t,x,y) + —— f(t,x,y) ∂t ∂x ∂y 3. number of output. ⎡ ∂ ∂ ⎤ ⎢ —— Fₓ(t,x,y) + —— F(t,x,y) ⎥ ∂ ⎢ ∂x ∂y ⎥ —— F(t,x,y) = ⎢ ⎥ ∂t ⎢ ∂ ∂ ⎥ ⎢ —— F(t,x,y) - —— Fₓ(t,x,y) ⎥ ⎣ ∂x ∂y ⎦ 4. transform of input. ∂ ∂ —— f(2t,x+1) = —— f(t+1,2x) ∂t ∂x 5. transform of output. ∂ ∂ —— f(t,x) = —— sqrt(f(t,x)) ∂t ∂x 6. equation with input. ∂ ∂ —— f(t,x) = t² + x —— f(t,x) ∂t ∂x 7. number of equations. ⎧ ∂ ∂ ∂ ⎪ —— f(t,x,y) = —— f(t,x,y) + —— f(t,x,y) ⎪ ∂t ∂x ∂y ⎨ ⎪ ∂ ⎪ —— f(t,x,y) = f(t,x,y) ⎩ ∂t
symbolic solution / numeric solution
方程式的解,區分為符號解、數值解。
符號解外觀宛如公式、宛如定律,深受數學家喜愛。
操作科學計算軟體、查閱工程數學書籍,推導符號解。
solve ax² + bx + c = 0 | solve f(x) + f′(x) = 0 _________ | -b ± V b² - 4ac | -x x = ——————————————— | f(x) = e 2a |
數值解外觀宛如陣列、宛如資料,深受計算學家喜愛。
操作數值模擬軟體、查閱數值分析書籍,演算數值解。
solve 3x² + 12x + 8 = 0 | solve f(x) + f′(x) = 0 x = -0.7790 | f(x) = [7.4, 2.7, 1.0, 0.4, 0.1]
古代沒有計算機,古人只找符號解。導致數學課本只教符號解,不教數值解。大部分的方程式,沒人知道符號解,只好改找數值解。
符號解計算工具如Symbolab。數值解計算工具如sundials。
符號解的詳細分類
符號組成式子,式子細分為代數式、閉合式、解析式、……。大家口語上不說符號解,而是說代數解、閉合解、解析解、……。
algebraic solution:只有四則運算。 closed-form solution:包含以上項目,而且多了三角函數。 analytic solution:包含以上項目,而且多了無窮級數。
許多方程式已被證明不存在代數解、閉合解、解析解、……。
Kepler's equation:橢圓軌道運動,已知座標位置(x,y),求時刻t,沒有閉合解。 Bézier curve:加權平均數曲線,已知座標位置(x,y),求參數t,沒有閉合解。
延伸閱讀:numerical vs. numeric
numerical:使用到數字的。numeric:本體是數字的。
numerical function:函數的輸入與輸出是數字。
例如地板函數(實數到整數)、絕對值函數(實數到實數)。
numeric function:由數字構成的函數。
例如平方函數,寫成symbolic function是f(x) = x²,寫成numeric function是f([-3,-2,-1,0,1,2,3]) = [9, 4, 1, 0, 1, 4, 9]。
differential equation
differential equation
「微分方程式」。函數方程式,只有四則運算、微分運算。
d f(x) + 2 = —— f(x) + 2 g(x) dx
符號解數學公式
微分等於零。解是任意的常數函數。
d —— f(x) = 0 ---> f(x) = c dx
微分等於原本函數。解是ex。原理是ex微分之後還是ex。
d x —— f(x) = f(x) ---> f(x) = e dx
數學家以此為基礎,讓方程式漸趨複雜,發展各種求解技巧。由於這不是我的專長,就不多提了。
符號解演算法(least squares method)(regression)
函數方程式重新整理成「泛函數等於零」的格式。
函數方程式。 d —— f(x) = f(x) + 1 dx 等量減法公理,兩邊同減一樣多的東西。(移項) d —— f(x) - f(x) - 1 = 0 dx 整理成泛函數的模樣。 d L(f(x)) = —— f(x) - f(x) - 1 dx 省略括號,簡化符號,比較好讀。 L(f) = f′ - f - 1
推定解是自訂函數,係數待求。
assume f(x) = ax² + bx + c find a,b,c
自訂函數代入泛函數。通常不是零,通常有誤差。
L(f(x)) = (2a + b) - (ax² + bx + c) - 1
平方誤差盡量小:函數每一處的平方,總和盡量小。
-∞累計到+∞,誤差無限大。因此大家只累計一小段區間。
argmin L(f(x)) dot L(f(x)) 點積風格 a,b,c argmin ∫ L(f(x))² dx 積分風格 a,b,c
最小值位於一次微分等於零的地方。對各個係數偏微分。
⎧ ∂/∂a ∫ L(f(x))² dx = 0 ⎨ ∂/∂b ∫ L(f(x))² dx = 0 ⎩ ∂/∂c ∫ L(f(x))² dx = 0
如果積分很難算,可以偷工減料,對輸入取樣。
let x = -2, -1, 0, 1, 2 ⎧ ∂/∂a L(f(-2))² + L(f(-1))² + L(f(0))² L(f(1))² + L(f(2))² = 0 ⎨ ∂/∂b L(f(-2))² + L(f(-1))² + L(f(0))² L(f(1))² + L(f(2))² = 0 ⎩ ∂/∂c L(f(-2))² + L(f(-1))² + L(f(0))² L(f(1))² + L(f(2))² = 0
整件事情宛如迴歸。一筆資料:輸入值、輸出值(零)。迴歸函數:自訂函數代入泛函數。
data: { (-2,0), (-1,0), (0,0), (1,0), (2,0) } regression function: L(f(x)) = (2a + b) - (ax² + bx + c) - 1
自訂函數可以推廣成自訂函數網路。函數網路末端接上泛函數,即是代入。大量資料拿來訓練函數網路。
符號解演算法(Galerkin method)(linearization)
推定解是自訂函數的加權總和(基底的線性組合),係數待求。
assume f(x) = w₀ φ₀(x) + w₁ φ₁(x) + w₂ φ₂(x)
再推定泛函數與自訂函數的點積等於零。
可以想成施測。挑選數個函數,進行投影,必須為零。
⎧ L(f(x)) dot φ₀(x) = 0 ⎨ L(f(x)) dot φ₁(x) = 0 ⎩ L(f(x)) dot φ₂(x) = 0
值得一提的是,一次微分方程式,得到一次方程組,容易求解。
符號解演算法(Parker–Sochacki method)(approximation)
推定解是多項式函數(例如泰勒級數),係數待求。
多項式函數容易微分、容易移項。
數值解演算法(backward Euler method)(implicit Euler method)(dynamic programming)
函數方程式離散化,移項整理,得到遞迴公式,依序填值。
d —— f(x) = f(x) + 1 dx
(f(x) - f(x - Δx)) / Δx = f(x) + 1 backward difference (f[i] - f[i-1] ) / Δx = f[i] + 1 array indexing f[i] - f[i-1] = f[i] Δx + Δx f[i] - f[i] Δx = f[i-1] + Δx f[i] (1 - Δx) = f[i-1] + Δx f[i] = (f[i-1] + Δx) / (1 - Δx) recurrence
數值解演算法(forward Euler method)(explicit Euler method)(extrapolation)
難以移項整理的情況下,不得不修改索引值。恰是前向差分。
d —— f(x) = x sqrt(f(x)) dx
(f(x) - f(x - Δx)) / Δx = x sqrt(f(x)) backward difference (f[i] - f[i-1] ) / Δx = (i-1) sqrt(f[i-1]) array indexing f[i] = f[i-1] + (i-1) sqrt(f[i-1]) Δx recurrence
(f(x + Δx) - f(x)) / Δx = x sqrt(f(x)) forward difference (f[i+1] - f[i]) / Δx = i sqrt(f[i]) array indexing f[i+1] = f[i] + Δx i sqrt(f[i]) same recurrence
畫成函數圖形,宛如外插。利用原處斜率,求得下一處函數值。
斜率取自微分方程式的右式,完全不需要移項整理。
f(xₙ₊₁) = f(xₙ) + Δx f′(xₙ)
數值解演算法(multistep method)(Adams–Bashforth method)
指數函數、三角函數、非線性函數,函數曲線斜率變化極大。只取一處斜率,往往不夠精準。因此取多處斜率,求加權平均數。取先前計算過的斜率,節省計算時間。宛如線性遞迴公式。
斜率數量、斜率地點、權重大小,可以自由設定,但是必須滿足一致性、滿足泰勒近似。一致性留待後面章節介紹。
經典的設定方式是AB2。取兩處斜率:原處、上一處。其兩個權重:3/2、-1/2。
另外還有很多花招,例如AM4、BDF2,這裡就不介紹了。
⎰ f(xₙ₊₁) = f(xₙ) + Δx sₙ ⎱ sₙ = 3/2 f′(xₙ) - 1/2 f′(xₙ₋₁)
f(xₙ) = f(xₙ₋₁) + 3/2 Δx f′(xₙ₋₁) - 1/2 Δx f′(xₙ₋₂)
數值解演算法(multistage method)(Runge–Kutta method)
方才取左方多處斜率。現在取右方多處斜率。畢竟目的是右方函數值。
右方各處斜率未知,需要一一計算,甚至反覆計算。遞增法改成遞推法。從原處斜率開始,遞推下一處斜率。即時採用最新斜率,更加精準。
斜率數量、斜率地點、權重大小,可以自由設定,但是必須滿足一致性、滿足泰勒近似。一致性留待後面章節介紹。
經典的設定方式是RK4。取四處斜率:原處、半步、半步、一步。其四個權重:1/6、1/3、1/3、1/6。
另外還有很多花招,例如BS23、RKF45,這裡就不介紹了。
differential equation - dynamical system🚧
dynamical system(time-dependent differential equation)
本文介紹微分方程式的其中一種特例:動態系統。
一、未知函數擁有一個時間變數t、任意個空間變數xyz。
二、未知函數對時間微分,出現在方程式之中。
(簡單起見,下方數學式子省略係數、相乘、變換。)
∂ ∂ f(t,x) + —— f(t,x) + —— f(t,x) ∂t ∂x ∂² ∂² ∂² + ——— f(t,x) + ——— f(t,x) + ———— f(t,x) + ... ∂t² ∂x² ∂t∂x + 1 + t + x + t² + tx + x² + ... = 0 t: time variable x, y, z: space variables
動態系統的特色:解是動畫。解隨著時間改變。
注意到,動態系統的時間變數t和空間變數xyz,不一定非得是物理學的時間和空間,也可以是其他事物。取名時間變數和空間變數,是為了形成動畫。
重新整理方程式,以便形成動畫。
未知函數只對時間微分,一律挪到左式。
(簡單起見,左式恰好只有一項:未知函數對時間一次微分。)
∂ ∂ ∂² ∂² —— f(t,x) = - f(t,x) - —— f(t,x) - ——— f(t,x) - ———— f(t,x) - ... ∂t ∂x ∂x² ∂t∂x - 1 - t - x - t² - tx - x² - ...
左式是前後兩幀的變化程度。右式重新包裝成泛函數。形成動態系統的標準式。
∂ —— f(t,x) = F(f(t,x), t, x) ∂t
symbolic solution
動態系統的符號解,已經形成一門複雜的學問。由於這不是我的專長,就不多提了。
numeric solution
動態系統的數值解,我分成兩章。第一章實務,寫程式求得數值解。第二章理論,證明數值解符合符號解。
discretization
未知函數實施離散化,以便計算數值解。
(簡單起見,以下採用浮點數運算、單點函數值。)
time-stepping method
大家以動態系統的標準式求得數值解。給定當前時刻的數值解,求得下個時刻的數值解。宛如gradient descent。
這個手法沒有一致公認的名稱。有人稱作time-stepping method、time-marching method、time-integration method。
∂ —— f(t,x) = F(f(t,x), t, x) dynamical system ∂t f(t+Δt,x) - f(t,x) —————————————————— = F(f(t,x), t, x) discretization Δt f(t+Δt,x) = f(t,x) + F(f(t,x), t, x) ⋅ Δt time-stepping equation ^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ ^^ next current viewed as slope time frame frame step
void numerical_simulation() { // time duration t₀ := beginning_time; tₙ := ending_time; // initialize first frame f(t₀, ⋅) := initial_values; // draw first frame draw(f(t₀, ⋅)); // time-stepping loop for (t = t₀; t <= tₙ; t += Δt) { // compute next frame f(t+Δt, ⋅) := f(t, ⋅) + F(i, t, ⋅) * Δt; // draw next frame draw(f(t+Δt, ⋅)); } }
numerical simulation
數值模擬。微分方程式,求得數值解。四個步驟:
(1) numerical scheme:數值方案。精心設計的遞迴公式,符合微分方程式。 (2) numerical iteration:數值遞推。套用遞迴公式,逐步求得數值解。 (3) numerical error:數值誤差。數值遞推過程,數值解與符號解的差距。 (4) numerical convergence:數值收斂。數值遞推過程,差距趨近零。
numerical scheme
數值方案。精心設計的遞迴公式,符合微分方程式。
大家分開討論時間與空間。考慮三個項目:
(1) temporal discretization:時間離散化。時間步進的步伐大小與斜率大小。 (2) spatial discretization:空間離散化。取樣與擇鄰。 (3) implicit method:隱式法。右式是下個時刻。左式右式都有未知項。 explicit method:顯式法。右式是當前時刻。僅左式有未知項。
temporal discretization
時間離散化。就是先前章節提到的三種方式:
Euler method:歐拉法。使用當前時刻,求得下個時刻。 multistep method:多步法。使用當前時刻與多個過往時刻,求得下個時刻。 multistage method:多階段法。細分當前時刻至下個時刻,反覆求得這些時刻。
Euler method:歐拉法。取一處斜率。 multistep method:多步法。取多處斜率。都是左方斜率。 multistage method:多階段法。求多次斜率。都是右方斜率。
實務上採用歐拉法。想要減少數值誤差則換成多階段法。花招百出,各有利弊。
舉例來說,下述微分方程式:
d —— f(t,x) = F(f(t), t, x) dt
時間離散化。
Euler method: f(t+Δt,x) - f(t,x) —————————————————— = F(f(t), t, x) Δt multistep method (AB2): ⎧ k₁ = F(f(t,x), t, x) ⎪ k₂ = F(f(t-Δt,x), t-Δt, x) ⎨ ⎪ f(t+Δt,x) - f(t,x) ⎪ —————————————————— = (3/2) k₁ - (1/2) k₂ ⎩ Δt multistage method (RK4): ⎧ k₁ = F(f(t,x), t, x) ⎪ k₂ = F(f(t,x) + k₁ ½Δt, t + ½Δt, x) ⎪ k₃ = F(f(t,x) + k₂ ½Δt, t + ½Δt, x) ⎨ k₄ = F(f(t,x) + k₃ 1Δt, t + 1Δt, x) ⎪ ⎪ f(t+Δt,x) - f(t,x) ⎪ —————————————————— = (1/6)k₁ + (2/6)k₂ + (2/6)k₃ + (1/6)k₄ ⎩ Δt
改寫成陣列。
Euler method: f[n+1][i] - f[n][i] ——————————————————— = F(f[n][i], t, x) Δt multistep method (AB2): ⎧ k₁ = F(f[n][i], t, x) ⎪ k₂ = F(f[n-1][i], t-Δt, x) ⎨ ⎪ f[n+1][i] - f[n][i] ⎪ ——————————————————— = (3/2)k₁ - (1/2)k₂ ⎩ Δt multistage method (RK4): ⎧ k₁ = F(f[n][i], t, x) ⎪ k₂ = F(f[n][i] + k₁⋅(1/2)Δt, t+(1/2)Δt, x) ⎪ k₃ = F(f[n][i] + k₂⋅(1/2)Δt, t+(1/2)Δt, x) ⎨ k₄ = F(f[n][i] + k₃⋅Δt, t+Δt, x) ⎪ ⎪ f[n+1][i] - f[n][i] ⎪ ——————————————————— = (1/6)k₁ + (2/6)k₂ + (2/6)k₃ + (1/6)k₄ ⎩ Δt
時間離散化圖表稱作「Butcher tableau」。
multistep method (AB2): n n-1 n-2 n-3 ┌───────────────────────────┐ │ 1 │ Euler method ╞═══════════════════════════╡ │ 3/2 -1/2 │ AB2 ╞═══════════════════════════╡ │ 23/12 -16/12 5/12 │ AB3 ╞═══════════════════════════╡ │ 55/24 -59/24 37/24 -9/24 │ AB4 └───────────────────────────┘ multistage method (RK4): shift amount Δt k₁ k₂ k₃ k₄ ┌───────────────────────┐ │ 0 │ 0 0 0 0 │ round 1 │ 1/2 │ 1/2 0 0 0 │ round 2 │ 1/2 │ 0 1/2 0 0 │ round 3 │ 1 │ 0 0 1 0 │ round 4 └─────┼─────────────────│ │ 1/6 2/6 2/6 1/6 │ round weight └─────────────────┘
spatial discretization
空間離散化。考慮微分運算離散化的三種方式:
backward difference:後向差分。左邊。(f[i] - f[i-1]) / Δx forward difference:前向差分。右邊。(f[i+1] - f[i]) / Δx central difference:中央差分。中間。(f[i+1] - f[i-1]) / (2 Δx)
時間的微分運算離散化,無論採用哪種方式,計算過程都是一模一樣。我們只需要考慮空間的微分運算離散化。
實務上採用後向差分。想要減少數值誤差則換成中央差分。甚至兩者混用。花招百出,各有利弊。
舉例來說,下述微分方程式:
d d —— f(t,x) = —— f(t,x) dt dx
空間離散化。(時間離散化採用歐拉法。)
backward difference: f(t+Δt,x) - f(t,x) f(t,x) - f(t,x-Δx) —————————————————— = —————————————————— Δt Δx forward difference: f(t+Δt,x) - f(t,x) f(t,x+Δx) - f(t,x) —————————————————— = —————————————————— Δt Δx central difference: f(t+Δt,x) - f(t,x) f(t,x+Δx) - f(t,x-Δx) —————————————————— = ————————————————————— Δt 2 Δx
改寫成陣列。
backward difference: f[n+1][i] - f[n][i] f[n][i] - f[n][i-1] ——————————————————— = ——————————————————— Δt Δx forward difference: f[n+1][i] - f[n][i] f[n][i+1] - f[n][i] ——————————————————— = ——————————————————— Δt Δx central difference: f[n+1][i] - f[n][i] f[n][i+1] - f[n][i-1] ——————————————————— = ————————————————————— Δt 2 Δx
空間離散化圖表稱作「stencil」。
backward difference: ┌───────┐ n+1 │ · │ n │ · · │ └───────┘ i-1 i i+1 forward difference: ┌───────┐ │ · │ │ · · │ └───────┘ central difference: ┌───────┐ │ · │ │ · · │ └───────┘
implicit method / explicit method
時間索引值有兩種設定方式:
implicit method:隱式法。右式是下個時刻。左式右式都有未知項。 explicit method:顯式法。右式是當前時刻。僅左式有未知項。
硬生生多出式字。
實務上採用隱式法。想要省時則換成顯式法,但是可能不收斂。甚至兩者混用。順帶一提,兩者名稱源自隱方程式和顯方程式。
舉例來說,下述微分方程式:
d d —— f(t,x) = —— f(t,x) dt dx
時間離散化(歐拉法)、空間離散化(後向差分)。
implicit method: f(t+Δt,x) - f(t,x) f(t+Δt,x) - f(t+Δt,x-Δx) —————————————————— = ———————————————————————— Δt Δx explicit method: f(t+Δt,x) - f(t,x) f(t,x) - f(t,x-Δx) —————————————————— = —————————————————— Δt Δx
改寫成陣列。
implicit method: f[n+1][i] - f[n][i] f[n+1][i] - f[n+1][i-1] ——————————————————— = ——————————————————————— Δt Δx explicit method: f[n+1][i] - f[n][i] f[n][i] - f[n][i-1] ——————————————————— = ——————————————————— Δt Δx
移項整理成遞迴公式。
implicit method: f[n+1][i-1] ⋅ Δt - f[n][i] ⋅ Δx f[n+1][i] = ——————————————————————————————— Δt - Δx explicit method: Δt f[n+1][i] = f[n][i] + ———— (f[n][i] - f[n][i-1]) Δx
隱式法是標準方法。優點是正確,缺點是難以移項整理成遞迴公式。甚至無法移項整理,必須解方程式,導致時間複雜度升高。甚至無法求解,只好放棄隱式法、採用顯式法。
顯式法是投機取巧的方法。優點是一定可以移項整理成遞迴公式、不必解方程式,缺點是可能不收斂。
備註
temporal discretization和spatial discretization不是一致公認的名稱,不過由於容易記憶,近年來逐漸風行。以下補充其他名稱。
時間步進的步伐大小與斜率:temporal discretization、time-stepping discretization、time integration,以及上述單字重新組合。其方法稱作time-stepping scheme、numerical integrator。
時間暨空間的取樣與擇鄰:spatial discretization、domain discretization。
numerical iteration
數值遞推。套用遞迴公式,逐步求得數值解。考慮三個項目:
(1) boundary:邊界。遞迴公式計算範圍。 (2) initial condition:初始條件。遞迴公式已知數值。時間邊界函數值。 boundary condition:邊界條件。遞迴公式已知數值。空間邊界函數值。 (3) boundary scheme:邊界方案。遞迴公式邊界處理。
boundary
邊界。計算範圍。雖然取名邊界,但是重點在於範圍。
我們只關心一塊有限範圍,而不是從負無限大到正無限大。
動態系統當中,邊界細分為時間邊界、空間邊界。
時間範圍,只能是一段區間。空間範圍,可以是矩形、圓形、任意封閉區域。其中最棒的形狀是一維區間、二維矩形、三維立方體,恰好符合程式語言的陣列格式。其他形狀多少會有冗餘的陣列元素。
建立陣列,依序填值,不超過邊界,得到數值解。
最後隨便舉三個例子:
f(t) 5 ≤ t ≤ 10 time is an 1D interval space is a 0D point (spatial boundary is a point) f(t,x) 5 ≤ t ≤ 10 time is an 1D interval -10 ≤ x ≤ +10 space is an 1D interval (spatial boundary is two endpoints) f(t,x,y) 5 ≤ t ≤ 10 time is an 1D interval x² + y² ≤ 10 space is a 2D disk (spatial boundary is a circle)
initial condition / boundary condition
動態系統當中,邊界函數值細分成初始值、邊界值。
initial value:初始值。時間邊界函數值,其時刻是開始時刻t₀。 boundary value:邊界值。空間邊界函數值。
動態系統當中,問題細分為初始值問題、邊界值問題。
初始值問題較簡單,演算法如前所述。邊界值問題較困難,演算法更加複雜,不屬於本章範疇。
initial value problem:初始值問題。邊界值不是預定數值,取決於鄰居數值。 boundary value problem:邊界值問題。邊界值是預定數值。
初始值視實際問題而定。例如零函數、脈衝函數、隨機函數。
(1) zero initial condition 零初始條件:一律是零 (2) delta-pulse initial condition 脈衝初始條件:一處非零 (3) random initial condition 隨機初始條件:亂數
最難纏的初始值是隨機函數。必須謹慎內插適當數值,以確保數值連續平滑。一種替代方案是smooth noise:大量弦波疊加,頻率呈倍數,振幅為隨機數,相位是零。
邊界值不是預定數值,稱作初始值問題。邊界值視實際問題而定。例如週期函數、對稱函數、無界函數。
(1) periodic boundary condition 週期邊界條件:無限循環 (2) symmetric boundary condition 對稱邊界條件:牆面反彈 (3) open boundary condition 開放邊界條件:無限空間
最難纏的邊界值是無界函數。必須謹慎外插適當數值,以確保邊界內緣數值不受影響。一種替代方案是sponge layer:海綿層置於邊界外緣,海綿層的函數值快速衰減至零。海綿層的函數值根據距離遠近乘上適當權重,例如餘弦函數。
邊界值是預定數值,稱作邊界值問題。邊界值視實際問題而定。例如函數值、導數值。
(1) Dirichlet boundary condition 狄利克雷邊界條件:函數值 (2) Neumann boundary condition 諾伊曼邊界條件:導數值(的法線分量) (3) Cauchy boundary condition 柯西邊界條件:上述兩者 (4) Robin boundary condition 羅賓邊界條件:上述兩者的加權總和
這些邊界值都相當難纏。函數值必須採用隱式法。導數值必須將微分方程式轉換成積分方程式,而這不屬於本章範疇。一種替代方案是shooting method:亂槍打鳥、試誤法。邊界值問題簡化為初始值問題。嘗試各種初始值(發射地點),各自進行數值遞推(行進軌道),檢查邊界值是否恰好符合預定數值(檢查靶子)。僅適用於零維空間。
實際問題還有各式各樣的初始條件與邊界條件,但是目前尚未形成一套知識體系,無法為大家介紹。例如零散時刻零散地點已知數值、外因即時影響數值。等你發表論文。
boundary scheme
邊界方案。邊界附近,遞迴公式變數索引值超出邊界,導致數值方案需要調整。
週期邊界條件、對稱邊界條件,只需微調索引值,取絕對值、取餘數。開放邊界條件,需要大動土木,兩種解法:
one-side difference:單邊差分。縮減遞迴公式,變數索引值只剩邊界內側。 ghost point:鬼點。擴大陣列外圍,變數索引值可達邊界外側。
單邊差分。左邊界用前向差分、右邊界用後向差分。缺點是數值解跑偏。
鬼點。擴大陣列外圍。數量:源自遞迴公式右式,又源自差分公式。數值:源自邊界內側數值。
陣列外圍沒有一致公認的名稱。此處採用ghost point。其他名稱:extra/virtual/ghost接sample/point/cell/element。
ghost point需要設定數值。兩種解法:
一、迴歸/內插。例如弦波迴歸、多項式內插。需要指定迴歸函數/內插函數。缺點是不合邏輯。數值解理應取決於遞迴公式,不應取決於自行假定的迴歸函數/內插函數。你有經驗根據另當別論。
二、近似/外插。例如泰勒近似、歐拉外插。需要指定導數值,即是追加邊界條件Neumann boundary condition。缺點是不符現實。我們哪知道實際的導數值。你有辦法測量導數值另當別論。
撇開邊界不談,平行計算也需要ghost point。空間分割成多個區塊,各個區塊各自計算。想要計算一個區塊的邊界函數值,需要擷取隔壁區塊的邊界函數值。ghost point是隔壁區塊的邊界函數值。
備註
內插interpolation、外插extrapolation,兩者都是在推測函數值。前者針對已知函數值之間,後者針對已知函數值之外。
time-stepping method就是外插,推測下個時刻的數值解。
ghost point也是外插,推測邊界外側的數值解。
最初的、最經典的外插演算法,就是先前章節提到的Euler method。又稱作Euler extrapolation。
由於這些概念全是外插,促使大家另創名稱。數值模擬time-stepping method等等、時間離散化temporal discretization等等、陣列外圍ghost point等等。天花亂墜,其實都是外插。
matrix formulation of the numerical scheme
接下來介紹實務上經常使用的技巧:遞迴公式改寫成矩陣運算。
iteration matrix:遞推矩陣。遞迴公式恰是一次遞迴函數,可以改寫成矩陣運算。 local linearization:局部線性化。遞迴公式強行近似成一次遞迴函數。
iteration matrix
當遞迴公式恰是線性遞迴函數,可以改寫成矩陣A。
當遞迴公式恰是一次遞迴函數,再追加向量b。
implicit method: f̃⁽ⁿ⁾ = A f̃⁽ⁿ⁺¹⁾ + b (resolution) explicit method: f̃⁽ⁿ⁺¹⁾ = A f̃⁽ⁿ⁾ + b (evaluation)
隱式法,習慣改寫成矩陣求解。形成一次方程組。
顯式法,無須改寫成矩陣求值。計算時間反而變長。
(簡單起見,我用顯式法作為主要範例。)
週期邊界條件、對稱邊界條件,只需要調整矩陣數值。開放邊界條件,還需要調整矩陣尺寸,以囊括陣列外圍。
(簡單起見,我寫成負數索引值。請自行改成非負數索引值。)
3-point explicit scheme in polynomial formulation: f[n+1][i] = α f[n][i-1] + β f[n][i] + γ f[n][i+1] 3-point explicit scheme in matrix formulation: f̃⁽ⁿ⁺¹⁾ = A f̃⁽ⁿ⁾ periodic boundary condition: ⎡ f[n+1][0] ⎤ ⎡ β α γ ⎤⎡ f[n][0] ⎤ ⎢ f[n+1][1] ⎥ ⎢ γ β α ⎥⎢ f[n][1] ⎥ ⎢ f[n+1][2] ⎥ ⎢ γ β α ⎥⎢ f[n][2] ⎥ ⎢ f[n+1][3] ⎥ ⎢ γ β α ⎥⎢ f[n][3] ⎥ ⎢ : ⎥ = ⎢ ⋱ ⎥⎢ : ⎥ ⎢ f[n+1][♯x-4] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-4] ⎥ ⎢ f[n+1][♯x-3] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-3] ⎥ ⎢ f[n+1][♯x-2] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-2] ⎥ ⎣ f[n+1][♯x-1] ⎦ ⎣ α γ β ⎦⎣ f[n][♯x-1] ⎦ where f[n][0] = f[n][♯x] symmetric boundary condition: ⎡ f[n+1][0] ⎤ ⎡ β z ⎤⎡ f[n][0] ⎤ ⎢ f[n+1][1] ⎥ ⎢ γ β α ⎥⎢ f[n][1] ⎥ ⎢ f[n+1][2] ⎥ ⎢ γ β α ⎥⎢ f[n][2] ⎥ ⎢ f[n+1][3] ⎥ ⎢ γ β α ⎥⎢ f[n][3] ⎥ ⎢ : ⎥ = ⎢ ⋱ ⎥⎢ : ⎥ ⎢ f[n+1][♯x-4] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-4] ⎥ ⎢ f[n+1][♯x-3] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-3] ⎥ ⎢ f[n+1][♯x-2] ⎥ ⎢ γ β α ⎥⎢ f[n][♯x-2] ⎥ ⎣ f[n+1][♯x-1] ⎦ ⎣ z β ⎦⎣ f[n][♯x-1] ⎦ (let z = α+γ) where f[n][-1] = f[n][1] f[n][♯x] = f[n][♯x-2] open boundary condition: ⎡ f[n+1][-1] ⎤ ⎡ │ │ ⎤⎡ f[n][-1] ⎤ ⎢──────────────⎥ ⎢──┼─────────────────┼──⎥⎢────────────⎥ ⎢ f[n+1][0] ⎥ ⎢ γ│β α │ ⎥⎢ f[n][0] ⎥ ⎢ f[n+1][1] ⎥ ⎢ │γ β α │ ⎥⎢ f[n][1] ⎥ ⎢ f[n+1][2] ⎥ ⎢ │ γ β α │ ⎥⎢ f[n][2] ⎥ ⎢ f[n+1][3] ⎥ ⎢ │ γ β α │ ⎥⎢ f[n][3] ⎥ ⎢ : ⎥ = ⎢ │ ⋱ │ ⎥⎢ : ⎥ ⎢ f[n+1][♯x-4] ⎥ ⎢ │ γ β α │ ⎥⎢ f[n][♯x-4] ⎥ ⎢ f[n+1][♯x-3] ⎥ ⎢ │ γ β α │ ⎥⎢ f[n][♯x-3] ⎥ ⎢ f[n+1][♯x-2] ⎥ ⎢ │ γ β α│ ⎥⎢ f[n][♯x-2] ⎥ ⎢ f[n+1][♯x-1] ⎥ ⎢ │ γ β│α ⎥⎢ f[n][♯x-1] ⎥ ⎢──────────────⎥ ⎢──┼─────────────────┼──⎥⎢────────────⎥ ⎣ f[n+1][♯x] ⎦ ⎣ │ │ ⎦⎣ f[n][♯x] ⎦ (the first row and the last row can be anything, e.g. zeros) (since they are unrelated to calculation) where f[n][-1] is extrapolated from f[n][0...k] f[n][♯x] is extrapolated from f[n][♯x-1...♯x-k]
陣列外圍是已知數值,不符合一次方程組的標準格式。陣列外圍視作區塊矩陣,挪至向量b,改寫成標準格式。
⎡ y₀ ⎤ ⎡ A₀₀ │ A₀₁ │ A₀₂ ⎤ ⎡ x₀ ⎤ ⎢────⎥ ⎢─────┼─────┼─────⎥ ⎢────⎥ ⎢ y₁ ⎥ = ⎢ A₁₀ │ A₁₁ │ A₁₂ ⎥ ⎢ x₁ ⎥ block matrix ⎢────⎥ ⎢─────┼─────┼─────⎥ ⎢────⎥ ⎣ y₂ ⎦ ⎣ A₂₀ │ A₂₁ │ A₂₂ ⎦ ⎣ x₂ ⎦ y₁ = A₁₀x₀ + A₁₁x₁ + A₁₂x₂ middle row y₁ = A₁₁x₁ + (A₁₀x₀ + A₁₂x₂) y = Ax + b ^^^^^ ^^^^^^^^^^^^^^^ Ax b where x₀ and x₂ are known values that are extrapolated by x₁
matrix solver
矩陣求解演算法,又稱作矩陣求解器。根據矩陣特性,採用適合的矩陣求解器,減少計算時間。
0D space: (1) algorthms for equation (a) bisection method (b) tangent method (Newton's method) (c) secant method (d) fixed-point iteration 1D space: (1) algorthms for bidiagonal matrix (2) algorthms for tridiagonal matrix (3) algorthms for diagonal-constant matrix (Toeplitz matrix) ND space: (1) algorthms for matrix (a) successive over-relaxation (b) conjugate gradient method (2) algorthms for large-scale sparse matrix
一、零維空間動態系統,就一純量,哪來矩陣。要嘛手工移項推導,要嘛函數求解。經典演算法是二分法、切線法、割線法、不動點遞推法。
二、一維空間動態系統,形成雙對角矩陣、三對角矩陣、常對角矩陣。矩陣求解擁有高速演算法。然而本站尚未整理,沒辦法為大家介紹。自己看著辦吧。
三、多維空間動態系統,無法形成上述矩陣。大家直接視作大型稀疏矩陣。經典演算法是鬆弛法、共軛梯度法。經典加速技巧是預條件法、多格法。不適合使用高斯消去法、LU分解。
補充說明一下。循環矩陣,擁有更快的演算法,但是實務上鮮少遇到週期邊界條件。對稱矩陣,擁有更快的演算法,但是遞迴公式係數未必對稱。
補充說明一下。針對大型稀疏矩陣,有兩個矩陣求解加速技巧。
preconditioner method:預條件法。修改矩陣數值。 multigrid method:多格法。修改矩陣尺寸。
local linearization
當遞迴公式不是一次遞迴函數,可以強行近似成一次遞迴函數。
遞迴公式的非一次函數們,實施泰勒近似,逐個改成一次函數。
時間離散化與空間離散化:未知函數的泰勒近似。局部線性化:已知函數的泰勒近似。接著繼續做,做得更徹底。
優點是讓隱式法得以求解。缺點是每回合都要重新計算矩陣。
程式碼
現在馬上來一段程式碼,讓各位實際觀察numerical scheme和numerical iteration是怎麼回事。
零維空間微分方程式。implicit method。
d —— f(t) = f(t) + 1 dt
(f(t+Δt) - f(t)) / Δt = f(t+Δt) + 1 (f[n+1] - f[n]) / Δt = f[n+1] + 1 f[n+1] - f[n] = f[n+1] ⋅ Δt + Δt f[n+1] - f[n+1] ⋅ Δt = f[n] + Δt f[n+1] ⋅ (1 - Δt) = f[n] + Δt f[n+1] = (f[n] + Δt) / (1 - Δt)
零維空間微分方程式。explicit method。
d —— f(t) = f(t) + 1 dt
(f(t+Δt) - f(t)) / Δt = f(t) + 1 (f[n+1] - f[n]) / Δt = f[n] + 1 (f[n+1] - f[n]) = (f[n] + 1) ⋅ Δt f[n+1] = f[n] + (f[n] + 1) ⋅ Δt
零維空間微分方程組。implicit method。
Lotka–Volterra equation: ⎰ d/dt x(t) = 1.1 x(t) - 0.4 x(t) y(t) ⎱ d/dt y(t) = 0.1 x(t) y(t) - 0.4 y(t)
⎰ (x[n+1] - x[n]) / Δt = 1.1 x[n+1] - 0.4 x[n+1] y[n+1] ⎱ (y[n+1] - y[n]) / Δt = 0.1 x[n+1] y[n+1] - 0.4 y[n+1]
離散化之後,形成方程組,需要求解。
一次方程組:手工推導反矩陣、高斯喬登消去法、鬆弛法。 多項式方程組:Gröbner basis。 一般的方程組:自求多福。
此例是特殊的方程組,可以簡化為一元二次多項式方程式。雖然得到兩個候選解,但是無法確認哪一個是正解。死局了。
由於難以求解,只好放棄隱式法、採用顯式法。
零維空間微分方程組。explicit method。
Lotka–Volterra equation: ⎰ d/dt x(t) = 1.1 x(t) - 0.4 x(t) y(t) ⎱ d/dt y(t) = 0.1 x(t) y(t) - 0.4 y(t)
⎰ (x[n+1] - x[n]) / Δt = 1.1 x[n] - 0.4 x[n] y[n] ⎱ (y[n+1] - y[n]) / Δt = 0.1 x[n] y[n] - 0.4 y[n]
一維空間微分方程式。explicit method。
constant-coefficient advection equation: ∂ ∂ —— f(t,x) = -0.4 —— f(t,x) ∂t ∂x
(f(t+Δt,x) - f(t,x)) / Δt = -0.4 (f(t,x) - f(t,x-Δx)) / Δx (f[n+1][i] - f[n][i]) / Δt = -0.4 (f[n][i] - f[n][i-1]) / Δx f[n+1][i] = f[n][i] - 0.4 (f[n][i] - f[n][i-1]) ⋅ Δt / Δx f[n+1][i] = f[n][i] - C (f[n][i] - f[n][i-1]) where C = 0.4 (Δt / Δx)
二維空間微分方程式。explicit method。
heat equation: ∂ ∂² ∂² —— f(t,x,y) = 0.1 ( ——— f(t,x,y) + ——— f(t,x,y) ) ∂t ∂x² ∂y²
空間離散化:中央版本的laplace。 (f[n+1][x][y] - f[n][x][y]) / Δt = 0.1 (f[n][x][y+1] + f[n][x][y-1] + f[n][x+1][y] + f[n][x-1][y] - 4 f[n][x][y]) / Δx / Δy 移項整理 f[n+1][i][j] = f[n][i][j] + 0.1 (f[n][i][j+1] + f[n][i][j-1] + f[n][i+1][j] + f[n][i-1][j] - 4 f[n][i][j]) ⋅ Δt / Δx / Δy 兩個陣列fₙₑₓₜ[i][j]和f[i][j]輪流使用。 fₙₑₓₜ[i][j] = f[i][j] + 0.1 (f[i][j+1] + f[i][j-1] + f[i+1][j] + f[i-1][j] - 4 f[i][j]) ⋅ Δt / Δx / Δy 簡寫成C和laplace,比較清爽。 fₙₑₓₜ[i][j] = f[i][j] + C laplace(f[i][j]) where C = 0.1 (Δt / Δx / Δy)
二維空間微分方程式。implicit method。
heat equation: ∂ ∂² ∂² —— f(t,x,y) = 0.1 ( ——— f(t,x,y) + ——— f(t,x,y) ) ∂t ∂x² ∂y²
隱式法。 fₙₑₓₜ[i][j] = f[i][j] + C laplace(fₙₑₓₜ[i][j]) 簡寫成sum,比較清爽。 fₙₑₓₜ[i][j] = f[i][j] + C (sumₙₑₓₜ - 4 fₙₑₓₜ[i][j]) 移項整理,新值通通挪至左式。 (1 + 4C) fₙₑₓₜ[i][j] - C sumₙₑₓₜ = f[i][j] 一次方程組 A fₙₑₓₜ = b,已知 A 和 b,求解 fₙₑₓₜ。 採用鬆弛法,得到計算公式。 fₙₑₓₜ[i][j] = (f[i][j] + C sum) / (1 + 4C)
differential equation - dynamical system🚧
numerical error
數值誤差。數值遞推過程,符號解與數值解的差距。
symbolic solution / numeric solution
符號解、數值解,畫成圖片。
符號解、數值解,其數學符號的正式寫法。
symbolic solution: f(t, x) function f(t₀ + n Δt, x₀ + i Δx) function value at a point numeric solution: f̃(t, x) function f̃(t₀ + n Δt, x₀ + i Δx) function value at a point
數學符號可以精簡成各種風格。
symbolic solution: f(t₀ + n Δt, x₀ + i Δx) --> f(tₙ, xᵢ) --> f⁽ⁿ⁾(xᵢ) numeric solution: f̃(t₀ + n Δt, x₀ + i Δx) --> f̃(tₙ, xᵢ) --> f̃⁽ⁿ⁾(xᵢ) ─╮ ╭──────────────────╯ ╰-> f[n][i] --> fᵢ⁽ⁿ⁾
local error / global error
數值誤差,分為兩個階段:
local error: distance of first iteration of a symbolic solution and a numeric solution. ‖f⁽¹⁾ - f̃⁽¹⁾‖ global error: distance of nth iteration of a symbolic solution and a numeric solution. ‖f⁽ⁿ⁾ - f̃⁽ⁿ⁾‖
局部誤差:遞推一步,符號解、數值解兩者差距。 全域誤差:遞推n步,符號解、數值解兩者差距。
順帶一提,累加n個local error並不等於global error。global error當中,一步的誤差持續影響往後每一步。
error metric
局部誤差、全域誤差的距離函數,是下述第三種情況。
一、兩個函數的距離:黎曼積分。
‖f⁽ⁿ⁾ - g⁽ⁿ⁾‖₂ = | f(tₙ) - g(tₙ) | 0D space __________________________ ‖f⁽ⁿ⁾ - g⁽ⁿ⁾‖₂ = √ ∫ (f(tₙ,x) - g(tₙ,x))² dx 1D space _________________________________ ‖f⁽ⁿ⁾ - g⁽ⁿ⁾‖₂ = √ ∫∫ (f(tₙ,x,y) - g(tₙ,x,y))² dxdy 2D space
二、兩個離散化函數的距離:黎曼和。
我們習慣在邊界取樣,導致黎曼和在左右邊界各多出½Δx寬度。無傷大雅。如果你很在意,你可以扣掉它。
_____________________________ ‖f̃⁽ⁿ⁾ - g̃⁽ⁿ⁾‖₂ = √ ∑ᵢ (f̃(tₙ,xᵢ) - g̃(tₙ,xᵢ))² Δx 1D space ___________________________ = √ ∑ᵢ (f[n][i] - g[n][i])² Δx
三、一個函數與一個離散化函數的距離:習慣採用黎曼和。
_____________________________ ‖f⁽ⁿ⁾ - f̃⁽ⁿ⁾‖₂ = √ ∑ᵢ (f(tₙ,xᵢ) - f̃(tₙ,xᵢ))² Δx 1D space ____________________________ = √ ∑ᵢ (f(tₙ,xᵢ) - g[n][i])² Δx
differential equation - discretization🚧
discretization
離散化。未知函數實施離散化,符號轉數值,以便計算數值解。
discretization of real number: (0) number discretization 數字離散化 (a) floating-point arithmetic 四則運算離散化(浮點數運算)
discretization of real function: (1) domain discretization 定義域離散化 (a) grid (mesh-based method) 方格(網格法) (b) mesh (mesh-based method) 網格(網格法) (c) particles (meshfree method) 粒子(無網格法) (2) codomain discretization 對應域離散化 (a) function value (FDM) 單點函數值(有限差分法) (b) average function value (FVM) 區間平均函數值(有限體積法) (c) shape function (FEM) 形狀函數(有限元素法) (d) sinusoid (spectral method) 弦波(頻譜法) (3) operator discretization 運算離散化 (a) numerical arithmetic 四則運算離散化 (b) numerical differentiation 微分運算離散化 (c) numerical integration 積分運算離散化
number資料結構
大家最常使用實數。實數資料結構,已有國際標準「浮點數floating-point」。C程式語言的float、double就是浮點數。
實數資料結構,符號轉數值的誤差,稱作「四捨五入誤差round-off error」。浮點數運算總是消滅多餘的低位數。
function資料結構
大家最常使用實函數。實函數資料結構,已有共識但沒有標準。方法眾多,細節繁複:
實函數資料結構,符號轉數值的誤差,稱作「截斷誤差truncation error」。上述每種方法各有一套截斷誤差計算方式。
domain discretization
定義域離散化。函數輸入的取樣、擇鄰。
(1) domain discretization 定義域離散化 (a) grid 方格 (α) uniform grid 均勻方格 (β) regular grid 等距方格 (γ) Chebyshev grid 等弧方格 (b) mesh 網格 (α) triangular mesh 三角形網格(二維) tetrahedral mesh 四面體網格(三維) (β) quadrilateral mesh 四邊形網格(二維) hexahedral mesh 六面體網格(三維) (γ) polygonal mesh 多邊形網格(二維) polyhedral mesh 多面體網格(三維) (c) particles (point cloud) 粒子/點雲
uniform grid
均勻方格。空間切割為正方體。Δx = Δy = Δz。
符號轉數值。取樣:等距方格取樣。擇鄰:左右上下前後。
數值轉符號。傾向使用monotone cubic interpolation。
regular grid
等距方格。空間切割為長方體。Δx ≠ Δy ≠ Δz。
大家通常不會仔細區分uniform grid和regular grid。無聊。
Chebyshev grid
等弧方格。空間切割為各種長寬的長方體。
符號轉數值。取樣:等距圓弧取樣。擇鄰:左右上下前後。
數值轉符號。傾向使用polynomial interpolation。
多項式內插的缺點是Runge phenomenon:左右邊界震盪大,函數曲線與函數點的走向沒有貼合。
等距圓弧取樣,中央疏、左右密,為的就是改善缺點。
differential equation - time-stepping method🚧
numerical simulation
數值模擬。微分方程式,求得數值解。四個步驟:
(1) numerical scheme (2) numerical iteration (3) numerical error (4) numerical convergence
先前已經提過,只是複製貼上而已。以下針對每個項目,補充更多詞彙。二周目追加新要素。
numerical scheme
數值方案。面對各式各樣的微分方程式,想方設法調整遞迴公式,滿足一致性、滿足穩定性,導致收斂性。
(1) temporal discretization (2) spatial discretization (3) implicit method / explicit method
temporal discretization
時間離散化有三種技巧,可以合併使用。
(1) multistep method:多步法。取多處斜率。都是左方斜率。 (2) multistage method:多階段法。求多次斜率。都是右方斜率。 (3) multiderivative method:多導數法。採用準度更高的差分公式。
時間離散化也可以採用其他級數。理都懂然并卵。
(1) Euler extrapolation:時間離散化採用Taylor series。 (2) Adams extrapolation:時間離散化採用Maclaurin series。 (3) Richardson extrapolation:時間離散化採用geometric series。
https://mathworld.wolfram.com/AdamsMethod.html https://en.wikipedia.org/wiki/Richardson_extrapolation
基礎的時間離散化方法。物理模擬經常提及。
Euler method: 1. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F(f⁽ⁿ⁾) leapfrog method: 1. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁻¹⁾) / (2Δt) = F(f⁽ⁿ⁾) midpoint method: 1. (f⁽ⁿ⁺¹⸍²⁾ - f⁽ⁿ⁾) / (½Δt) = F(f⁽ⁿ⁾) 2. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F(f⁽ⁿ⁺¹⸍²⁾) predictor–corrector method: 1. (f̂⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F(f⁽ⁿ⁾) 2. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F((f̂⁽ⁿ⁺¹⁾ + f⁽ⁿ⁾) / 2)
Euler method:單步法。亦是單階段法。 1. 取當前時刻斜率,走一刻到下個時刻。(時間前向差分/後向差分) leapfrog method:多步法。 1. 取當前時刻斜率,從上個時刻走兩刻到下個時刻。(時間中央差分) midpoint method:兩階段法。 1. 取當前時刻斜率,走半刻到中點時刻。 2. 取中點時刻斜率,從頭重新走一刻。 predictor–corrector method:兩階段法。 1. 取當前時刻斜率,走一刻到下個時刻。 2. 取當前時刻與下個時刻的斜率平均數,從頭重新走一刻。
進階的時間離散化方法。隱性多階段法的重要流派。
implicit Runge–Kutta method └ linearly implicit Runge–Kutta method └ diagonally implicit Runge–Kutta method
higher-order finite difference
多步法、多階段法的數學式子強行展開,宛如高階差分公式。高階差分主要有兩個功用。
一、偷食步。一階差分重複n回合,其實就是n階差分、Δt與Δx變成n倍。反過來說,n階差分,其實就是Δt與Δx變成1/n倍、一口氣做n次差分。
二、微調數值解。取大量斜率的加權平均,讓數值解更符合符號解。強行修改遞迴公式的係數,嘗試通靈答案。
補個範例
spatial discretization
專著《Fundamentals of Engineering Numerical Analysis》。
(1) higher-order accuracy finite difference:增加項數,升高準度。 (2) compact finite difference:減少項數,維持準度。 (3) modified equation:修改取樣間距Δt與Δx,升高準度。 (4) modified wave number:修改係數,達成絕對一致性。
higher-order accuracy finite difference
差分公式使用多項。逐項使用泰勒近似,通通加總湊出係數,形成線性方程組,求解得到係數。推導過程在此。
也可以視作多項式內插,然後微分。大家習慣使用Lagrange interpolation。推導過程在此。
first-order central difference (with 4th-order accuracy) f′[i] = (- f[i+2] + 8 f[i+1] - 8 f[i-1] + f[i-2]) / (12 Δx) + O((Δx)⁴)
https://en.wikipedia.org/wiki/Finite_difference_coefficient
compact finite difference
使用泰勒近似求得差分公式,進一步使用Padé approximation簡化差分公式並且維持準度。
https://en.wikipedia.org/wiki/Compact_finite_difference https://people.bath.ac.uk/ensdasr/COMPACT/dasr.compact.pdf
modified equation
針對一種數值方案,修改取樣間距Δt與Δx,升高準度。
differential equation (heat equation): ∂ ∂² —— f(t,x) = k ——— f(t,x) ∂t ∂x² numerical scheme (explicit Euler method): fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ——————————————— = k —————————————————————————— Δt (Δx)² accuracy: O(Δt + (Δx)²) stability condition: k Δt 1 ————— ≤ ——— (Δx)² 2
numerical scheme: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ——————————————— = k —————————————————————————— Δt (Δx)² Taylor series of each term: Δt ∂ (Δt)² ∂² fᵢ⁽ⁿ⁺¹⁾ = fᵢ⁽ⁿ⁾ + —— —— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ + ... 1! ∂t 2! ∂t² Δt ∂ (Δt)² ∂² fᵢ⁽ⁿ⁻¹⁾ = fᵢ⁽ⁿ⁾ - —— —— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ - ... 1! ∂t 2! ∂t² Δx ∂ (Δx)² ∂² fᵢ₊₁⁽ⁿ⁾ = fᵢ⁽ⁿ⁾ + —— —— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ + ... 1! ∂x 2! ∂x² Δx ∂ (Δx)² ∂² fᵢ₋₁⁽ⁿ⁾ = fᵢ⁽ⁿ⁾ - —— —— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ - ... 1! ∂x 2! ∂x² Taylor series of each expression: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ ∂ Δt ∂² ——————————————— = —— fᵢ⁽ⁿ⁾ + ——— ——— fᵢ⁽ⁿ⁾ + ... Δt ∂t 2 ∂t² fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ∂² (Δx)² ∂⁴ —————————————————————————— = ——— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ + ... (Δx)² ∂x² 12 ∂x⁴ temporal discretization: ∂ fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ —— fᵢ⁽ⁿ⁾ = ——————————————— + O(Δt) ∂t Δt spatial discretization: ∂² fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ k ——— fᵢ⁽ⁿ⁾ = k —————————————————————————— + O((Δx)²) ∂x² (Δx)² modified temporal discretization: ∂ fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ Δt ∂² —— fᵢ⁽ⁿ⁾ = ——————————————— - ——— ——— fᵢ⁽ⁿ⁾ + O((Δt)²) ∂t Δt 2 ∂t² modified spatial discretization: ∂² fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ k ——— fᵢ⁽ⁿ⁾ = k —————————————————————————— ∂x² (Δx)² (Δx)² ∂⁴ - k ————— ——— fᵢ⁽ⁿ⁾ + O((Δx)⁴) 12 ∂x⁴ modified numerical scheme: ⎧ fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ Δt ∂² ⎪ ——————————————— - ——— ——— fᵢ⁽ⁿ⁾ ⎪ Δt 2 ∂t² ⎪ ⎪ fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ (Δx)² ∂⁴ ⎨ = k —————————————————————————— - k ————— ——— fᵢ⁽ⁿ⁾ ⎪ (Δx)² 12 ∂x⁴ ⎪ ⎪ Δt ∂² (Δx)² ∂⁴ ⎪ ——— ——— fᵢ⁽ⁿ⁾ = k ————— ——— fᵢ⁽ⁿ⁾ ⎩ 2 ∂t² 12 ∂x⁴ modified accuracy: O((Δt)² + (Δx)⁴) modified stability condition: ⎧ k Δt 1 ⎪ ————— ≤ ——— ⎪ (Δx)² 2 ⎨ ⎪ k Δt 1 ⎪ ————— = ——— (tightest) ⎩ (Δx)² 6 ∂ ∂² since heat equation —— fᵢ⁽ⁿ⁾ = k ——— fᵢ⁽ⁿ⁾ ∂t ∂x² ∂² ∂⁴ => ——— fᵢ⁽ⁿ⁾ = k² ——— fᵢ⁽ⁿ⁾ ∂t² ∂x⁴ Δt ∂² Δt ∂⁴ => ——— ——— fᵢ⁽ⁿ⁾ = k² ——— ——— fᵢ⁽ⁿ⁾ 2 ∂t² 2 ∂x⁴ Δt ∂² (Δx)² ∂⁴ thus ——— ——— fᵢ⁽ⁿ⁾ = k ————— ——— fᵢ⁽ⁿ⁾ 2 ∂t² 12 ∂x⁴ Δt (Δx)² => k² ——— = k ————— 2 12 k Δt 1 => ————— = ——— (Δx)² 6
modified wave number
針對一種數值方案,修改係數,使得零一致性變成絕對一致性。
differential equation (phase rotation equation): d —— f(x) = 𝑖 k f(x) k is a parameter (wave number) dx symbolic solution: f(x) = exp(𝑖kx) numerical scheme (leapfrog method): f[i+1] - f[i-1] ——————————————— = 𝑖 k f[i] 2 Δx substitute LHS with symbolic solution: f[i+1] - f[i-1] exp(𝑖k(i+1)Δx) - exp(𝑖k(i-1)Δx) ——————————————— = —————————————————————————————— 2 Δx 2 Δx exp(𝑖kΔx) - exp(-𝑖kΔx) = ————————————————————— exp(𝑖kiΔx) 2 Δx exp(𝑖kΔx) - exp(-𝑖kΔx) = ————————————————————— f[i] 2 Δx sin(kΔx) = 𝑖 ———————— f[i] Δx modified wave number: sin(kΔx) k' = ———————— Δx modified numerical scheme (leapfrog method): f[i+1] - f[i-1] ——————————————— = 𝑖 k' f[i] 2 Δx
https://www.nas.nasa.gov/assets/nas/pdf/ams/2018/introtocfd/Intro2CFD_Lecture2_Lecture3_Pulliam_Chap3_Modk.pdf
implicit method / explicit method
決定時刻。
(1) implicit method:隱式法。右式一律取新值。 (2) explicit method:顯式法。右式一律取舊值。 (3) semi-implicit method:半隱式法。有些取新值,有些取舊值。 (4) trapezoidal method:梯形法。新值加舊值然後除以二。
implicit method:隱式法。右式一律取新值。 (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F(f⁽ⁿ⁺¹⁾) ^^^^^^ explicit method:顯式法。右式一律取舊值。 (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F(f⁽ⁿ⁾) ^^^^ semi-implicit method:半隱式法。有些取新值、有些取舊值。 (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F₁(f⁽ⁿ⁺¹⁾) + F₂(f⁽ⁿ⁾) ^^^^^^ ^^^^ trapezoidal method:梯形法。新值加舊值然後除以二。 (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F((f⁽ⁿ⁺¹⁾ + f⁽ⁿ⁾) / 2) ^^^^^^^^^^^^^^^^^^^
未知函數只有一個輸入(常微分方程式ODE)的情況下,無法區分時間變數、空間變數,無法區分差分方法、隱顯方法。此時採用差分方法來命名。
for ordinary differential equation, backward method <=> implicit method forward method <=> explicit method
semi-implicit method
進階的半隱式法。
(1) alternating-direction implicit method:交替方向隱式法。 (2) explicit–implicit method:顯式隱式法。
ADI method:多階段法,每階段輪流讓其中一個空間變數是隱,其餘是顯。
優點是形成多對角線矩陣,節省計算時間。缺點是二個空間變數,可以滿足穩定性;三個空間變數以上,可能不滿足穩定性。
兩個空間變數:兩階段。先走半刻,X隱Y顯。再走半刻,X顯Y隱。 三個空間變數:三階段。每次走1/3刻,輪流讓一個空間變數是隱。
differential equation: d d d —— f(t,x,y) = —— f(t,x,y) + —— f(t,x,y) dt dx dy alternating-direction implicit method: 1. from f[n] to f[n+½]: (f[n+½][i][j] - f[n][i][j]) / ½Δt = (f[n+½][i][j] - f[n+½][i-1][j]) / Δx + (f[n][i][j] - f[n][i][j-1]) / Δy 2. from f[n+½] to f[n+1]: (f[n+1][i][j] - f[n+1][i][j]) / ½Δt = (f[n+½][i][j] - f[n+½][i-1][j]) / Δx + (f[n+1][i][j] - f[n+1][i][j-1]) / Δy alternating-direction implicit method: 1. (f⁽ⁿ⁺¹⸍²⁾ - f⁽ⁿ⁾ ) / ½Δt = Fₓ(f⁽ⁿ⁺¹⸍²⁾) + F(f⁽ⁿ⁾) 2. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁺¹⸍²⁾) / ½Δt = Fₓ(f⁽ⁿ⁺¹⸍²⁾) + F(f⁽ⁿ⁺¹⁾) alternating-direction implicit method: 1. (k₁ - k₀) / ½Δt = Fₓ(k₁) + F(k₀) 2. (k₂ - k₁) / ½Δt = Fₓ(k₁) + F(k₂) where k₀ = f⁽ⁿ⁾ f⁽ⁿ⁺¹⁾ = k₂ accuracy: O((Δt)² + (Δx)²)
differential equation: d d d d —— f(t,x,y,z) = —— f(t,x,y,z) + —— f(t,x,y,z) + —— f(t,x,y,z) dt dx dy dz alternating-direction implicit method: 1. (k₁ - k₀) / ⅓Δt = Fₓ(k₁) + F(k₀) + F(k₀) 2. (k₂ - k₁) / ⅓Δt = Fₓ(k₁) + F(k₂) + F(k₁) 3. (k₃ - k₂) / ⅓Δt = Fₓ(k₂) + F(k₂) + F(k₃) where k₀ = f⁽ⁿ⁾ f⁽ⁿ⁺¹⁾ = k₃
Douglas–Gunn ADI method:多階段法,每階段額外讓一個空間變數是梯形,其餘是原形。
缺點是難以移項整理成遞迴公式。優點是滿足穩定性。
differential equation: d d d d —— f(t,x,y,z) = —— f(t,x,y,z) + —— f(t,x,y,z) + —— f(t,x,y,z) dt dx dy dz Douglas–Gunn alternating-direction implicit method: 1. (k₁ - k₀) / ⅓Δt = Fₓ(½(k₁+k₀)) + F(k₀) + F(k₀) 2. (k₂ - k₁) / ⅓Δt = Fₓ(½(k₁+k₀)) + F(½(k₂+k₀)) + F(k₀) 3. (k₃ - k₂) / ⅓Δt = Fₓ(½(k₁+k₀)) + F(½(k₂+k₀)) + F(½(k₃+k₀)) where k₀ = f⁽ⁿ⁾ f⁽ⁿ⁺¹⁾ = k₃ accuracy: O((Δt)² + (Δx)²)
explicit–implicit method:兩道方程式,第一式顯式法、第二式隱式法。用來打消computational mode,以減少數值誤差。【待補文字】
differential equations: ⎧ d d ⎪ —— f(t,x) = —— g(t,x) ⎪ dt dx ⎨ ⎪ d d ⎪ —— g(t,x) = —— f(t,x) ⎩ dt dx explicit–implicit method: f[n+1][i] - f[n][i] g[n][i] - g[n][i-1] 1. ——————————————————— = ——————————————————— Δt Δx g[n+1][i] - g[n][i] f[n+1][i] - f[n+1][i-1] 2. ——————————————————— = ——————————————————————— Δt Δx explicit–implicit method: 1. (f⁽ⁿ⁺¹⁾ - f⁽ⁿ⁾) / Δt = F₁(g⁽ⁿ⁾) 2. (g⁽ⁿ⁺¹⁾ - g⁽ⁿ⁾) / Δt = F₂(f⁽ⁿ⁺¹⁾)
trapezoidal method
梯形法。右式代入新值、右式代入舊值,相加,除以二。
當遞迴公式恰是一次遞迴函數,可以逐項處理。
梯形法的經典數值方案,針對heat equation。
Crank–Nicolson method:Euler method with fᵢ⁽ⁿ⁺¹⸍²⁾ = (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁾) / 2 for all i Du Fort-Frankel method:leapfrog method with fᵢ⁽ⁿ⁾ = (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁻¹⁾) / 2
Crank–Nicolson method:前向時間、中央空間、前向平均。
遞迴公式宛如隱式法,需要解方程式。一致性更勝隱式法,準度數量級更高,是為優點。穩定性宛如隱式法,Δt與Δx無限制。
heat equation: ∂ ∂² —— f(t,x) = k ——— f(t,x) ∂t ∂x² implicit Euler method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ fᵢ₋₁⁽ⁿ⁺¹⁾ - 2fᵢ⁽ⁿ⁺¹⁾ + fᵢ₊₁⁽ⁿ⁺¹⁾ ——————————————— = k ———————————————————————————————— Δt (Δx)² explicit Euler method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ——————————————— = k —————————————————————————— Δt (Δx)² Crank–Nicolson method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ fᵢ₋₁⁽ⁿ⁺¹⸍²⁾ - 2fᵢ⁽ⁿ⁺¹⸍²⁾ + fᵢ₊₁⁽ⁿ⁺¹⸍²⁾ ——————————————— = k —————————————————————————————————————— Δt (Δx)² where fᵢ⁽ⁿ⁺¹⸍²⁾ = (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁾) / 2 Crank–Nicolson method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ 1 ⎛ fᵢ₋₁⁽ⁿ⁺¹⁾ - 2fᵢ⁽ⁿ⁺¹⁾ + fᵢ₊₁⁽ⁿ⁺¹⁾ ——————————————— = ——— ⎜ k ———————————————————————————————— Δt 2 ⎝ (Δx)² fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ⎞ + k —————————————————————————— ⎟ (Δx)² ⎠ Crank–Nicolson method: - λ fᵢ₋₁⁽ⁿ⁺¹⁾ + (1-2λ) fᵢ⁽ⁿ⁺¹⁾ - λ fᵢ₊₁⁽ⁿ⁺¹⁾ = λ fᵢ₋₁⁽ⁿ⁾ + (1-2λ) fᵢ⁽ⁿ⁾ + λ fᵢ₊₁⁽ⁿ⁾ where λ = kΔt/(Δx)²
Du Fort–Frankel method:中央時間、中央空間、中央平均。
遞迴公式宛如顯式法,不需要解方程式,是為優點。一致性等同跳蛙法,準度數量級相同。穩定性宛如隱式法,Δt與Δx無限制。然而,僅滿足零穩定性,不滿足絕對穩定性。
leapfrog method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁻¹⁾ fᵢ₋₁⁽ⁿ⁾ - 2fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ————————————————— = k —————————————————————————— 2 Δt (Δx)² Du Fort–Frankel method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁻¹⁾ fᵢ₋₁⁽ⁿ⁾ - 2f̄ᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ ————————————————— = k —————————————————————————— 2 Δt (Δx)² where f̄ᵢ⁽ⁿ⁾ = (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁻¹⁾) / 2 Du Fort–Frankel method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁻¹⁾ fᵢ₋₁⁽ⁿ⁾ - (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁻¹⁾) + fᵢ₊₁⁽ⁿ⁾ ————————————————— = k ——————————————————————————————————————— 2 Δt (Δx)² Du Fort–Frankel method: (1-2λ) fᵢ⁽ⁿ⁺¹⁾ = (1-2λ) fᵢ⁽ⁿ⁻¹⁾ + 2λ fᵢ₋₁⁽ⁿ⁾ + 2λ fᵢ₊₁⁽ⁿ⁾ where λ = kΔt/(Δx)²
泰勒級數出現交叉係數:一個係數同時有Δt與Δx。
taylor series of LHS expression: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁻¹⁾ ————————————————— 2 Δt ∂ (Δt)² ∂³ = —— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ + ... ∂t 6 ∂t³ taylor series of RHS expression: fᵢ₋₁⁽ⁿ⁾ - (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁻¹⁾) + fᵢ₊₁⁽ⁿ⁾ ——————————————————————————————————————— (Δx)² ∂² (Δx)² ∂⁴ = ——— fᵢ⁽ⁿ⁾ + ————— ——— fᵢ⁽ⁿ⁾ + ... from 2nd-order ∂x² 12 ∂x⁴ central difference (Δt)² ∂² (Δt)⁴ ∂⁴ + ————— ——— fᵢ⁽ⁿ⁾ + ——————— ——— fᵢ⁽ⁿ⁾ + ... from f̄ᵢ⁽ⁿ⁾ (Δx)² ∂t² 12(Δx)² ∂t⁴ temporal discretization: ∂ fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ —— fᵢ⁽ⁿ⁾ = ——————————————— + O((Δt)²) ∂t Δt spatial discretization: ∂² fᵢ₋₁⁽ⁿ⁾ - (fᵢ⁽ⁿ⁺¹⁾ + fᵢ⁽ⁿ⁻¹⁾) + fᵢ₊₁⁽ⁿ⁾ k ——— fᵢ⁽ⁿ⁾ = k ——————————————————————————————————————— ∂x² (Δx)² + O((Δx)²) (Δt)² ∂² (Δt)⁴ ∂⁴ - k ————— ——— fᵢ⁽ⁿ⁾ - k ——————— ——— fᵢ⁽ⁿ⁾ - ... (Δx)² ∂t² 12(Δx)² ∂t⁴ ^^^^^ ^^^^^^^ → 0 → 0 accuracy: O((Δt)² + (Δx)²) stability condition: ⎧ k(Δt)² ≪ (Δx)² (tightest) ⎨ k(Δt)⁴ ≪ 12(Δx)² ⎩ :
想讓截斷誤差趨近零,那麼泰勒級數每一項都必須趨近零。Δt趨近零導致截斷誤差趨近零,滿足零穩定性。然而,實務上Δt不能是零、Δx不能是無限大,交叉係數不會是零,不滿足絕對穩定性。實務上令Δt遠小於Δx,盡量減少截斷誤差,盡量拖延爆掉時機。
numerical iteration
數值遞推。為了平行計算,於是拆開處理。
operator splitting method:算子分裂法。拆開對應域,分別處理。 domain decomposition method:領域分解法。拆開定義域,分別處理。
operator splitting method
專著《Finite Difference Computing with PDEs: A Modern Software Approach》。
算子分裂法。微分方程式拆開成多個等式,逐步計算。
針對動態系統,遞迴公式右式拆開成多個步驟,逐步計算。
通常用於隱式法。當右式太過複雜,無法移項求解,那麼右式逐項拆開處理,方便移項求解。
(簡單起見,下方數學式子採用顯式法。)
ordinary splitting:基本款式。準度O(Δt)。 1. 第一項從頭走一刻。 2. 第二項從頭走一刻。 Strang splitting:名人推薦精選款式。準度O((Δt)²)。 1. 第一項從頭走半刻。 2. 第二項從中點走一刻。 3. 第一項從中點走半刻。
differential equation: d/dt f(t) = F(f(t), t, x) = F₁(f(t), t, x) + F₂(f(t), t, x) ordinary splitting: 1. (k₁ - k₀) / Δt = F₁(k₀, t, x) (explicit method) 2. (k₂ - k₁) / Δt = F₂(k₁, t, x) (explicit method) where k₀ = f⁽ⁿ⁾ f⁽ⁿ⁺¹⁾ = k₂ Strang splitting: 1. (k₁ - k₀) / ½Δt = F₁(k₀, t , x) (explicit method) 2. (k₂ - k₁) / Δt = F₂(k₁, t+½Δt, x) (explicit method) 3. (k₃ - k₂) / ½Δt = F₁(k₂, t+½Δt, x) (explicit method) where k₀ = f⁽ⁿ⁾ f⁽ⁿ⁺¹⁾ = k₃
https://hplgit.github.io/fdm-book/doc/pub/book/sphinx/._book018.html https://math.stackexchange.com/questions/3421037/
循序計算,每一步用到上一步的計算結果。平行計算,每一步都從頭開始(右式一律代入f⁽ⁿ⁾或f⁽ⁿ⁺¹⁾),最後再加總計算結果。缺點是barrier synchronization overhead。
順帶一提,多步法、多階段法針對右式整體,也可以視作時間分裂。算子分裂法針對右式各項,也可以視作空間分裂。
domain decomposition method
專著《Iterative Methods for Solving Linear Systems》。
領域分解法。未知函數輸入範圍拆開成多個區域,輪流計算。
針對動態系統,空間變數範圍拆開成多個區域,輪流計算。
通常用於空間邊界是不規則形狀。
overlapping domains: (1) alternating Schwarz method (2) parallel Schwarz method nonoverlapping domains: (1) iterative substructuring method
https://www.unige.ch/~gander/Preprints/SchwarzHistorical.pdf
我沒有學會。各位自己看著辦吧。
numerical error
數值誤差。人工調整數值解,強行抑制數值誤差。四個項目。
restriction:調整數值解,強行維持合理數值。
positivity preserving:零/負數強行改成machine epsilon,避免歸零。 divide-by-zero avoiding:除數強行加上machine epsilon,避免除以零。
smoothing:調整數值解,強行維持穩定性。
local smoothing:不連續處強行平滑化,避免Runge phenomenon。 global smoothing:整體強行平滑化,避免不穩定。
arrangement:取樣地點重合錯開。
collocated mesh:重合網格。微分方程組,多個未知函數,取樣地點重合。 staggered mesh:錯開網格。有些在網格中央,其餘在網格邊緣。
mesh refinement:取樣間距變細變粗。
fixed mesh refinement:固定網格精細化。事先指定空間各處網格精細程度。 adaptive mesh refinement:自適應網格精細化。各處根據誤差調整網格精細程度。
restriction
強行修改數值解,以便維持合理數值。
以淺水方程組為例。
shallow water equations: ⎧ ∂/∂t h + ∂/∂x (hu) + ∂/∂y (hv) = 0 ⎨ ∂/∂t (hu) + ∂/∂x (huu) + ∂/∂y (huv) + ∂/∂x (½gh²) = 0 ⎩ ∂/∂t (hv) + ∂/∂x (hvu) + ∂/∂y (hvv) + ∂/∂y (½gh²) = 0
未知函數是h和u和v。數值模擬改為h與hu和hv,利用除法求得u = (hu)/u和v = (hv)/v,稍微節省計算時間。
numerical scheme!!!!!!!!!!!!!!!!!!!
水深h不可為負值(水深故意不歸零),速度u和v不可為無限大(水深歸零則速度也歸零)。
(1) height avoids negative value. (cutoff threshold) if h < ε, then h = ε. h = max(ε, h) (2) velocity avoids division by zero. if h < ε, then u = 0. v = ⎰ (hv)/h , if h > ε ⎱ 0 , otherwise where ε = 10⁻⁶
local smoothing
不可微函數,實施高次多項式內插、高次多項式近似,導致Runge phenomenon:不可微處,內插函數抖動、近似函數抖動。
遞迴公式是泰勒近似,導致Runge phenomenon,形成disturbance。
當初始條件、邊界條件是不可微函數(例如對稱邊界條件),導致符號解是不可微函數,導致數值解變化劇烈(數值解無法定義連續、可微),導致Runge phenomenon。
波浪撞牆反彈demo
當初始條件、邊界條件是不可微函數,事先強行實施「smooth approximation」,避免Runge phenomenon。
補充說明一下。局部平滑化沒有一致公認的名稱。有人稱作smooth transition。
global smoothing
概念等同於訊號處理的平滑化、離散微分幾何的平滑化。
平滑化可以強行降低數值解範數,抑制disturbance。平滑化也可以強行降低放大因子,滿足穩定性。
大家習慣使用Laplacian smoothing:追加二次微分項。
temporal smoothing: f̄[n][i] - f[n][i] f[n+1][i] - 2 f[n][i] + f[n-1][i] ————————————————— = α ————————————————————————————————— Δx (Δt)² spatial smoothing: f̄[n][i] - f[n][i] f[n][i+1] - 2 f[n][i] + f[n][i-1] ————————————————— = α ————————————————————————————————— Δt (Δx)² where α is smoothing factor (0 ≤ α ≤ 1)
有些人把分母Δx和(Δt)²併入平滑係數α。有些人直接拋棄。
temporal smoothing: f̄[n][i] = f[n][i] + α (f[n+1][i] - 2 f[n][i] + f[n-1][i]) spatial smoothing: f̄[n][i] = f[n][i] + α (f[n][i+1] - 2 f[n][i] + f[n][i-1]) where α is smoothing factor (0 ≤ α ≤ 1)
時間平滑化,經典數值方案是Robert–Asselin filter。
Euler method: f[n+1][i] = f[n][i] + F(f[n][i], t, x) ⋅ Δt leapfrog method: f[n+1][i] = f[n-1][i] + F(f[n][i], t, x) ⋅ 2Δt Robert–Asselin filter: 1. f[n+1][i] = f̄[n-1][i] + F(f[n][i], t, x) ⋅ 2Δt 2. f̄[n][i] = f[n][i] + α (f[n+1][i] - 2 f[n][i] + f̄[n-1][i])
空間平滑化,經典數值方案是Lax–Friedrichs method。
constant-coefficient advection equation: d d —— f(t,x) + k —— f(t,x) = 0 k is a parameter dt dx forward-time central-space method (FTCS): f[n+1][i] = f[n][i] - ½ C (f[n][i+1] - f[n][i-1]) where C = k Δt / Δx is CFL number without absolute value Lax–Friedrichs method: 1. f[n+1][i] = f̄[n][i] - ½ C (f̄[n][i+1] - f̄[n][i-1]) 2. f̄[n+1][i] = f[n+1][i] + ½ (f̄[n][i+1] - 2 f̄[n][i] + f̄[n][i-1]) Lax–Friedrichs method: f̄[n+1][i] = f̄[n][i] - ½ C (f̄[n][i+1] - f̄[n][i-1]) + ½ (f̄[n][i+1] - 2 f̄[n][i] + f̄[n][i-1]) Lax–Friedrichs method: f̄[n+1][i] = ½ (f̄[n][i+1] + f̄[n][i-1]) - ½ C (f̄[n][i+1] - f̄[n][i-1])
補充說明一下。空間追加二次微分項,沒有一致公認的名稱。有人稱作artificial/numerical接damping/dissipation/diffusivity/viscosity/resistivity。牛頓流體當中,這些物理現象都是對空間二次微分,即是Laplacian。
時間平滑化已經進化成多步法和多階段法。空間平滑化已經進化為有限元素法。上述兩個數值方案,曾經是豐功偉業,現在卻是陳腔濫調。就當作是學個想法吧。最後放一篇Lax的文章:
arrangement
微分方程組,形成多道遞迴公式。各個未知函數們的符號解/數值解互相影響。藉由錯開取樣地點,得以改善數值誤差。
經典範例是Arakawa grids。針對淺水方程組(另一種等價寫法)。
shallow water equations: ⎧ ∂/∂t h + ∂/∂x (hu) + ∂/∂y (hv) = 0 ⎨ ∂/∂t u + u ∂/∂x u + v ∂/∂y u + g ∂/∂x h = 0 ⎩ ∂/∂t v + u ∂/∂x v + v ∂/∂y v + g ∂/∂y h = 0 h: height u: x velocity v: y velocity g: gravity (constant)
三個未知函數,水深h、東西向速度u、南北向速度v,總共五種配置方式。(A)是collocated grid,其餘是staggered grid。
每一種配置方式,得到不同的數值方案、穩定性條件、振幅與相位。天氣預報習慣採用(C)。
numerical scheme!!!!!!!!!!!!!!!!!!!
補充說明一下,trapezoidal method和staggered grid的本質都是global smoothing。
trapezoidal method:空間變數對時間變數平均。 staggered grid:一個空間變數對另一個空間變數平均。
mesh refinement
藉由減少局部取樣間距,以便減少局部數值誤差。
反覆減少局部取樣間距,方格/網格逐漸細緻,稱作「精細化refinement」。fixed mesh refinement是事先指定區域。adaptive mesh refinement是動態挑選區域,根據數值誤差大小來決定區域。【尚待確認】
雖然取名精細化,但是整個過程其實是反覆變細和變粗。變細要內插。變粗要取平均數。
coarse → fine: interpolation fine → coarse: averaging
精細化的困難之處:
一、粗細網格交接之處,內插和取平均數的方式。 二、粗細網格交接之處時時變動,難以設定平行計算範圍。
https://iopscience.iop.org/article/10.1086/526425/pdf
事實上「精細化refinement」與「平滑化smoothing」是相對概念。有精細化視作無平滑化,無精細化視作有平滑化。本節主旨其實是大規模的、範圍不一的local smoothing。
補充說明一下,adaptive mesh refinement和multigrid method的本質都是local smoothing。差別在於後者進一步考慮求解。
adaptive mesh refinement:精細化直到數值誤差足夠小。動態變細變粗。 multigrid method:平滑化直到指定取樣間距。依照規定變細變粗。
numerical convergence
數值收斂。起源是CFL condition。
(1) characteristics (2) Courant–Friedrichs–Lewy condition (3) Courant number (4) strong stability preserving temporal discretization
characteristics
CFL condition的先備知識。
characteristics:特徵。微分方程式,每個函數通通改寫成速度。 characteristic curve:特徵曲線。設定初始值,根據速度,畫出軌跡。 method of characteristics:特徵法。微分方程式,利用特徵,求得符號解。
特徵。微分方程式,每個函數通通改寫成速度。四個步驟:
一、引入新變數(時間變數)。 二、微分方程式的已知函數,改寫成速度(對時間偏微分)。 三、微分方程式的左式,套用微分連鎖律。 四、微分方程式的未知函數,改寫成速度(對時間偏微分)。
differential equation: df df a —— + b —— = c dx dy chain rule: dx dy let a = —— and b = —— dt dt dx df dy df df LHS = —— —— + —— —— = —— dt dx dt dy dt characteristics: df —— = c dt characteristic curve: f = f₀ + ∫ c dt
differential equation: d d a(x,y) —— f(x,y) + b(x,y) —— f(x,y) = c(x,y) dx dy differential equation with additional variable t: d d a(x(t),y(t)) —— f(x(t),y(t)) + b(x(t),y(t)) —— f(x(t),y(t)) dx dy = c(x(t),y(t)) chain rule: d let a(x(t),y(t)) = —— x(t) dt d b(x(t),y(t)) = —— y(t) dt d d d d LHS = —— x(t) —— f(x(t),y(t)) + —— y(t) —— f(x(t),y(t)) dt dx dt dy d = —— f(x(t),y(t)) dt characteristics: d —— f(x(t),y(t)) = c(x(t),y(t)) dt characteristic curve: ⌠t f(x(t),y(t)) = f(x(0),y(0)) + ⎮ c(x(t),y(t)) dt ⌡0
https://math.stackexchange.com/questions/86570/
特徵曲線。選定初始值,根據速度,畫出曲線。
特徵法。微分方程式,利用特徵,求得符號解。解微分方程組。
method of characteristics: ⎧ d ⎪ —— x(t) = a(x(t),y(t)) ⎪ dt ⎪ ⎪ d ⎨ —— y(t) = b(x(t),y(t)) ⎪ dt ⎪ ⎪ d ⎪ —— f(t) = c(x(t),y(t)) ⎩ dt
以常係數平流方程式為例。
constant-coefficient advection equation: df df —— + c —— = 0 dt dx method of characteristics: dx —— = c => x(t) = x₀ + ct dt df —— = 0 => f(t,x) = f₀(x - ct) dt
Courant–Friedrichs–Lewy condition
專著《Finite Difference and Spectral Methods for Ordinary and Partial Differential Equations》。
一旦微分方程式出現一種特徵曲線走向,那麼遞迴公式也必須出現相同的特徵曲線走向。如此一來,符號解和數值解才有機會相符。
另一種比較粗糙的說法:符號解的domain of dependence小於等於數值解的domain of dependence。
採用domain of dependence,不採用region of influence。特徵曲線收斂於一點,得以界定走向範圍。
region of influence:去到哪裡。 domain of dependence:來自哪裡。
當遞迴公式恰好形成斜截式,特徵曲線走向恰是斜截式的斜率。
以常係數平流方程式為例。CFL條件是取樣間距Δt與Δx、倍率a,三者構成的不等式。
characteristic curves全是直線,斜率1 / a。數值解必須遵循直線,斜率Δt / Δx。因此a Δt / Δx = 1。
constant-coefficient advection equation: d d —— f(t,x) + c —— f(t,x) = 0 dt dx explicit Euler method: c Δt f[n+1][i] = f[n][i] + ———— (f[n][i] - f[n][i-1]) Δx CFL condition for constant-coefficient advection equation: c Δt ———— = 1 Δx
以平流方程式為例。CFL條件修改成數值模擬過程當中的倍率的極值。硬撐過去。
characteristic curves走向不一。找到斜率上限與斜率下限,訂立斜率範圍。因此|vₘₐₓ| Δt / Δx ≤ 1。
advection equation: d d —— f(t,x) + v(t,x) —— f(t,x) = 0 dt dx explicit Euler method: v[n][i] Δt f[n+1][i] = f[n][i] + —————————— (f[n][i] - f[n][i-1]) Δx CFL condition for advection equation: |vₘₐₓ| Δt ————————— ≤ 1 where vₘₐₓ is the extremum value of v Δx in numerical simulation
CFL條件可以視作:移動距離v Δt不得超過取樣間距Δx,避免微分運算離散化抓錯函數值。
微分運算離散化必須抓到相鄰函數值。當移動距離太大,則微分運算離散化誤抓到從遠處跨越鄰居而來的函數值。
【待補圖片】
CFL condition ≠ numerical stability
CFL條件跟穩定性是兩回事!既不充分也不必要!
當運氣很好,遞迴公式萬中選一,CFL條件才會碰巧是穩定性。歷史上首次撞大運的人,就是CFL這三人。
綜觀歷史,先有CFL條件,才有數值分析基本定理。古人先入為主認為CFL條件就是穩定性。即便後來發現數值分析基本定理,大家仍未察覺自身認知有誤。至今仍有眾多文獻將CFL條件當作敘事主角,成為歷史共業。
雖然CFL條件跟穩定性是兩回事,但是兩者可能有某種關聯。等你發表論文。
順帶一提,針對特定的微分方程式,我們可以利用收縮穩定性,強行定義全新的CFL條件。然而沒有意義。
一種微分方程式有各種遞迴公式,各種遞迴公式有各種收縮穩定性條件,從中找到數學式子最漂亮那一個作為CFL條件。
heat equation 2 |vₘₐₓ| Δt / (Δx)² ≤ 1 wave equation |vₘₐₓ| Δt / Δx ≤ 1 advection equation |vₘₐₓ| Δt / Δx ≤ 1
https://people.math.ethz.ch/~grsam/SS21/NAII/resources/slides/ODE-Lecture6.pdf
順帶一提,針對特定的遞迴公式,我們可以將收縮穩定性條件,強行改寫成原始的CFL條件的模樣。然而沒有意義。
一種微分方程式有各種遞迴公式,各種遞迴公式有各種收縮穩定性條件,得到不同的CFL條件右式數值。
CFL condition for numerical scheme of constant-coefficient advection equation: 時間Euler、空間後向差分(一階準度) |c| Δt / Δx ≤ 1 時間Euler、空間中央差分(四階準度) |c| Δt / Δx ≤ 0.728... 時間RK4 、空間中央差分(二階準度) |c| Δt / Δx ≤ 2.83...
https://scicomp.stackexchange.com/questions/25398/ https://scicomp.stackexchange.com/questions/2927/ https://books.google.com.tw/books?id=npxiU81KY-UC&pg=PA114 https://books.google.com.tw/books?id=npxiU81KY-UC&pg=PA68 https://acfdlab.miami.edu/publications/AIAA2003_0248.pdf https://www.researchgate.net/publication/267467969
Courant number
CFL條件的左式(遞迴公式的斜截式的斜率),代入v、Δt、Δx的實際數值,求得左式數值,此數值稱作「Courant number」或「CFL number」。
heat equation C = 2 |vₘₐₓ| Δt / (Δx)² wave equation C = |vₘₐₓ| Δt / Δx advection equation C = |vₘₐₓ| Δt / Δx
就我所知,Courant number有兩個用途。
(1) Courant number as stability condition (2) Courant number as amplification factor
一、針對一個數值方案,我們想要找出確切的穩定性條件。
很不幸地,大多數的數值方案,難以手工推導不等式右側數值。大家只好使用試誤法,枚舉不等式左側數值。【尚待確認】
所幸的是,試誤法可以採用binary search,減少試誤時間。
一、設計數值方案。 二、設定初始條件、邊界條件。 三、逐步修改Courant number,重新實施數值模擬,直到數值收斂。 四、公布數值方案、初始條件、邊界條件、穩定性條件(Courant number)。
二、針對一個數值方案,我們想要調整放大因子:每種頻率的弦波的變化比例。
放大因子內含Courant number。調整Courant number藉以調整放大因子。例如讓高頻弦波變化小、低頻弦波變化大,進而抑制數值誤差。Courant number的地位宛如平滑係數。
strong stability preserving temporal discretization
專著《Strong Stability Preserving Runge–Kutta and Multistep Time Discretizations》。
時間離散化可以推廣為多步多階段。
「保強穩定性時間離散化」。如果一個數值方案,時間離散化採用explicit Euler method,一旦滿足CFL condition,並且導致收縮穩定性,那麼該數值方案,時間離散化推廣為隱式顯式多步多階段,其係數是凸組合,一旦滿足CFL condition乘上適當倍率,也會導致收縮穩定性。
實務上會仔細調整時間離散化的係數,使得適當倍率是1,如同普通的CFL condition。
實務上將時間離散化推廣為多階段,形成strong stability preserving Runge–Kutta method (SSPRK)。
multistage method (SSPRK43): shift amount Δt k₁ k₂ k₃ k₄ ┌───────────────────────┐ │ 0 │ 0 0 0 0 │ round 1 │ 1/2 │ 1/2 0 0 0 │ round 2 │ 1 │ 1/2 1/2 0 0 │ round 3 │ 1/2 │ 1/6 1/6 1/6 0 │ round 4 └─────┼─────────────────│ │ 1/6 1/6 1/6 1/2 │ round weight └─────────────────┘
「保強穩定性時間離散化」原理簡單。explicit Euler method只取一處斜率。多步多階段則是取多處斜率的加權平均數。視作多個explicit Euler method各自加權,而多個CFL condition也跟著加權。多個CFL condition不等式聯立,簡化成最緊的那一個不等式。
此處僅證明顯式多階段。可以推廣到隱式顯式多步多階段。
方便起見,取消顯式多階段的最後一個計算步驟:每個回合的計算結果的加權總和。取而代之,將權重併入每個回合的計算公式,稱作Shu–Osher formulation。
differential equation d/dt f(t,x) = F(f(t,x)) explicit Euler method f⁽ⁿ⁺¹⁾ = f⁽ⁿ⁾ + Δt F(f⁽ⁿ⁾) skip subscripts contractive stability of linear scheme ‖f⁽ⁿ⁺¹⁾‖ = ‖f⁽ⁿ⁾ + Δt F(f⁽ⁿ⁾)‖ ≤ ‖f⁽ⁿ⁾‖ explicit multistage method (Shu–Osher formulation) ⎧ k₀ = f⁽ⁿ⁾ ⎪ : ⎨ kᵢ = sum { aᵢⱼ kⱼ + Δt bᵢⱼ F(kⱼ) } ⎪ : j=1⋯i-1 ⎪ : ⎩ f⁽ⁿ⁺¹⁾ = kₘ m stages convex combination property of each stage ⎧ aᵢⱼ ≥ 0 for all i and j ⎨ bᵢⱼ ≥ 0 for all i and j ⎪ sum aᵢⱼ = 1 for all i ⎩ ʲ strong stability preserving property: if explicit Euler method reaches contractive stability with CFL condition Δt ≤ ΔtCFL, then explicit multistage method reaches contractive stability with CFL condition Δt ≤ min (aᵢⱼ/bᵢⱼ) ΔtCFL ⁱʲ when a and b are non-negative and a satisfies convex combination property. proof: ‖kᵢ‖ = ‖sum { aᵢⱼ kⱼ + Δt bᵢⱼ F(kⱼ) }‖ ith stage ≤ ‖aᵢⱼ‖ ‖sum { kⱼ + Δt (bᵢⱼ/aᵢⱼ) F(kⱼ) }‖ 三角不等式 = aᵢⱼ ‖sum { kⱼ + Δt (bᵢⱼ/aᵢⱼ) F(kⱼ) }‖ aᵢⱼ ≥ 0 ≤ aᵢⱼ sum ‖ kⱼ + Δt (bᵢⱼ/aᵢⱼ) F(kⱼ) ‖ 正負抵銷 ≤ aᵢⱼ sum ‖kⱼ‖ CFL條件,原因如後。 ≤ max ‖kⱼ‖ 凸組合 ⎧ ‖k₁‖ ≤ max(‖k₀‖) = ‖k₀‖ ⎨ ‖k₂‖ ≤ max(‖k₀‖, ‖k₁‖) ≤ ‖k₀‖ ⎪ : : : ⎩ ‖kₘ‖ ≤ max(‖k₀‖, ‖k₁‖, ..., ‖kₘ₋₁‖) ≤ ‖k₀‖ ‖f⁽ⁿ⁺¹⁾‖ = ‖kₘ‖ ≤ ‖k₀‖ = ‖f⁽ⁿ⁾‖
for each j, explicit Euler method reaches contractive stability ‖kⱼ + Δt (bᵢⱼ/aᵢⱼ) F(kⱼ)‖ ≤ ‖kⱼ‖ with CFL condition Δt (bᵢⱼ/aᵢⱼ) ≤ ΔtCFL
「保強穩定性」名稱很雲。此概念既非強穩定性、亦非保X變換。此概念是將時間離散化從一階泰勒近似推廣成隱式顯式多步多階段,並且考慮CFL condition。
「保強穩定性」內容很雲。前提是一件未必成立的事情。CFL condition不一定導致收縮穩定性。
因此,實務上需要確認前提是否成立。穩定性分析,確認收縮穩定性等價於CFL condition。一旦前提成立,SSPRK所向無敵。
differential equation - numerical property🚧
differential equation
本章討論微分方程式、遞迴公式的數學性質。
(1) property of differential equation 微分方程式的數學性質。 (2) property of dynamical system 動態系統的數學性質。
property of differential equation
微分方程式分為兩類。
(1) linear differential equation 一次。函數微分視作變數,形成一次函數。 (2) nonlinear differential equation 非一次。函數微分視作變數,形成非一次函數。
微分方程式的常見細類。
(a) homogeneous equation 齊次。函數微分視作變數,沒有常數函數項。 導致符號解可以是零函數。 (b) quasilinear equation 擬一次。函數微分視作變數,係數不是常數函數而是泛函數, 泛函數的輸入變數不含最高次微分。
符號解分為兩類。
(1) single-valued solution 單值解。符號解是函數。一個位置擁有一個函數值。 (2) multivalued solution (set-valued solution) 多值解。也可以不是函數。一個位置擁有多個函數值。
符號解的常見細類。
(a) analytic solution 解析解。符號解是解析函數。 (b) weak solution 弱解。也可以是不可微函數。
微分方程式暨符號解的數學性質,遞迴公式暨數值解的數學性質,兩邊必須一致。下文只講前者,講一個就等於兩個都講了。
順帶一提,數值解無法定義連續、可微。數值解不存在所謂的解析解、弱解。
differentiable solution
「可微解」。微分方程式的符號解,必須是可微函數。
詳細來說,內含N次微分的微分方程式的符號解,必須是N次可微函數。顯而易見的廢話。
宏觀來說,符號解可以是下述函數。然而大家只討論解析函數。
N次可微函數:處處N次可微。 N次分段函數:銜接處N次可微,其餘處更高次可微。 平滑函數:處處無窮次可微。 解析函數:處處無窮次可微,且處處導數是泰勒級數。 (處處導數是無窮多項式函數,其輸入移位。)
analytic solution
「解析解」。微分方程式的符號解,設定為解析函數。
數學家從微積分基本定理出發,利用指數函數、三角函數,求得微分方程式的符號解。利用解析函數,自然而然得到解析解。
數學家從數值分析基本定理出發,利用微分運算的泰勒近似,求得微分方程式的數值解。數值解是近似解。全域誤差是近似誤差。而截斷誤差(一致性)影響了全域誤差(收斂性)。想讓截斷誤差趨近零,一種方式是採用解析解。先前章節已經提及。
weak solution
「弱解」。微分方程式的符號解,推廣為不可微函數。
現實世界流行不可微函數。初始條件是不可微函數,符號解亦是不可微函數。此時便需要弱解。
首先介紹一個轉換手法。沒有正式學術名稱。姑且稱作包裝。
一個函數方程式L(t,x) = 0,替它安排一個平滑函數ϕ(t,x),相乘、積分,包裝成一個可微函數方程式∫∫ L(t,x) ϕ(t,x) dt dx = 0。
接著,一個函數方程式,窮舉各種平滑函數,得到各種可微函數方程式。結果必定獨一無二,畢竟窮舉了各種平滑函數。
strong formulation: L(t,x) = 0 weak formulation: ⎧ ⌠+∞ ⌠+∞ │ ⎫ ⎨ ⎮ ⎮ L(t,x) ϕ(t,x) dt dx = 0 │ ϕ(t,x) is smooth ⎬ ⎩ ⌡-∞ ⌡-∞ │ ⎭
原式稱作strong formulation。新式稱作weak formulation。
窮舉每一個平滑函數,新式一律出現的解,定義為原式的弱解。新式的解可以是不可微函數,於是原式的弱解可以是不可微函數。
property of dynamical system
引入時間變數與空間變數之後,符號解的常見細類。
(1) diminishing 遞減。數值解範數每回合變小或不變。 (2) monotonicity preserving 保單調。數值解每回合局部極值數量不增加。 (3) order preserving 保序。兩種數值解每回合保持高低關係。 (4) local extremum diminishing (LED) 局部極值遞減。數值解每回合局部極值數量不增加、大小不變廣。 (5) positivity preserving 保正。數值解每回合保持非負數(保持正負號)。 (6) equilibrium 平衡。數值解最終回合趨近常數函數(平衡點)或週期函數(平衡軌道)。
微分方程式暨符號解的數學性質,遞迴公式暨數值解的數學性質,兩邊必須一致。下文只講後者,講一個就等於兩個都講了。
這些詞彙用來形容微分方程式/遞迴公式,字尾接上scheme,例如LED scheme。這些詞彙用來形容符號解/數值解,字尾接上solution,例如positivity-preserving solution。
diminishing
「遞減」。時間單調性。數值解範數每回合變小或不變。
L∞-diminishing ‖f̃⁽ⁿ⁺¹⁾‖∞ ≤ ‖f̃⁽ⁿ⁾‖∞ L¹-diminishing ‖f̃⁽ⁿ⁺¹⁾‖₁ ≤ ‖f̃⁽ⁿ⁾‖₁ Lᵖ-diminishing ‖f̃⁽ⁿ⁺¹⁾‖ₚ ≤ ‖f̃⁽ⁿ⁾‖ₚ
L∞-norm ‖f‖∞ = maxᵢ |fᵢ| L¹-norm ‖f‖₁ = sumᵢ |fᵢ| Lᵖ-norm ‖f‖ₚ = sumᵢ |fᵢ|ᵖ
知名範例是指數衰減微分方程式。
exponential decay equation: d —— f(t) = k f(t) k is a parameter and k < 0 dt explicit Euler method: fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ ——————————————— = k fᵢ⁽ⁿ⁾ Δt fᵢ⁽ⁿ⁺¹⁾ = (1 + Δt k) fᵢ⁽ⁿ⁾ diminishing if (1 + Δt k) ≤ 1
diminishing數學定理
一、齊次遞迴公式,收縮則遞減。
證明很簡單。當微分方程式/遞迴公式沒有常數項,則符號解/數值解可以是零。零作為減數,那麼收縮導致遞減。
for homogeneous scheme, contractive => diminishing
二、線性遞迴公式,收縮即是遞減即是指數衰減。
證明很簡單。兩個符號解/數值解相加減,依然形成符號解/數值解,數學性質依然成立。
for linear scheme, contractive <=> diminishing <=> exponential decay
monotonicity preserving
「保單調」。空間單調性。數值解每回合保持單調。
當遞迴公式不因地點而變,數值解的任意區段皆具備相同數學性質。保單調變成:數值解拆解成單調區間們與局部極值們,單調區間保持單調區間,局部極值保持局部極值。
注意到,數值解每回合的任意區段可能拉伸壓縮。單調區間們與局部極值們可以移動地點,但是必須保持鄰居關係,不能穿越交錯。
簡單一句話:數值解每回合都不會新增局部極值。
知名範例是淺水方程組。符號解包含高度和速度,深水導致波浪降低加速,淺灘導致波浪升高減速。儘管速度快慢不一,但是波浪總是隨著水深起伏,高處恆高、低處恆低。
monotonicity preserving數學定理
Godunov's monotonicity preserving theorem:針對線性遞迴公式,且局部極值不會移動地點,保單調就是正組合。
Godunov是第一位著眼於保單調的人。他也發明了上風通量法,導致正組合,導致保單調。上風通量法留待後面章節介紹。
monotonicity preserving <=> positive combination (positivity)
monotonicity preserving 數值解每回合都不會新增局部極值 fᵢ₋₁⁽ⁿ⁾ ⪌ fᵢ⁽ⁿ⁾ ⪋ fᵢ₊₁⁽ⁿ⁾ => fᵢ₊ₖ₋₁⁽ⁿ⁺¹⁾ ⪌ fᵢ₊ₖ⁽ⁿ⁺¹⁾ ⪋ fᵢ₊ₖ₊₁⁽ⁿ⁺¹⁾ <=> positive combination (positivity) 遞迴公式的係數皆是正值 ⎰ fᵢ⁽ⁿ⁺¹⁾ = sumⱼ cᵢⱼ fⱼ⁽ⁿ⁾ ⎱ cᵢⱼ ≥ 0
https://en.wikipedia.org/wiki/Godunov's_theorem https://books.google.com.tw/books?id=AAqMDwAAQBAJ&pg=PA257
Godunov's order barrier theorem:針對線性遞迴公式,保單調的準度至多一階。
階數屏障定理有各種版本。Godunov首開先例。
monotonicity preserving scheme is at most first-order accurate. [Godunov 1954]
https://en.wikipedia.org/wiki/Godunov's_theorem https://hal.science/hal-01620642 https://www.jstor.org/stable/2008046
order preserving
「保序」。兩種數值解每回合保持高低關係。
order preserving數學定理
一、當遞迴公式不因地點而變,數值解保序=遞迴公式是遞增函數(任一變數皆遞增)。
numerical solution is order preserving <=> numerical scheme is an increasing function
order preserving 兩種數值解每回合保持高低關係 f⁽ⁿ⁾ ≤ g⁽ⁿ⁾ => f⁽ⁿ⁺¹⁾ ≤ g⁽ⁿ⁺¹⁾ <=> increasing function 遞迴公式是遞增函數(任一變數皆遞增) ⎰ fᵢ⁽ⁿ⁺¹⁾ = Fᵢ(fⱼ₁⁽ⁿ⁾, ... , fⱼₘ⁽ⁿ⁾) ⎱ fⱼₖ⁽ⁿ⁾ ≤ gⱼₖ⁽ⁿ⁾ => fᵢ⁽ⁿ⁺¹⁾ ≤ gᵢ⁽ⁿ⁺¹⁾ for all 1 ≤ k ≤ m
二、當遞迴公式不因地點而變,保序導致保單調。
反方向不一定正確。例如一段變緩、一段變陡。
order preserving => monotonicity preserving
order preserving 兩種數值解每回合保持高低關係 遞迴公式是遞增函數(任一變數皆遞增) f⁽ⁿ⁾ ≤ g⁽ⁿ⁾ => f⁽ⁿ⁺¹⁾ ≤ g⁽ⁿ⁺¹⁾ ⎰ fᵢ⁽ⁿ⁺¹⁾ = Fᵢ(fⱼ₁⁽ⁿ⁾, ... , fⱼₘ⁽ⁿ⁾) ⎱ fⱼₖ⁽ⁿ⁾ ≤ gⱼₖ⁽ⁿ⁾ => fᵢ⁽ⁿ⁺¹⁾ ≤ gᵢ⁽ⁿ⁺¹⁾ for all 1 ≤ k ≤ m => monotonicity preserving 數值解每回合局部極值數量不增加 證明手法:假設數值解是遞增函數。構造另一種數值解,恰是其移位。 fᵢ₋₁⁽ⁿ⁾ ⪌ fᵢ⁽ⁿ⁾ ⪋ fᵢ₊₁⁽ⁿ⁾ => fᵢ₊ₖ₋₁⁽ⁿ⁺¹⁾ ⪌ fᵢ₊ₖ⁽ⁿ⁺¹⁾ ⪋ fᵢ₊ₖ₊₁⁽ⁿ⁺¹⁾
local extremum diminishing(range diminishing)
「局部極值遞減」。數值解同時滿足下述三點。
(1) nonincreasing local maximum 數值解局部極大值減少或不變 (2) nondecreasing local minimum 數值解局部極小值增加或不變 (3) no new extremum 數值解局部極值數量減少或不變
簡單一句話:數值解每回合局部極值數量不增加、大小不變廣。
針對線性遞迴公式,變數是自己和所有鄰居,係數是凸組合。
一維空間是三點。二維空間是十字五點。
1D ⎧ fᵢ⁽ⁿ⁺¹⁾ = cᵢ₋₁ fᵢ₋₁⁽ⁿ⁾ + cᵢ fᵢ⁽ⁿ⁾ + cᵢ₊₁ fᵢ₊₁⁽ⁿ⁾ ⎨ cᵢ₋₁ + cᵢ + cᵢ₊₁ = 1 ⎩ cᵢ₋₁ , cᵢ , cᵢ₊₁ ≥ 0 2D ⎧ fᵢ,ⱼ⁽ⁿ⁺¹⁾ = cᵢ,ⱼ fᵢ,ⱼ⁽ⁿ⁾ ⎪ + cᵢ₋₁,ⱼ fᵢ₋₁,ⱼ⁽ⁿ⁾ + cᵢ₊₁,ⱼ fᵢ₊₁,ⱼ⁽ⁿ⁾ ⎨ + cᵢ,ⱼ₋₁ fᵢ,ⱼ₋₁⁽ⁿ⁾ + cᵢ,ⱼ₊₁ fᵢ,ⱼ₊₁⁽ⁿ⁾ ⎪ cᵢ,ⱼ + cᵢ₋₁,ⱼ + cᵢ₊₁,ⱼ + cᵢ,ⱼ₋₁ + cᵢ,ⱼ₊₁ = 1 ⎩ cᵢ,ⱼ , cᵢ₋₁,ⱼ , cᵢ₊₁,ⱼ , cᵢ,ⱼ₋₁ , cᵢ,ⱼ₊₁ ≥ 0
知名範例是Laplacian運算。
1D heat equation: ∂ ∂² —— f(t,x) = ——— f(t,x) ∂t ∂x² explicit Euler method: fᵢ₋₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾ fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾ —————————————— + ——————————————— fᵢ⁽ⁿ⁺¹⁾ - fᵢ⁽ⁿ⁾ Δx Δx ——————————————— = ———————————————————————————————— Δt Δx explicit Euler method: fᵢ⁽ⁿ⁺¹⁾ = (1 - 2λ) fᵢ⁽ⁿ⁾ + λ fᵢ₋₁⁽ⁿ⁾ + λ fᵢ₊₁⁽ⁿ⁾ where λ = Δt/(Δx)²
local extremum diminishing數學定理
一、LED導致保單調。
兩者差別在於遞減。
local extremum diminishing (LED) => monotonicity preserving
二、LED導致maximum principle。
兩者差別在於局部極值們移動地點。
local extremum diminishing (LED) => maximum principle
三、LED導致L∞-diminishing與total variation diminishing。
LED抑制振盪、漸趨平緩。振盪程度可以具體表示成數值大小L∞-norm與total variation。抑制振盪導致L∞-diminishing與total variation diminishing。
local extremum diminishing (LED) => L∞-diminishing
local extremum diminishing (LED) => total variation diminishing (TVD)
L∞-diminishing ‖f⁽ⁿ⁾‖∞ ≤ ‖f⁽ⁿ⁺¹⁾‖∞ total variation diminishing (TVD) ‖f⁽ⁿ⁾‖ᴛᴠ ≤ ‖f⁽ⁿ⁺¹⁾‖ᴛᴠ
L∞-norm ‖f‖∞ = maxᵢ |fᵢ| total variation ‖f‖ᴛᴠ = sumᵢ |fᵢ₊₁ - fᵢ|
L∞-diminishing不一定是total variation diminishing。例如局部收縮、全域放大。反過來也不一定是。例如全域收縮、局部放大。
L∞-diminishing ⇏ total variation diminishing (TVD) L∞-diminishing ⇍ total variation diminishing (TVD)
四、當遞迴公式不因地點而變,且數值解兩端固定(狄利克雷邊界條件),LED即TVD。
兩者差別在於加上常數函數(整體垂直平移)。利用邊界條件排除此例外。【尚待確認】
under Dirichlet boundary condition, local extremum diminishing (LED) for every closed intervals <=> total variation diminishing (TVD) for every closed intervals
順帶一提,LED作者Jameson課程講義圖例錯誤。他沒有考慮遞迴公式不因地點而變。
http://aero-comlab.stanford.edu/jameson/AA215Lectures/AA215A-Lecture05.pdf
五、當遞迴公式不因地點而變,且時間連續,TVD則保單調。時間離散則不然。例如變號(整體上下翻轉)。
when time variable is continuous, total variation diminishing (TVD) for every closed intervals => monotonicity preserving for every closed intervals
順帶一提,Harten's TVD theorem證明錯誤。他強行假設數值解兩端固定。
clip his picture
local extremum diminishing數學定理
針對線性遞迴公式,LED的衍生性質。
local extremum diminishing (LED) 數值解每回合局部極值數量不增加、局部極值大小不變廣 遞迴公式的變數是自己和所有鄰居、係數是凸組合 ⎧ fᵢ⁽ⁿ⁺¹⁾ = sumⱼ cᵢⱼ fⱼ⁽ⁿ⁾ ⎨ sumⱼ cᵢⱼ = 1 ⎪ cᵢⱼ ≥ 0 ⎩ cᵢⱼ = 0 , if j ∉ neighbor(i) => convex combination (convexity) *drop neighborhood 遞迴公式的係數是凸組合 ⎧ fᵢ⁽ⁿ⁺¹⁾ = sumⱼ cᵢⱼ fⱼ⁽ⁿ⁾ ⎨ sumⱼ cᵢⱼ = 1 ⎩ cᵢⱼ ≥ 0 => positive combination (positivity) *drop diminishing 遞迴公式的係數皆是正值 ⎰ fᵢ⁽ⁿ⁺¹⁾ = sumⱼ cᵢⱼ fⱼ⁽ⁿ⁾ ⎱ cᵢⱼ ≥ 0 <=> order preserving 兩種數值解每回合保持高低關係 遞迴公式是遞增函數(任一變數皆遞增) f⁽ⁿ⁾ ≤ g⁽ⁿ⁾ => f⁽ⁿ⁺¹⁾ ≤ g⁽ⁿ⁺¹⁾ ⎰ fᵢ⁽ⁿ⁺¹⁾ = Fᵢ(fⱼ₁⁽ⁿ⁾, ... , fⱼₘ⁽ⁿ⁾) ⎱ fⱼₖ⁽ⁿ⁾ ≤ gⱼₖ⁽ⁿ⁾ => fᵢ⁽ⁿ⁺¹⁾ ≤ gᵢ⁽ⁿ⁺¹⁾ for all 1 ≤ k ≤ m <=> monotonicity preserving 數值解每回合局部極值數量不增加 fᵢ₋₁⁽ⁿ⁾ ⪌ fᵢ⁽ⁿ⁾ ⪋ fᵢ₊₁⁽ⁿ⁾ => fᵢ₊ₖ₋₁⁽ⁿ⁺¹⁾ ⪌ fᵢ₊ₖ⁽ⁿ⁺¹⁾ ⪋ fᵢ₊ₖ₊₁⁽ⁿ⁺¹⁾ [Harten 1983] [Osher 1985] [Jameson 1995]
order preserving & diminishing => maximum principle 數值解下回合數值介於遞迴公式的變數極值之間 證明手法:構造另一種數值解,恰是變數極值。 min {fⱼ⁽ⁿ⁾ | cᵢⱼ > 0} ≤ fᵢ⁽ⁿ⁺¹⁾ ≤ max {fⱼ⁽ⁿ⁾ | cᵢⱼ > 0} => L∞-diminishing 數值解每回合振幅減少或不變 ‖f⁽ⁿ⁾‖∞ ≤ ‖f⁽ⁿ⁺¹⁾‖∞ where ‖f‖∞ = maxᵢ |fᵢ|
order preserving & diminishing & neighborhood (3-point) => maximum principle & neighborhood (3-point) 數值解下回合數值介於本回合自己與鄰居的極值之間 (當邊界條件是預定數值,數值解最終回合介於邊界極值之間。) min {fⱼ⁽ⁿ⁾ | j ∈ neighbor(i)} ≤ fᵢ⁽ⁿ⁺¹⁾ ≤ max {fⱼ⁽ⁿ⁾ | j ∈ neighbor(i)} => total variation diminishing (TVD) 數值解每回合總差值減少或不變 ‖f⁽ⁿ⁾‖ᴛᴠ ≤ ‖f⁽ⁿ⁺¹⁾‖ᴛᴠ where ‖f‖ᴛᴠ = sumᵢ |fᵢ₊₁ - fᵢ|
positivity preserving
「保正」。數值解每回合保持非負數(保持正負號)。
一、微分方程組,所有未知函數保正,可以採用LED。針對線性遞迴公式,LED則正組合則保正。
local extremum diminishing (LED) => positive combination (positivity) => positivity preserving
二、微分方程組,部分未知函數保正,事情相當複雜。我還沒有學會。
例如淺水方程組的深度保正、速度不保正。
Chi-Wang Shu 舒其望 https://apps.dtic.mil/sti/tr/pdf/ADA273991.pdf https://link.springer.com/article/10.1007/s10915-018-0852-1 Xiangxiong Zhang 张翔雄 https://www.math.purdue.edu/~zhan1966/research/paper/review.pdf https://www.math.purdue.edu/~zhan1966/research/paper/euler.pdf https://www.math.purdue.edu/~zhan1966/research/paper/fd-weno.pdf https://www.math.purdue.edu/~zhan1966/research/index.html Kailiang Wu 吴开亮 https://arxiv.org/pdf/2410.05173 https://sites.google.com/site/klwuhomepage/
equilibrium
「平衡」。數值解最終回合趨近穩態或極限環。
steady state:穩態。不動點。平衡點。函數值不隨時間改變,形成常數函數。 limit cycle:極限環。漸近線。平衡軌道。函數值隨時間循環,形成週期函數。
一、趨近常數函數,事情相當複雜。我還沒有學會。
例如淺水方程組的水面平靜lake at rest。
a scheme has C-property if it preserves the steady state. https://hal.science/hal-03893632/file/ms.pdf
二、趨近週期函數,事情相當複雜。我還沒有學會。
例如振子方程式的簡諧運動simple harmonic motion。
oscillator equation (Newton's second law and Hooke's law): d² k ——— f(t) + ——— f(t) = 0 dt² m solution (simple harmonic motion): f(t) = C cos(ωt - ϕ) where ω = sqrt(k/m) angular frequency x₀ = f(0) initial position v₀ = f′(0)/ω initial velocity A = magnitude(x₀+v₀𝑖) = sqrt(x₀²+v₀²) initial magnitude ϕ = phase(x₀+v₀𝑖) = tan⁻¹(v₀/x₀) initial phase
https://en.wikipedia.org/wiki/Simple_harmonic_motion
equilibrium數學定理
穩態存在性:尋找所有穩態。方程式求解。
differential equation: d —— f(t) = F(f(t)) dt steady state f₀(t): d —— f₀(t) = F(f₀(t)) = 0 dt
穩態收斂性:給定初始條件,判斷是否可以抵達穩態。線性動態系統可以利用特徵值來判斷。非線性動態系統至今沒有判斷方式。一種替代方案是linear stability analysis:硬是視作線性動態系統。
線性遞推系統收斂至穩態:變換矩陣的特徵值的實部均小於等於1。 線性動態系統收斂至穩態:微分矩陣的特徵值的實部均小於等於1。
線性遞推系統的穩態:取決於eigenvector。 線性動態系統的穩態:取決於eigenfunction。極限環是eigenmode。
linear differential equations: ⎧ d ⎪ —— f(t) = F(f(t), g(t)) ⎪ dt ⎨ ⎪ d ⎪ —— g(t) = G(f(t), g(t)) ⎩ dt Jacobian: ⎡ ∂F ∂F ⎤ ⎢ —— —— ⎥ ⎢ ∂f ∂g ⎥ J = ⎢ ⎥ = ⎡ a b ⎤ ⎢ ∂G ∂G ⎥ ⎣ c d ⎦ ⎢ —— —— ⎥ ⎣ ∂f ∂g ⎦ eigenvalues: (a+b) ± √(a+d)² - 4(ad-bc) λ = —————————————————————————— 2
differential equation - numerical method🚧
numerical method
數值模擬,目前已有八大類方法。
(1) finite difference method 有限差分法 局部近似 取樣 (2) finite volume method 有限體積法 局部近似 通量 (3) finite element method 有限元素法 全域近似 引力 (4) spectral method 頻譜法 全域近似 諧波 (5) particle method 粒子法 速度向量場 軌跡 (6) level set method 等高線法 位勢純量場 波前 (7) vortex method 渦漩法 局部旋轉 渦度 (8) symplectic method 扭對稱法 全域旋轉 軌道
finite difference method
有限差分法。可以求得解析解。有限差分法是一類數值方案的泛稱。先前章節都是採用有限差分法。
domain discretization: grid codomain discretization: function value at point operator discretization: finite difference
定義域離散化:方格 對應域離散化:單點數值 微分運算離散化:有限差分(後向差分/前向差分/中央差分)
finite volume method
有限體積法。保證物理量總和守恆。
domain discretization: grid/mesh codomain discretization: average function value operator discretization: finite difference
定義域離散化:方格/網格 對應域離散化:區間平均 微分運算離散化:有限差分(後向差分/前向差分/中央差分)
未知函數切成小段區間,每一段區間的定積分的平均數,作為遞迴公式的變數。讓這些區間的定積分的平均數互通有無、彼增我減,導致未知函數的全域的定積分維持定值,導致物理量總和守恆。
Introduction to Computational Astrophysical Hydrodynamics https://open-astrophysics-bookshelf.github.io/numerical_exercises/CompHydroTutorial.pdf
詳情請見後面章節conservation law。
finite element method
有限元素法。數值解平滑內插,考慮所有取樣地點。
domain discretization: grid/mesh/particles codomain discretization: shape function operator discretization: chain rule
定義域離散化:方格/網格/粒子 對應域離散化:形狀函數 微分運算離散化:形狀函數套用微分連鎖律,求得數學式子。
有限差分法的視角:微分運算離散化考慮所有取樣地點,導數平滑內插。 有限體積法的視角:通量函數的輸入囊括所有取樣地點,通量平滑內插。
shape function:高度為一、總和為一的基底函數。
講義《Computational Magnetohydrodynamics》。
Galerkin finite element method:微分方程式與基底函數的點積都是零。
consistency:符號解與數值解的一致性。
專著《Partial Differential Equations》。
基底內插可以視作線性代數的「垂直投影到子空間」,子空間的基底是各個位置的shape function。保證存在唯一解。
但是我不知道截斷誤差是多少。我不知道如何提升準度。
Sobolev space https://en.wikipedia.org/wiki/Sobolev_space Lax—Milgram theorem / Babuška–Lax–Milgram theorem https://en.wikipedia.org/wiki/Babuška–Lax–Milgram_theorem
numerical scheme:數值解的數學性質、其對應的數值方案,目前沒有定論。
monolithic convex limiting / invariant domain preserving 凸的下回合還是凸的。 一個例子是maximum principle,bound在極大極小值之間。
Ladyzhenskaya–Babuška–Brezzi condition (inf-sup condition) https://en.wikipedia.org/wiki/Ladyzhenskaya–Babuška–Brezzi_condition https://math.stackexchange.com/questions/2886310/ https://web.stanford.edu/class/cme358/notes/cme358_lecture_notes_2.pdf
finite element method
有限元素法,其意義隨著時代改變。
一、連續物體,大量取樣,形成離散地點。一個地點,根據物理定律列出一個等式,通常是線性方程式。所有地點,形成線性方程組。線性方程組求解,以便得到特定物理量。線性方程組求解,可以重新改寫成大型稀疏矩陣求解,這就是最初的有限元素法。
二、數學家重新彙整觀念。未知函數的離散近似,重新稱作有限差分法。未知函數的連續近似,重新稱作有限體積法。未知函數的取樣擇鄰,沒有適當的詞彙(當時,網格是計算機繪圖的新興詞彙),只好稱作有限元素法。使用自定義網格,這就是後來的有限元素法。
三、未知函數的近似,也可以採用全部地點的shape function的加權總和。距離太遠的地點的shape function數值幾乎是零,只需累計相鄰地點的shape function。針對這件事,沒有適當的詞彙(當前,RBF內插是機器學習的新興詞彙),只好視作有限元素法。使用shape function,這就是目前的有限元素法。
學術名詞是經年累月風吹日曬而成,其意義通常不是原來的樣子。舉例來說,dynamic programming最初是最佳化演算法,經常跟linear programming相提並論。現在則是演算法設計方法(遞迴公式求值方法),經常跟greedy method相提並論。
在工程領域,有限差分法FDM、有限體積法FVM、有限元素法FEM,大家經常將三者相提並論。
有限差分法:單一樣本,函數值。 有限體積法:相鄰樣本,定積分的平均數。 有限元素法:所有樣本,shape function的加權總和。
spectral method
頻譜法。實施傅立葉轉換,一切挪至頻域處理。
domain discretization: grid codomain discretization: sinusoid operator discretization: minimal oscillation trigonometric interpolation
定義域離散化:方格 對應域離散化:弦波 微分運算離散化:最小振盪的三角函數內插
頻譜法:微分方程式實施傅立葉轉換,移項整理成遞迴公式。時間離散化沿用有限差分法,才能製作動畫。
constant-coefficient advection equation: d d —— u(t,x) + c —— u(t,x) = 0 dt dx semi-discretization (explicit Euler method): u(t+Δt,x) - u(t,x) d —————————————————— + c —— u(t,x) = 0 Δt dx spectral method: ⎛ u(t+Δt,x) - u(t,x) d ⎞ DFT⎜ —————————————————— + c —— u(t,x) ⎟ = 0 ⎝ Δt dx ⎠ 改寫成陣列: (DFT(u[n+1]) - DFT(u[n])) / Δt + c (𝑖ωi/Δx) DFT(u[n]) = 0 DFT(u[n+1]) = (1 + C 𝑖ωi) DFT(u[n]) u[n+1] = IDFT((1 + C 𝑖ωi) DFT(u[n])) where C = c Δt/Δx is CFL number without absolute value 𝑖 is imaginary unit ω = 2π/N is fundamental angular frequency of DFT i = (0, 1, ⋯, N-1) is a sequence from 0 to N-1 1 = (1, 1, ⋯, 1) is a sequence of 1s. N is sampling number
也可以全部離散化。優點是adaptive mesh refinement容易收斂。【尚待確認】
constant-coefficient advection equation: d d —— u(t,x) + c —— u(t,x) = 0 dt dx full-discretization: u(t+Δt,x) - u(t,x) u(t,x+Δx) - u(t,x-Δx) —————————————————— + c ————————————————————— = 0 Δt 2 Δx spectral method: ⎛ u(t+Δt,x) - u(t,x) u(t,x+Δx) - u(t,x-Δx) ⎞ DFT⎜ —————————————————— + c ————————————————————— ⎟ = 0 ⎝ Δt 2 Δx ⎠ 改寫成陣列: (DFT(u[n+1]) - DFT(u[n])) / Δt + c (exp(+𝑖ωi) DFT(u[n]) - exp(-𝑖ωi) DFT(u[n])) / (2 Δx) = 0 DFT(u[n+1]) = (1 - ½ C (exp(+𝑖ωi) + exp(-𝑖ωi)) DFT(u[n]) u[n+1] = IDFT((1 - ½ C (exp(+𝑖ωi) + exp(-𝑖ωi)) DFT(u[n]))
傅立葉轉換的數學公式。【尚待確認:索引值標記法】
1. addition <-> addition DFT(f[i] + g[i]) = DFT(f[i]) + DFT(g[i]) 2. multiplication <-> circular convolution DFT(f[i] × g[i]) = DFT(f[i]) ⊛ DFT(g[i]) 3. circular shift <-> amplitude modulation DFT(f[i⊕1]) = exp(𝑖ωi) DFT(f[i]) 4. circular backward difference <-> amplitude modulation DFT((f[i] - f[i⊖1]) / Δx) = ((1 - exp(-𝑖ωi)) / Δx) DFT(f[i]) 5. differentiation <-> angular acceleration DFT(d/dx f(x)) = (𝑖ωi/Δx) DFT(f[i])
https://brianmcfee.net/dstbook-site/content/ch06-dft-properties/Shifting.html https://dsp.stackexchange.com/questions/70113/ https://math.mit.edu/~stevenj/fft-deriv.pdf
傅立葉轉換的某些數學公式是循環運算,必須小心應對。
(1) periodic boundary condition 週期邊界條件:無需額外處理,恰好形成循環運算。 (2) symmetric boundary condition 對稱邊界條件:兩種方法。 (a) method of reflection (DFT) 追加N-1個鬼點,以便形成循環運算。 若是實函數,傅立葉轉換函式庫版本採用實數到複數,減少計算時間。 https://github.com/indutny/fft.js/ (b) real even-symmetric function (type-II DCT) 傅立葉轉換替換成餘弦轉換第二型。 僅適用於實函數。此時等價於第一種方法,但是計算時間更少。 https://dsp.stackexchange.com/questions/2807/ (3) open boundary condition 開放邊界條件:需要大動土木。我放棄行不行。
original array u[0⋯N-1] with symmetric boundary condition: ⎰ u[-1] = u[1] ⎱ u[N] = u[N-2] extended array u⃡[0⋯2N-2] with periodic boundary condition: u⃡[0] = u⃡[2N-1] method of reflection: ⎰ u⃡[0⋯N-1] = u[0⋯N-1] ⎱ u⃡[N⋯2N-2] = u[N-2⋯0]
method | number | naive boundary condition ------------------|---------|------------------------------- Fourier transform | complex | periodic sine transform | real | odd-symmetric (zero Dirichlet) cosine transform | real | even-symmetric (zero Neumann)
consistency:頻譜法不需要自行調整截斷誤差。
傅立葉轉換:截斷誤差是零。雙射函數,精準無誤。 加法:截斷誤差是零。數學公式,精準無誤。 乘法:同上。 循環移位:同上。 循環前向差分:同上。 微分:截斷誤差源自三角函數內插。 已經保證誤差盡量小,故不需要自行調整誤差數量級。
stability:von Neumann stability analysis。
Schwartz space
numerical scheme:先前小節的數值方案可以套用頻譜法。
(1) spectral difference method (2) spectral volume method (3) spectral element method
其中隱式法有極大優勢,時間複雜度較低。以一維空間為例:
有限差分法 隱式法 每回合O(NNT) 取決於矩陣求解演算法 顯式法 每回合O(N) 達到理論下限 頻譜法 隱式法 每回合O(NlogN) 取決於傅立葉轉換演算法 顯式法 每回合O(NlogN) 取決於傅立葉轉換演算法
Galerkin method:頻譜法其實可以視作Galerkin method。
(1) spectral method (2) pseudo-spectral method
spectral method:傅立葉轉換是輸入數列與N種弦波分別點積。頻譜法是微分方程式與N種弦波分別點積等於零。因此頻譜法是Galerkin method。
spectral method is Galerkin method: ⎧ ⎛ u(t+Δt,x) - u(t,x) d ⎞ ⎪ ⎜ —————————————————— + c —— u(t,x) ⎟ ∙ exp(𝑖ω0i) = 0 ⎪ ⎝ Δt dx ⎠ ⎪ ⎪ ⎛ u(t+Δt,x) - u(t,x) d ⎞ ⎨ ⎜ —————————————————— + c —— u(t,x) ⎟ ∙ exp(𝑖ω1i) = 0 ⎪ ⎝ Δt dx ⎠ ⎪ : ⎪ : ⎪ ⎛ u(t+Δt,x) - u(t,x) d ⎞ ⎪ ⎜ —————————————————— + c —— u(t,x) ⎟ ∙ exp(𝑖ω(N-1)i) = 0 ⎩ ⎝ Δt dx ⎠
https://www.mech.kth.se/~ardeshir/courses/literature/Notes_Spectral_Methods.pdf
pseudo-spectral method:傅立葉轉換改成小波轉換,N種弦波改成正規正交多項式。因此虛擬頻譜法也是Galerkin method。
particle method
粒子法是一個非常具有特色的方法,但是被濫用。
粒子法的理想名稱應是「軌跡線法trajectory method」。
[Rossby 1942] Forecasting of flow patterns in the free atmosphere by a trajectory method. Basic Principles of Weather Forecasting by V. P. Starr (appendix), pp.268-284 https://photino.cwa.gov.tw/rdcweb/lib/cd/cd07mb/MB/PDF/04/No.1/03.pdf https://en.wikipedia.org/wiki/Carl-Gustaf_Rossby
粒子法就是「特徵線法method of characteristics」離散化。特徵是速度向量場。特徵曲線是粒子移動軌跡。
characteristics = velocity vector field characteristic curve = pathline
粒子法:一、手工計算速度向量場的數學公式。二、整個空間均勻散布大量粒子。三、每回合每個粒子依照速度向量場移動一步。
numerical scheme:本文介紹其中三類。
(1) full-Lagrangian method:僅使用粒子。 (2) semi-Lagrangian method:粒子搭配靜止網格。 (3) arbitrary Lagrangian–Eulerian method:粒子搭配動態網格。
名稱源自物理學。
Lagrange description: particle trajectory (particle method) 拉格朗日描述:粒子移動(粒子法) Euler description: grid transport (finite volume method) 歐拉描述:格子流動(有限體積法)
來張圖片
大家也針對特定的微分方程式,發明特定的數值方案。
(1) particle-in-cell (PIC) 氣體動力學之歐拉方程組。semi-Lagrangian method。 (2) smoothed particle hydrodynamics (SPH) 流體方程組。粒子套用shape function,變成有限元素法。 (3) material point method (MPM) 柔體方程組。速度用粒子來算,應力用格子來算。 (4) fast multipole method (FMM) N-body problem。粒化格用八元樹,適度合併格子成為一個粒子。 (5) distinct element method (DEM) contact problem。碰撞另行計算,利用恢復力和摩擦力。
consistency and stability:粒子法的一致性和穩定性是數學界的大難題。目前沒有人知道如何描述。原因是動態系統的軌跡可能產生「混沌chaos」。
一致性:軌跡分布難以描述,只能透過實地觀測。白話文:寫不出符號解、只會算數值解。
穩定性:初始條件稍微改變,軌跡大幅改變。軌跡大致循環,卻沒有規律。白話文:符號解/數值解不是人類已知的穩定性。一種替代方案是Courant–Friedrichs–Lewy condition。
因此大家隨興所至發明各式各樣的數值方案,天花亂墜鬼話連篇,連一個數學性質都不必證明。維基百科整理了一串名單。
level set method
等高線法是一個非常具有特色的方法,但是被雪藏。
一、數學家至今仍未發掘等高線的性質和運算。
二、計算學家至今仍未發明高效的資料結構和演算法。
導致大家在實務上使用其他方法。
等高線法:未知函數的等高線,每回合沿著表面垂直方向移動(梯度方向)。等高線每一點的移動速度取決於守恆律的倍率大小。所有等高線可以改寫成一個有向距離場,其資料結構是三維陣列。
數值模擬過程當中,相同高度的等高線可能融合或分離(宛如水珠融合和分離)。這件事的處理方法,以及收斂性證明,我沒有研究。
專著《Direct Numerical Simulations of Gas–Liquid Multiphase Flows》。
Hamilton–Jacobi equation d/dt f + H(x, df/dx, t) = 0 where f has the form f(x(t), t) eikonal equation |∇f| = n level set equation d/dt φ + v|∇φ| = 0 https://math.mit.edu/classes/18.086/2007/levelsetpres.pdf https://math.mit.edu/classes/18.086/2007/levelsetnotes.pdf https://math.mit.edu/classes/18.376/Notes/LectureTopics18376.pdf
https://en.wikipedia.org/wiki/Viscosity_solution https://benjaminmoll.com/wp-content/uploads/2019/07/viscosity_slides.pdf In the case of hyperbolic systems, the notion of weak solution based on distributions does not guarantee uniqueness, and it is necessary to supplement it with entropy conditions or some other selection criterion. In fully nonlinear PDE such as the Hamilton–Jacobi equation, there is a very different definition of weak solution called viscosity solution.
level set ghost point https://www.researchgate.net/publication/334643942
Stanley Osher https://link.springer.com/book/10.1007/b98879 James Sethian https://math.berkeley.edu/~sethian/2006/Publications/Book/book.html Hailiang Liu https://faculty.sites.iastate.edu/hliu/ Ken Museth https://ken.museth.org/Publications.html
Fronts propagating with curvature-dependent speed https://math.berkeley.edu/~sethian/Papers/sethian.osher.88.pdf
capturing multivalued solution Fronts Propagating with Curvature-Dependent Speed: Algorithms Based on Hamilton-Jacobi Formulations https://math.berkeley.edu/~sethian/Papers/sethian.osher.88.pdf Multi-Valued Solution and Level Set Methods in Computational High Frequency Wave Propagation https://faculty.sites.iastate.edu/hliu/files/inline-files/Liu-osher-tsai-CICP06_1.pdf Front Tracking for Hyperbolic Conservation Laws https://www.uio.no/studier/emner/matnat/math/MAT4380/v15/pensumliste/chapter3.pdf A Level Set Method for the Computation of Multivalued Solutions to Quasi-Linear Hyperbolic PDEs and Hamilton-Jacobi Equations https://www.researchgate.net/publication/2855502
需要判斷乾溼。水深歸零稱作乾,反之稱作濕。
(1) wet–dry front tracking:找到乾濕交界之處。 (2) wet–dry transition:乾濕互動方式。
vortex method
渦漩法。未知函數的旋度,作為遞迴公式的變數。
微分方程式套用旋度,再根據分配律,化作每項套用旋度。
渦漩法的主角是渦度,但是卻稱作渦漩法。我不知道原因。
vorticity:流體力學當中,速度的旋度,譯作渦度。 vortex:流體力學當中,一塊流體旋轉流動,譯作渦漩。 whirlpool:自然現象當中,一塊流體表層的水平渦漩,譯作漩渦或渦流。 swirl:流體力學當中,一塊流體運動總是繞來繞去,譯作渦流。 eddy:流體力學當中,一塊流體運動總是伴隨局部循環流動,該處譯作渦漩。
渦漩法的經典範例是流體方程組。流體方程組篇幅很長,請見本站文件「fluid simulation: equation」。節錄摘要如下:
1. continuity equation 連續方程式 2. continuity = advection + compression 連續=平流+壓縮 3. advection equation 平流方程式 4. hydrodynamic equations 流體方程組為三式聯立(本文只用到前兩式聯立) 質量守恆:密度連續方程式 動量守恆:動量密度連續方程式 能量守恆:能量密度連續方程式 5. hydrodynamic equations (velocity advection) 前兩式聯立,等價這兩式聯立 密度連續方程式 速度平流方程式 6. Navier–Stokes equation 流體是水的情況下,流體方程組可以簡化。 追加限制條件:不可壓縮、牛頓流體、正壓流體、均勻流體 7. streamfunction-vorticity formulation 二維空間的情況下,流體方程組可以改寫成流函數與旋度。
hydrodynamic equations:流體方程組。
hydrodynamic equations (skip conservation of energy): ⎧ ∂ ⎪ —— ρ + ∇∙(ρv) = 0 conservation of mass ⎪ ∂t ⎨ ⎪ ∂ ⎪ —— ρv + ∇∙(ρv⊗v) + ρg + ∇p + ∇∙σ = 0 conservation of momentum ⎩ ∂t
hydrodynamic equations (skip conservation of energy): ⎧ ∂ ⎪ —— ρ + ∇∙(ρv) = 0 conservation of mass ⎪ ∂t ⎨ ⎪ D ∇p ∇∙σ ⎪ —— v + g + ——— + ——— = 0 advection of velocity ⎩ Dt ρ ρ
v: velocity ρ: density (mass per volume) g: gravity (force) p: pressure (force per area) σ: stress tensor (forces per area) D/Dt: material derivative
vorticity equation:渦度方程式。流體方程組之速度平流方程式套用旋度,再根據分配律,化作每項套用旋度。
流體力學當中,速度的旋度稱作渦度。未知函數是速度,未知函數的旋度是渦度,以渦度作為遞迴公式的變數。
vorticity equation: ⎛ D ∇p ∇∙σ ⎞ ∇×⎜ —— v + g + ——— + ——— ⎟ = 0 ⎝ Dt ρ ρ ⎠ vorticity equation: D ∇ρ×∇p ∇∙σ —— ω - ω∙∇v + ω(∇∙v) + ∇×g - ————— + ∇×——— = 0 Dt ρ² ρ
vorticity = curl of velocity: ω = ∇×v curl of derivative: ⎛ ∂ ⎞ ∂ ∂ ∇×⎜ —— v ⎟ = —— ∇×v = —— ω ⎝ ∂t ⎠ ∂t ∂t curl of advection: ∇×((v∙∇)v) = -[(ω∙∇)v - (v∙∇)ω + v(∇∙ω) - ω(∇∙v)] = -(ω∙∇)v + (v∙∇)ω + ω(∇∙v) ⎧ curl of cross product: ⎪ ∇×(v×ω) = (ω∙∇)v - (v∙∇)ω + v(∇∙ω) - ω(∇∙v) ⎪ ⎪ curl of Lamb vector: ⎨ ∇×(v×ω) = ∇×(v×(∇×v)) = -∇×((v∙∇)v) ⎪ ⎪ divergence of curl = 0: ⎩ ∇∙ω = ∇∙(∇×v) = 0 curl of material derivative: ⎛ D ⎞ ⎛ ∂ ⎞ ∇×⎜ —— v ⎟ = ∇×⎜ —— v + v∙∇v ⎟ ⎝ Dt ⎠ ⎝ ∂t ⎠ ⎛ ∂ ⎞ ⎛ ⎞ = ∇×⎜ —— v ⎟ + ∇×⎜ v∙∇v ⎟ ⎝ ∂t ⎠ ⎝ ⎠ ⎛ ∂ ⎞ ⎛ ⎞ = ⎜ —— ∇×v ⎟ + ⎜ ∇×(v∙∇v) ⎟ ⎝ ∂t ⎠ ⎝ ⎠ ⎛ ∂ ⎞ ⎛ ⎞ = ⎜ —— ω ⎟ + ⎜ v∙∇ω - ω∙∇v + ω(∇∙v) ⎟ ⎝ ∂t ⎠ ⎝ ⎠ D = —— ω - ω∙∇v + ω(∇∙v) Dt curl of reciprocal product: ∇p ∇ρ×∇p ∇×——— = - ————— ρ ρ² ⎧ curl of product: ⎪ ∇×(∇p/ρ) = ∇(1/ρ) × ∇p + (1/ρ) (∇×∇p) ⎪ ⎪ gradient of reciprocal: ⎨ ∇(1/ρ) = -(1/ρ²) ∇ρ ⎪ ⎪ curl of gradient = 0: ⎩ ∇×∇p = 0
https://physics.stackexchange.com/questions/745716/ https://physics.stackexchange.com/questions/234775/
當流體是水,追加四項條件:不可壓縮、牛頓流體、正壓流體、均勻流體。渦度方程式得以簡化。
Navier–Stokes equations: ⎧ ∂ ⎪ —— ρ + ∇∙(ρv) = 0 ⎪ ∂t ⎨ ⎪ D 1 ⎪ —— v + g + — ∇p - ν ∇∙∇v = 0 ⎩ Dt ρ vorticity equation for water: D —— ω - ω∙∇v + ∇×g + ν ∇×∇×ω = 0 Dt major assumptions for water: (1) incompressibility ∇∙v = 0 (2) Newtonian fluid σ = -μ∇v (restoring force) and let ν = μ/ρ (3) barotropic fluid ρ = ρ(p) (ρ depends only on p) => ∇ρ×∇p = 0 (4) homogeneous fluid ρ = constant
μ: viscosity ν: kinematic viscosity
∇×(v∙∇v) = -(ω∙∇)v + (v∙∇)ω curl of advection when ∇∙v = 0 ⎛ D ⎞ D ∇×⎜ —— v ⎟ = —— ω - ω∙∇v curl of material derivative ⎝ Dt ⎠ Dt when ∇∙v = 0 ⎛ ∇p ⎞ ∇×⎜ —— ⎟ = 0 curl of gradient = 0 ⎝ ρ ⎠ when ρ is constant ∇×(∇∙∇v) = -∇×∇×∇×v = -∇×∇×ω curl of Laplacian
https://www.physicsforums.com/threads/constant-density-vs-incompressible.902510/
vorticity–streamfunction formulation:一、當速度不可壓縮,得以引入「向量位勢vector potential」。位勢的旋度是速度,速度的旋度是渦度。二、針對二維空間,向量位勢從向量退化成純量,x值y值為零,z值稱作「流函數stream function」。渦度從向量退化成純量,x值y值為零,z值仍然稱作渦度。三、流體方程組可以改寫成渦度和位勢。
1. define vorticity ω: let ω = ∇×v 2. define vector potential A: let v = ∇×A if ∇∙v = ∇∙(∇×A) = 0 divergnece of curl = 0 3. formula of vector potential A and vorticity ω: let Coulomb gauge ∇∙A = 0 for skipping the constant of integration (∇×A + ∇H) = ∇×A ω = ∇×v vorticity = ∇×(∇×A) vector potential = ∇(∇∙A) - ∆A curl of curl = -∆A Coulomb gauge
1. vector potential A in 2D space: ⎡ 0 ⎤ A = ⎢ 0 ⎥ = ψẑ ⎣ ψ(t,x,y) ⎦ 2. velocity v in 2D space: v = ∇×A = ∇×(ψẑ) = ψ∇×ẑ + ∇ψ×ẑ = ∇ψ×ẑ (since ∇×ẑ = 0) ⎡ ∂ψ/∂y ⎤ ⎡ vₓ ⎤ v = ⎢ -∂ψ/∂x ⎥ = ⎢ v ⎥ ⎣ 0 ⎦ ⎣ 0 ⎦ 3. vorticity ω in 2D space: ω = ∇×v = ∇×∇×A = -∆A (assume Coulomb gauge ∇∙A = 0) ⎡ 0 ⎤ ⎡ 0 ⎤ ω = ⎢ 0 ⎥ = ⎢ 0 ⎥ = ζẑ ⎣ ∂v/∂x - ∂vₓ/∂y ⎦ ⎣ ζ(t,x,y) ⎦ 4. formula of stream function ψ and vorticity ζ: ζ = -∆ψ (assume Coulomb gauge ∇∙ψ = 0)
A: vector potential (vector) ψ: stream function (scalar) v: velocity (vector) ω: vorticity (vector) ζ: vorticity (scalar)
1. vorticity equation for water in 3D space: D —— ω - ω∙∇v + ∇×g + ν ∇×∇×ω = 0 Dt 2. vorticity equation for water in 2D space: D —— ω + ∇×g + ν ∇×∇×ω = 0 (since ω∙∇v = 0) Dt ∂ —— ω + v∙∇ω + ∇×g + ν ∇×∇×ω = 0 ∂t 3. vorticity–streamfunction formulation: ⎧ ∂ ⎪ —— ζ - ∇ψ×∇ζ + ∇×g - ν ∆ζ = 0 ⎨ ∂t ⎪ ⎩ ζ = -∆ψ
https://sites.fem.unicamp.br/~phoenics/SITE_PHOENICS/Apostilas/CFD-1_U%20Michigan_Hong/Lecture05.pdf
curl:旋度。旋度運算的結果。
Biot–Savart law:反旋度。旋度反運算的數學公式。
旋度反運算(給定旋度求得原始數值)。本文針對流體方程組(給定渦度求得速度)。教科書習慣針對電磁方程組(給定線圈電流密度求得磁場)。
1. define vector potential A and vorticity ω: let ω = ∇×v let v = ∇×A ω = -∆A Coulomb gauge ∇∙A = 0 2. given vorticity ω, solve vector potential A: (Poisson's equation) ∆A = -ω Poisson's equation 1 ⌠ ω(x') A(x) = —— ⎮ —————— dV' solution in 3D space 4π ⌡ |x-x'| via Green's function 1 ⌠ A(x) = - —— ⎮ ω(x') ln|x-x'| dV' solution in 2D space 2π ⌡ via Green's function 3. given vorticity ω, solve velocity v: (Biot–Savart law) v(x) = ∇×A(x) x is vector ⎛ 1 ⌠ ω(x') ⎞ = ∇×⎜ —— ⎮ —————— dV' ⎟ ⎝ 4π ⌡ |x-x'| ⎠ ⎛ 1 ⌠ 1 ⎞ = ∇×⎜ —— ⎮ ω(x') —————— dV' ⎟ ⎝ 4π ⌡ |x-x'| ⎠ 1 ⌠ ⎛ 1 ⎞ = —— ⎮ ⎜ ω(x') × ∇ —————— ⎟ dV' 4π ⌡ ⎝ |x-x'| ⎠ 1 ⌠ ⎛ x-x' ⎞ = —— ⎮ ⎜ ω(x') × - ——————— ⎟ dV' 4π ⌡ ⎝ |x-x'|³ ⎠ 1 ⌠ ω(x') × (x-x') = —— ⎮ —————————————— dV' in 3D space 4π ⌡ |x-x'|³ Γ ⌠ 𝑘 × (x-x') v(x) = —— ⎮ ——————————— dV' in 2D space【尚待確認】 2π ⌡ |x-x'|²
https://www.damtp.cam.ac.uk/user/reh10/lectures/nst-mmii-chapter2.pdf https://physics.stackexchange.com/questions/67445/ https://e-magnetica.pl/doku.php/biot-savart_law
numerical scheme:先前小節的數值方案可以套用渦漩法。
專著《Vortex Methods: Theory and Practice》。
vortex particle method vortex element method vortex domain method vortex-in-cell method
vortex particle method:
(1) particle is vorticity. (2) calculate velocity field by Biot—Savart law. summing the contributions of all particles. (3) particle advection by velocity field. updating the positions of particles. vorticity is constant for non-viscous fluid. (4) apply boundary condition.
symplectic method
扭對稱法。微分方程式改寫成扭對稱動態系統。
詳情請見後面章節Hamilton's equation。
differential equation - conservation law🚧
本文介紹動態系統的其中一種特例:守恆律
conservation law
物理學之守恆定律:物理量總和固定。
例如質量守恆、動量守恆、能量守恆。不生不滅,相加為常數。
m₁ + m₂ = mₜₒₜₐₗ conservation of mass m₁v₁ + m₂v₂ = pₜₒₜₐₗ conservation of momentum ½m₁v₁² + ½m₂v₂² = Eₜₒₜₐₗ conservation of energy
進一步考慮物理量的時間變化。
例如力平衡。不生不滅,相加為零。
d/dt mv = f₁ + f₂ = 0 static equilibrium of force d/dt mv + f₁ + f₂ = 0 dynamic equilibrium of force
進一步考慮物理量的空間變化。
例如質量傳輸、動量傳輸、能量傳輸。不生不滅,相加為零。
d d d d —— ρV + —— ρV + —— ρV + —— ρV = 0 transport of mass dt dx dy dz
數學之守恆律:物理量的時間變化等於空間變化。
教科書習慣將未知函數寫成u(t,x,y,z),簡寫為u。
d d d d —— u + —— u + —— u + —— u = 0 conservation law dt dx dy dz
進一步讓空間變化乘上已知倍率a。時間變化不必乘上倍率。倍率取決於未知函數的輸出數值大小,因此寫成函數a(u)。
d d d d —— u + a₁(u) —— u + a₂(u) —— u + a₃(u) —— u = 0 dt dx dy dz conservation law
進一步利用微分連鎖律,將倍率a(u)改寫成變換f(u)。形成守恆律的標準式。稱作「守恆型conservation form」。
df df du —— = —— —— chain rule dx du dx
let a(u) = f′(u), then d d ⎛ d ⎞ ⎛ d ⎞ d a(u) —— u = f′(u) —— u = ⎜ —— f(u) ⎟ ⎜ —— u ⎟ = —— f(u) dx dx ⎝ du ⎠ ⎝ dx ⎠ dx
d d d d —— u + —— f₁(u) + —— f₂(u) + —— f₃(u) = 0 conservation form dt dx dy dz
順帶一提,未知函數可以推廣成多變量。倍率a(u)隨之推廣成矩陣A(u)。數學家習慣討論其中一種特例:A(u)可對角化、而且特徵值是實數。
主要原因是可對角化矩陣容易推導數學公式。透過特徵分解和座標轉換,將一個多變量函數化為多個單變量函數(一道方程組化為多道方程式),其變量不相依,得以各自討論。這個手法名聞遐邇。這個手法也出現在其他領域,例如用特徵分解對付多自由度系統。
古人將這種特例稱作hyperbolic conservation law,沿襲至今。注意到,此處的hyperbolic,偏微分方程的b² - 4ac ⪋ 0分類法的hyperbolic,兩者意義不同。此處的守恆律,在b² - 4ac ⪋ 0分類法當中是屬於parabolic,畢竟沒有二階偏微分。
取名hyperbolic是因為古人沒有考慮清楚。成為歷史共業。
scalar conservation law in one-dimensional space
專著《Finite Volume Methods for Hyperbolic Problems》。
本文只談最簡單的情況:一維純量守恆律。
d/dt u + d/dx f(u) = 0
(1) one-dimensional space (1D): the input of u are two values t and x. (2) scalar-valued (scalar): the output of u is a value.
一維:雙變數。函數輸入是時間變數t、空間變數x。 純量:單變量。函數輸出是數值、而不是向量。
以下列出一維純量守恆律的其中幾個經典範例。
constant-coefficient 常係數平流方程式 advection equation q: physical quantity u ≔ q , f(u) ≔ cq c: velocity (constant) inviscid Burgers's equation 無黏性漢堡堡方程式 u ≔ q , f(u) ≔ ½q² q: physical quantity traffic-flow equation 交通流量方程式 u ≔ ρ , f(u) ≔ ρ(1-ρ) ρ: density of cars continuity equation 連續方程式 u ≔ q , f(u) ≔ qv q: physical quantity v: velocity (known) shallow water equations 淺水方程組 ⎰ u₁ ≔ h , f₁(u₁) ≔ hv h: water depth ⎱ u₂ ≔ hv , f₂(u₂) ≔ hv²+½gh² v: velocity g: gravitational acceleration (constant) Euler's equations of gas dynamics 氣體動力學之歐拉方程組 ⎧ u₁ ≔ ρ , f₁(u₁) ≔ ρv ρ: density ⎨ u₂ ≔ ρv , f₂(u₂) ≔ ρv²+p v: velocity ⎩ u₃ ≔ ρe , f₃(u₃) ≔ ρev+pv p: pressure where e = eₖ + eᵢ e: specific energy eₖ = ½v² eₖ: specific kinetic energy eᵢ: specific internal energy
順帶一提,最後兩個例子是方程組。方程組改寫成多變量方程式,恰好形成hyperbolic conservation law。
shallow water equations 淺水方程組 u ≔ ⎡ h ⎤ , f(u) ≔ ⎡ hv ⎤ h: water depth ⎣ hv ⎦ ⎣ hv²+½gh² ⎦ v: velocity g: gravitational acceleration (constant) Euler's equations of gas dynamics 氣體動力學之歐拉方程組 ⎡ ρ ⎤ ⎡ ρv ⎤ ρ: density u ≔ ⎢ ρv ⎥ , f(u) ≔ ⎢ ρv²+p ⎥ v: velocity ⎣ ρe ⎦ ⎣ ρev+pv ⎦ p: pressure e: specific energy (½v² + eᵢ)
analytic solution of
scalar conservation law in one-dimensional space
專著《Computational Gasdynamics》。
大家習慣利用method of characteristics求得符號解。
conservation law with initial condition: ⎰ d/dt u(t,x) + a(u(t,x)) d/dx u(t,x) = 0 conservation law ⎱ u(0,x) = u₀(x) initial condition characteristics: dx/dt = a(u(t,x)) solution: u(t,x) = u₀(x - a(u(t,x))⋅t)
幾何意義非常直觀。初始條件u₀(x)視作一群粒子,每個粒子各自往水平方向移動。水平移動速度是a(u(t,x)),取決於高度u(t,x)和倍率a(u)。
舉例來說,當倍率a(u)是常數函數,無論哪種高度,速度都一樣快。當倍率a(u)是遞增函數,高度越高,速度越快。
守恆律的解可以是單值解、多值解。每個粒子的水平移動速度不一致。符號解不能保證一直是函數、一直是單值。
常係數守恆律:初始條件是單值,符號解亦是單值。 一般的守恆律:初始條件是單值,符號解可能是多值。 可能從某個時刻開始,函數變流形,單值變多值。
倍率a(u)是常數函數,形成線性微分方程式,稱作線性守恆律、常係數守恆律。當初始條件是函數,那麼時時刻刻都是函數,形成單值解。例如constant-coefficient advection equation:
倍率a(u)是任意函數,形成非線性微分方程式,稱作非線性守恆律、守恆律。當初始條件是函數,那麼途中可能變得不是函數,形成多值解。例如inviscid Burgers's equation:
線性守恆律、或者說常係數守恆律。
linear conservation law d/dt u(t,x) + a d/dx u(t,x) = 0 initial condition u(0,x) = u₀(x) solution u(t,x) = u₀(x - at) waveform u(t,x) at certain t wave speed a = constant rightward a > 0 leftward a < 0 static a = 0 wavefront x - at = constant characteristics dx/dt = a expansion a u(t,x) ≤ a u(t,y) for x₀ ≤ x ≤ y ≤ y₀ compression a u(t,x) ≥ a u(t,y) for x₀ ≤ x ≤ y ≤ y₀
非線性守恆律、或者說一般的守恆律。
conservation law: d d —— u(t,x) + a(u(t,x)) —— u(t,x) = 0 dt dx d d —— u(t,x) + f′(u(t,x)) —— u(t,x) = 0 define f′(u) = a(u) dt dx d d —— u(t,x) + —— f(u(t,x)) = 0 chain rule dt dx
conservation law d/dt u(t,x) + a(u(t,x)) d/dx u(t,x) = 0 conservation law d/dt u(t,x) + d/dx f(u(t,x)) = 0 where f′(u) = a(u) initial condition u(0,x) = u₀(x) solution u(t,x) = u₀(x - a(u(t,x))⋅t) waveform u(t,x) at certain t wave speed a(u(t,x)) rightward a(u(t,x)) > 0 leftward a(u(t,x)) < 0 static a(u(t,x)) = 0 wavefront x - a(u)t = constant characteristics dx/dt = a(u) expansion f(u(t,x)) ≤ f(u(t,y)) for x₀ ≤ x ≤ y ≤ y₀ compression f(u(t,x)) ≥ f(u(t,y)) for x₀ ≤ x ≤ y ≤ y₀
符號解可以畫成函數曲線圖(橫軸位置x、縱軸函數值u)、特徵曲線圖(橫軸位置x、縱軸時間t)。
(1) waveforms (function curves) u(t,x) for each t (2) characteristic curves dx/dt = a(u) for each x
符號解是LED。LED導致保單調、L∞遞減、TV遞減。
monotonicity preserving https://books.google.com.tw/books?id=pcwLAQAAQBAJ&pg=PA67 L∞-diminishing and total variation diminishing (TVD) https://books.google.com.tw/books?id=-gHkBwAAQBAJ&pg=PA291 tame oscillation condition https://bpb-us-e1.wpmucdn.com/sites.psu.edu/dist/d/80666/files/2019/09/clawtut4-Oxford.pdf [Glimm–Lax 1970]
https://www.ams.org/books/memo/0101/
shock wave
專著《Riemann Problems and Jupyter Solutions》。
「衝擊波」或「震波」是一種物理現象。
例如空氣衝擊波,空氣高速移動、向前推擠、密度陡升。下圖是戰鬥機引起的空氣衝擊波,密度陡升之處形成黑線,黑線隨著戰鬥機前進。
「shock tube」是一種實驗設備,用於觀察封閉長管內部的空氣衝擊波,可以視作一維空間的衝擊波。「Sod shock tube」是知名的實驗模型暨實驗數據,用來檢驗數學模型暨計算結果是否屬實。
例如正在破碎的波浪,海水流動、向前推擠、高度和速度上升、前緣破碎。下圖是風力引起的波浪,高度和速度上升之處正在破碎。
「wave tank」是一種實驗設備,用於觀察封閉水道內部的波浪,可以視作一維空間的波浪。網路上可以找到許多實驗模型暨實驗數據,用來檢驗數學模型暨計算結果是否屬實。
按理來說,衝擊波滿足守恆定律。理所當然,大家運用守恆律描述衝擊波。衝擊波是守恆律的其中一種解,而且是不可微函數。空氣衝擊波是Euler's equations of gas dynamics其中一解。正在破碎的波浪是shallow water equations其中一解。
以往發展的微分方程式求解技巧,只能求得解析解,不能求得衝擊波。數學家為此發展新的求解技巧。
weak solution of
scalar conservation law in one-dimensional space
大家習慣利用Riemann problem求得符號解。
不同初始條件得到不同符號解。大家討論最簡易的初始條件:僅有一處不連續,其餘處處連續。連續之處不在討論範圍,可以隨意處置。因此大家討論最簡易的初始條件:兩段常數函數。
守恆律,初始條件僅有一處不連續,稱作Riemann problem。
守恆律,初始條件擁有多處不連續,那麼每處各自求解。
Riemann problem = conservation law & Riemann initial condition
conservation law: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx solution: u(t,x) Riemann initial condition: 方便教學的簡易範例。不連續處只有一個,函數值是兩個常數。 u(0,x) = ⎰ uʟ(0) if x ≤ p(0) ⎱ uʀ(0) if x > p(0) discontinuous position of solution: p(t) moving speed of discontinuous position: s(t) = p′(t) function value of discontinuous position of solution: uʟ(t) = lim u(t,x) x→p(t)⁻ uʀ(t) = lim u(t,x) x→p(t)⁺
Riemann problem的弱解,有無限多種造型。大家限定造型:characteristic curves只合併、不分叉。白話文:衝擊波處處向前、不會渙散。進擊的衝擊波。稱作熵解。
一種初始條件,擁有無限多種弱解、唯一一種熵解。
compression: 壓縮。往右推擠。 f(uʟ) ≥ f(uʀ) at certain t Rankine–Hugoniot jump condition: 左側溢出等於右側溢出。物理量總和守恆。 f(uʟ) - s uʟ = f(uʀ) - s uʀ for all t Rankine–Hugoniot jump condition: 改寫數學式子,宛如截線斜率,宛如等比例,宛如物理學的平均速度公式。 f(uʀ) - f(uʟ) ————————————— = s for all t uʀ - uʟ Oleĭnik entropy condition: 內插新增一處不連續,仍往右推擠。(內插新增多處不連續,則速度s(t)遞減。) f(u*) - f(uʟ) f(uʀ) - f(u*) ————————————— ≥ ————————————— for all t u* - uʟ uʀ - u* for all u* that uʟ > u* > uʀ Lax entropy condition: a(u)恰是嚴格遞增函數、f(u)恰是嚴格凸函數。得以簡化式子、追加中間項s(t)。 f′(uʟ) > s > f′(uʀ) when f″(u) = a′(u) > 0 for all t
(1) weak solution <=> Rankine–Hugoniot jump condition (2) entropy solution <=> Rankine–Hugoniot jump condition & Oleĭnik entropy condition (3) entropy solution when f is strictly convex <=> Rankine–Hugoniot jump condition & Lax entropy condition
Riemann problem的熵解,可能是衝擊波、稀疏波。
(簡單起見,假設高度越高、速度越快)。
多值解對切對拼得到衝擊波,令兩半面積相等以便守恆。 u u | ^ ───╮ ^ ──|╮ | ╱ ---> | ∤ | ╰──── | ╰|──── --------->x --------->x
a(u) ^ / for convenience, we assume that: | / the higher, the faster | / --------->u (1) shock wave (a) function curve u uʟ u u ^ -- ^ ---- ^ ------ | | uʀ --> | | --> | | | ------ | ---- | -- --------->x --------->x --------->x (b) characteristic curves t t ^ //| ^ | ///|| | |////||| | --------->x --------->x entropy solution NOT entropy solution run into shock emerge from shock (中線記得對準discontinuity) (2) rarefaction wave (a) function curve u uʀ u u ^ ------ ^ ---- ^ -- |uʟ| --> | / --> | / | -- | -- | -- --------->x --------->x --------->x (b) characteristic curves t t ^|| / /// ^||||////// ||| / /// ||||///// |||//// |||//// --------->x --------->x entropy solution NOT entropy solution expansion fan create from center (是咧畫啥物潲)
two types of entropy solutions of Riemann problem: (1) shock wave f(uʟ) ≥ f(uʀ) (a) rightward moving f(uʟ) ≥ f(uʀ) and uʟ ≥ uʀ (b) leftward moving f(uʟ) ≥ f(uʀ) and uʟ ≤ uʀ (2) rarefaction wave f(uʟ) ≤ f(uʀ) (a) rightward moving f(uʟ) ≤ f(uʀ) and uʟ ≤ uʀ (b) leftward moving f(uʟ) ≤ f(uʀ) and uʟ ≥ uʀ Riemann initial condition: u(0,x) = ⎰ uʟ , if x < 0 ⎱ uʀ , if x > 0 entropy-satisfying shock wave: u(t,x) = ⎰ uʟ , if x < st ⎱ uʀ , if x > st where s is moving speed s = (f(uʀ) - f(uʟ)) / (uʀ - uʟ) entropy-satisfying rarefaction wave: u(t,x) = ⎧ uʟ , if x ≤ f′(uʟ)t ⎨ f′⁻¹(x/t) , if f′(uʟ)t ≤ x ≤ f′(uʀ)t ⎩ uʀ , if x ≤ f′(uʀ)t [Osher 1983] u(x/t) = ⎰ argmin {f(u*) - (x/t)u* : uʟ ≤ u* ≤ uʀ} , if uʟ ≤ uʀ ⎱ argmax {f(u*) - (x/t)u* : uʀ ≤ u* ≤ uʟ} , if uʟ > uʀ since waveform is monotonicity preserving
https://www3.nd.edu/~dbalsara/numerical-pde-course/Appendix_LesHouches/LesHouches_Lecture_4_NonLinScalr.pdf https://web.stanford.edu/class/math220a/handouts/conservation.pdf https://www.researchgate.net/publication/266329534 https://math.stackexchange.com/questions/2539265/
順帶一提,一維純量守恆律的方程組,熵解出現新種類。
舉例來說,下圖是Euler's equations of gas dynamics的衝擊波。三個未知函數,不連續地點皆相同,除了density在中間多出一處不連續。該處稱作contact discontinuity。
Riemann problem of system of conservation laws in 1D space has new type discontinuity. i.e. contact discontinuity, tangential discontinuity.
finite volume method
大家習慣利用finite volume method求得數值解。
守恆律是物理量總和守恆的動態系統。有限體積法是物理量總和守恆的有限差分法。守恆律與有限體積法天生一對。
volume:切割空間,形成體積。體積之間,形成介面。體積內部函數值總和,形成總量。體積之間函數值流動,形成通量。
volume:體積。物理量對空間定積分,定積分的範圍。 interface:介面。體積交界。 volume-integrated quantity:總量。物理量對空間定積分,定積分的結果。 flux:通量。總量對時間微分。
volume discretization:體積有兩種設定方式,第一種是鄰邊圍住的範圍,第二種是Voronoi diagram。此處採用第一種。
(1) cell-centered finite volume method (2) vertex-centered finite volume method
conservation form:守恆律的標準式,稱作守恆型。物理量總和守恆。函數值總和是定值。函數值四處流動、不生不滅。
conservation form: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx
finite volume method:守恆型離散化,形成遞迴公式。空間取樣,以xᵢ為中心,左取xi-1/2,右取xi+1/2。
CFL number的倍率a被挪至通量。對f(u)微分以求得a。
conservation form: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx discretization: u(t+Δt,x) - u(t,x) f(u(t,x+½Δx)) - f(u(t,x-½Δx)) —————————————————— + ————————————————————————————— = 0 Δt Δx u(tₙ₊₁,xᵢ) - u(tₙ,xᵢ) f(u(tₙ,xᵢ₊₁⸝₂)) - f(u(tₙ,xᵢ₋₁⸝₂)) ————————————————————— + ————————————————————————————————— = 0 Δt Δx uᵢ⁽ⁿ⁺¹⁾ - uᵢ⁽ⁿ⁾ f(uᵢ₊₁⸝₂⁽ⁿ⁾) - f(uᵢ₋₁⸝₂⁽ⁿ⁾) ——————————————— + ——————————————————————————— = 0 Δt Δx uᵢ⁽ⁿ⁺¹⁾ - uᵢ⁽ⁿ⁾ fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾ ——————————————— + ————————————————————— = 0 Δt Δx finite volume method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) 1 ⌠xᵢ₊₁⸝₂ where volume-averaged quantity uᵢ⁽ⁿ⁾ = —— ⎮ u(tₙ,x) dx Δx ⌡xᵢ₋₁⸝₂ flux fᵢ₊₁⸝₂⁽ⁿ⁾ = f(uᵢ₊₁⸝₂⁽ⁿ⁾) = f(u(tₙ,xᵢ₊₁⸝₂)) CFL number without speed λ = Δt / Δx
conservation:守恆性。數值解每回合數值總和保持相同。
conservation: sum uᵢ⁽ⁿ⁾ = sum uᵢ⁽ⁿ⁺¹⁾
遞迴公式當中,通量的相鄰差的區間和等於頭尾相減,其餘兩兩抵銷。頭尾相等導致守恆性。例如頭尾是零。
assume f₋₁⸝₂⁽ⁿ⁾ = fₜₐᵢₗ₊₁⸝₂⁽ⁿ⁾ sum uᵢ⁽ⁿ⁺¹⁾ = sum { uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) } = sum uᵢ⁽ⁿ⁾ - λ sum { fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾ } = sum uᵢ⁽ⁿ⁾ - λ (fₜₐᵢₗ₊₁⸝₂⁽ⁿ⁾ - f₋₁⸝₂⁽ⁿ⁾) = sum uᵢ⁽ⁿ⁾
numerical flux:通量。自訂通量計算公式。反正會兩兩抵銷。
nearest 2 points: average of fluxes ⎰ fᵢ₊₁⸝₂⁽ⁿ⁾ = (fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾) / 2 ⎱ fᵢ⁽ⁿ⁾ = f(uᵢ⁽ⁿ⁾) nearest 2 points: flux of average of quantities ⎰ fᵢ₊₁⸝₂⁽ⁿ⁾ = f(uᵢ₊₁⸝₂⁽ⁿ⁾) ⎱ uᵢ₊₁⸝₂⁽ⁿ⁾ = (uᵢ⁽ⁿ⁾ + uᵢ₊₁⁽ⁿ⁾) / 2 nearest 4 points: flux of weighted average of quantities ⎰ fᵢ₊₁⸝₂⁽ⁿ⁾ = f(uᵢ₊₁⸝₂⁽ⁿ⁾) ⎱ uᵢ₊₁⸝₂⁽ⁿ⁾ = (uᵢ₋₁⁽ⁿ⁾ + 3uᵢ⁽ⁿ⁾ + 3uᵢ₊₁⁽ⁿ⁾ + uᵢ₊₂⁽ⁿ⁾) / 8
一、先算左右通量、再算平均數。 二、先算左右函數值平均數、再算通量。 三、鄰近四點的函數值加權平均數、再算通量。
numerical flux function:通量函數。通量計算公式改寫成通量函數。輸入是兩個相鄰變數。輸入可以推廣成任意個相鄰變數。
numerical scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) numerical scheme (flux function): uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) define flux fᵢ₊₁⸝₂⁽ⁿ⁾ = f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) flux function f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = ......
nearest 2 points: average of fluxes f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = (f(uᵢ⁽ⁿ⁾) + f(uᵢ₊₁⁽ⁿ⁾)) / 2 nearest 2 points: flux of average of quantities f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = f((uᵢ⁽ⁿ⁾ + uᵢ₊₁⁽ⁿ⁾) / 2) nearest 4 points: flux of weighted average of quantities f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾, uᵢ₊₂⁽ⁿ⁾) = f((uᵢ₋₁⁽ⁿ⁾ + 3uᵢ⁽ⁿ⁾ + 3uᵢ₊₁⁽ⁿ⁾ + uᵢ₊₂⁽ⁿ⁾) / 8)
consistency of numerical flux:自訂通量必須滿足一致性。
consistency: f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = f(uᵢ₊₁⸝₂⁽ⁿ⁾) when Δx→0 consistency: f̌(uᵢ₊₁⸝₂⁽ⁿ⁾, uᵢ₊₁⸝₂⁽ⁿ⁾) = f(uᵢ₊₁⸝₂⁽ⁿ⁾) consistency: f̌(u*, u*) = f(u*) where u* is any constant
有限體積法的精髓在於自訂通量。
大家也針對特定的微分方程式,發明特定的通量。例如Euler's equations of gas dynamics的kinetic energy守恆、Gibbs entropy守恆。若有興趣請自行深究。
stable and non-dissipative kinetic-energy and entropy preserving scheme (KEEP)
https://www.iccfd.org/iccfd11/assets/pdf/papers/ICCFD11_Paper-0401.pdf https://arxiv.org/pdf/2205.05217
finite volume method
換個角度觀察有限體積法。
conservation form:守恆型。守恆律寫成標準式。照理應該稱作「differential form微分型」,不過該詞彙已經用於其他用途。
conservation form: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx
integral form:積分型。守恆律寫成積分方程式。
double integral: ⌠ ⌠ ⎛ d d ⎞ ⎮ ⎮ ⎜ —— u(t,x) + —— f(u(t,x)) ⎟ dt dx = 0 ⌡ ⌡ ⎝ dt dx ⎠ ⌠ ⌠ ⎛ d ⎞ ⌠ ⌠ ⎛ d ⎞ ⎮ ⎮ ⎜ —— u(t,x) ⎟ dt dx + ⎮ ⎮ ⎜ —— f(u(t,x)) ⎟ dt dx = 0 ⌡ ⌡ ⎝ dt ⎠ ⌡ ⌡ ⎝ dx ⎠ integral form: ⌠ ⌠ ⎮ u(t,x) dx + ⎮ f(u(t,x)) dt = 0 ⌡ ⌡
semi-discretization:半離散化。只有空間變數離散化。
微分型,對空間定積分。定積分範圍,以xᵢ為中心,左至xi-1/2,右至xi+1/2,形成體積。定積分結果,形成總量和通量。
守恆律被改寫成:先後總量差異=相鄰通量差異。
double definite integral: (respect to x from xᵢ₋₁⸝₂ to xᵢ₊₁⸝₂) (respect to t from tₙ to tₙ₊₁) ⌠xᵢ₊₁⸝₂ ⎛ ⎮tₙ₊₁ ⎞ ⌠tₙ₊₁ ⎛ ⎮xᵢ₊₁⸝₂ ⎞ ⎮ ⎜ u(t,x)⎮ ⎟ dx + ⎮ ⎜ f(u(t,x))⎮ ⎟ dt = 0 ⌡xᵢ₋₁⸝₂ ⎝ ⎮tₙ ⎠ ⌡tₙ ⎝ ⎮xᵢ₋₁⸝₂ ⎠ definite integral of x: (respect to x from xᵢ₋₁⸝₂ to xᵢ₊₁⸝₂) d ⎛ ⌠xᵢ₊₁⸝₂ ⎞ ⎛ ⎮xᵢ₊₁⸝₂ ⎞ —— ⎜ ⎮ u(t,x) dx ⎟ + ⎜ f(u(t,x))⎮ ⎜ = 0 dt ⎝ ⌡xᵢ₋₁⸝₂ ⎠ ⎝ ⎮xᵢ₋₁⸝₂ ⎠ d ⎛ ⌠xᵢ₊₁⸝₂ ⎞ —— ⎜ ⎮ u(t,x) dx ⎟ + f(u(t,xᵢ₊₁⸝₂)) - f(u(t,xᵢ₋₁⸝₂)) = 0 dt ⎝ ⌡xᵢ₋₁⸝₂ ⎠ semi-discretization: d —— Uᵢ = fᵢ₋₁⸝₂ - fᵢ₊₁⸝₂ dt ^^^^^ ^^^^^^ ^^^^^^ change of come from leave for this cell left cell right cell ⌠xᵢ₊₁⸝₂ where volume-integrated quantity Uᵢ = ⎮ u(t,x) dx ⌡xᵢ₋₁⸝₂ flux fᵢ₊₁⸝₂ = f(u(t,xᵢ₊₁⸝₂))
full-discretization:全離散化。時間變數和空間變數都離散化。
守恆律被改寫成:新總量=原總量+左方流入-右方流出。
double definite integral: (respect to x from xᵢ₋₁⸝₂ to xᵢ₊₁⸝₂) (respect to t from tₙ to tₙ₊₁) ⌠xᵢ₊₁⸝₂ ⎛ ⎮tₙ₊₁ ⎞ ⌠tₙ₊₁ ⎛ ⎮xᵢ₊₁⸝₂ ⎞ ⎮ ⎜ u(t,x)⎮ ⎟ dx + ⎮ ⎜ f(u(t,x))⎮ ⎟ dt = 0 ⌡xᵢ₋₁⸝₂ ⎝ ⎮tₙ ⎠ ⌡tₙ ⎝ ⎮xᵢ₋₁⸝₂ ⎠ double definite integral: ⌠xᵢ₊₁⸝₂ ⌠xᵢ₊₁⸝₂ ⎮ u(tₙ₊₁,x) dx - ⎮ u(tₙ,x) dx ⌡xᵢ₋₁⸝₂ ⌡xᵢ₋₁⸝₂ ⌠tₙ₊₁ ⌠tₙ₊₁ + ⎮ f(u(t,xᵢ₊₁⸝₂)) dt - ⎮ f(u(t,xᵢ₋₁⸝₂)) dt = 0 ⌡tₙ ⌡tₙ double definite integral: ⌠xᵢ₊₁⸝₂ ⌠xᵢ₊₁⸝₂ ⎮ u(tₙ₊₁,x) dx = ⎮ u(tₙ,x) dx keep in ⌡xᵢ₋₁⸝₂ ⌡xᵢ₋₁⸝₂ this cell new amount ⌠tₙ₊₁ + ⎮ f(u(t,xᵢ₋₁⸝₂)) dt come from ⌡tₙ left cell ⌠tₙ₊₁ - ⎮ f(u(t,xᵢ₊₁⸝₂)) dt leave for ⌡tₙ right cell full-discretization: Uᵢ⁽ⁿ⁺¹⁾ = Uᵢ⁽ⁿ⁾ ⌠tₙ₊₁ + ⎮ f(u(t,xᵢ₋₁⸝₂)) dt ⌡tₙ ⌠tₙ₊₁ - ⎮ f(u(t,xᵢ₊₁⸝₂)) dt ⌡tₙ
finite volume method:有限體積法。全離散化做積分近似。
因為f(u(t,x))的定積分不好計算,所以u(t,x)的定積分作為近似結果,仔細來說是u(t,x)的時間平均數。又因為時間平均數不好計算,所以單點函數值作為近似結果。
approximation of time integral of flux: ⌠tₙ₊₁ ⌠tₙ₊₁ ⎛ d ⌠tₙ₊₁ ⎞ ⎮ f(u(t,x)) dt ≈ ⎮ f⎜ —— ⎮ u(t,x) dt ⎟ dt ⌡tₙ ⌡tₙ ⎝ dt ⌡tₙ ⎠ ^^^^^^^^^^^^^^^^^^ time-average of u(t,x) ⌠tₙ₊₁ ≈ ⎮ f(u(tₙ,x)) dt ⌡tₙ ^^^^^^^ function value at point tₙ tₙ₊₁⸝₂ is better but implicit = f(u(tₙ,x)) (tₙ₊₁ - tₙ) = f(u(tₙ,x)) Δt finite volume method: Uᵢ⁽ⁿ⁺¹⁾ = Uᵢ⁽ⁿ⁾ + f(u(tₙ,xᵢ₋₁⸝₂)) Δt - f(u(tₙ,xᵢ₊₁⸝₂)) Δt
一、u(t,x)取單點函數值(位於時刻tₙ),當作是時間平均數。 二、f(u(t,x))取單點函數值(位於u(t,x)時間平均數),當作是時間平均數。
全離散化、有限體積法,改寫成遞迴公式,進行比較。
full-discretization: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) 1 ⌠xᵢ₊₁⸝₂ where volume-averaged quantity uᵢ⁽ⁿ⁾ = —— ⎮ u(tₙ,x) dx Δx ⌡xᵢ₋₁⸝₂ 1 ⌠tₙ₊₁ flux fᵢ₊₁⸝₂⁽ⁿ⁾ = —— ⎮ f(u(t,xᵢ₊₁⸝₂)) dt Δt ⌡tₙ CFL number without speed λ = Δt / Δx
finite volume method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) 1 ⌠xᵢ₊₁⸝₂ where volume-averaged quantity uᵢ⁽ⁿ⁾ = —— ⎮ u(tₙ,x) dx Δx ⌡xᵢ₋₁⸝₂ flux fᵢ₊₁⸝₂⁽ⁿ⁾ = f(uᵢ₊₁⸝₂⁽ⁿ⁾) = f(u(tₙ,xᵢ₊₁⸝₂)) CFL number without speed λ = Δt / Δx
全離散化、有限體積法,改寫成通量函數,進行比較。
full-discretization: fᵢ₊₁⸝₂⁽ⁿ⁾ = true_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) 1 ⌠tₙ₊₁ = —— ⎮ f(u(t,xᵢ₊₁⸝₂)) dt Δt ⌡tₙ 1 ⌠tₙ₊₁ = —— ⎮ f(uᵢ₊₁⸝₂⁽ⁿ⁾) dt Δt ⌡tₙ
finite volume method: fᵢ₊₁⸝₂⁽ⁿ⁾ = approximate_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = f(u(tₙ,xᵢ₊₁⸝₂)) = f(uᵢ₊₁⸝₂⁽ⁿ⁾)
numerical flux:有限體積法的計算過程,只知道位於體積的uᵢ⁽ⁿ⁾和uᵢ₊₁⁽ⁿ⁾,不知道位於介面的ui+1/2⁽ⁿ⁾乃至f(ui+1/2⁽ⁿ⁾)。必須再度近似。衍生各種通量計算公式。
numerical flux: fᵢ₊₁⸝₂⁽ⁿ⁾ = your_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾)
numerical property
守恆律符號解/數值解的常見細類:
(1) analytic solution 解析解。解是連續平滑函數。 不包含衝擊波、稀疏波、不連續函數。 (2) weak solution 弱解。解可以是不連續函數。 針對守恆律,弱解恰是滿足物理量總和守恆的解。 針對守恆律,弱解恰是滿足Rankine–Hugoniot jump condition的解。 包含衝擊波、稀疏波、不連續函數、解析解。 (3) entropy solution (admissible weak solution) 熵解。一種特殊的弱解。 針對守恆律,熵解恰是滿足收縮穩定性的弱解。 針對守恆律,熵解恰是滿足Oleĭnik entropy condition的弱解。 包含熵滿足衝擊波、熵滿足稀疏波。 (X) entropy measure-valued solution 抱歉我學不會。我選擇放棄。 (4) well-balanced solution 良平衡解。解是非負函數,而且均勻收斂至穩態。 抱歉我還沒有學會。有空再來整理。
上述數值解所對應的數值方案類型:
(1) consistent scheme 一致方案。得到解析解。 (2) consistent conservative scheme 一致守恆方案。承上,又滿足守恆性。得到弱解。 (詞性不正確。有人添加and。也有人添加,。) (3) entropy-satisfying scheme 熵滿足方案。承上,又滿足離散熵不等式。得到熵解。 (4) well-balanced scheme 良平衡方案。承上,又滿足保正、穩態收斂性。 (詞義不到位。平衡一般是別的意思,而不是穩態。)
weak solution
專著《Computational Aerodynamics》。
本節討論得到弱解的條件。
符號解:物理量總和守恆,得到弱解。 數值解:一致守恆方案、收縮穩定性,得到弱解。
weak formulation:函數方程式L(t,x) = 0重新包裝得到新式。窮舉每一個平滑函數ϕ(t,x),新式一律出現的解,定義為原式的弱解。
strong formulation: L(t,x) = 0 weak formulation: ⎧ ⌠+∞ ⌠+∞ │ ⎫ ⎨ ⎮ ⎮ L(t,x) ϕ(t,x) dt dx = 0 │ ϕ(t,x) is smooth ⎬ ⎩ ⌡-∞ ⌡-∞ │ ⎭
守恆律重新包裝得到新式。展開、Fubini定理、提項,重新整理新式。窮舉每一個平滑函數ϕ(t,x),新式一律出現的解,定義為守恆律的弱解。通常有無限多種弱解。
conservation law: d d —— f(t,x) + —— f(t,x) = 0 dt dx weak formulation (skip set notation): ⌠+∞ ⌠+∞ ⎛ d d ⎞ ⎮ ⎮ ⎜ —— f(t,x) + —— f(t,x) ⎟ ϕ(t,x) dt dx = 0 ⌡-∞ ⌡-∞ ⎝ dt dx ⎠ ⌠+∞ ⌠+∞ df(t,x) ⌠+∞ ⌠+∞ df(t,x) ⎮ ⎮ ——————— ϕ(t,x) dt dx + ⎮ ⎮ ——————— ϕ(t,x) dt dx = 0 ⌡-∞ ⌡-∞ dt ⌡-∞ ⌡-∞ dx ⌠+∞ ⌠+∞ dϕ(t,x) ⌠+∞ ⌠+∞ dϕ(t,x) ⎮ ⎮ f(t,x) ——————— dt dx + ⎮ ⎮ f(t,x) ——————— dt dx = 0 ⌡-∞ ⌡-∞ dt ⌡-∞ ⌡-∞ dx ⌠+∞ ⌠+∞ ⎛ d d ⎞ ⎮ ⎮ ⎜ f(t,x) —— ϕ(t,x) + f(t,x) —— ϕ(t,x) ⎟ dt dx = 0 ⌡-∞ ⌡-∞ ⎝ dt dx ⎠
守恆律給定初始條件,重新包裝得到新式。窮舉每一個平滑函數ϕ(t,x),新式一律出現的解,定義為守恆律給定初始條件的弱解。通常有無限多種弱解。
conservation law with initial condition: ⎧ d d ⎪ —— f(t,x) + —— f(t,x) = 0 where t ≥ 0 ⎨ dt dx ⎪ ⎩ f(0,x) = f₀(x) weak formulation (skip set notation): ⌠+∞ ⌠+∞ ⎛ d d ⎞ ⎮ ⎮ ⎜ f(t,x) —— ϕ(t,x) + f(t,x) —— ϕ(t,x) ⎟ dt dx ⌡0 ⌡-∞ ⎝ dt dx ⎠ ⌠+∞ + ⎮ f₀(x) ϕ(0,x) dx = 0 ⌡-∞
守恆律重新包裝得到新式,新式等價於先前提到的Rankine–Hugoniot jump condition。即是物理量總和守恆。證明省略。
weak solution: weak formulation of conservation law <=> Rankine–Hugoniot jump condition
Rankine–Hugoniot jump condition: f(uʀ) - f(uʟ) ————————————— = s for all t uʀ - uʟ
https://math.stackexchange.com/questions/340783/
Lax–Wendroff consistency theorem
Lax–Wendroff consistency theorem:一致守恆方案,當取樣間距Δt與Δx趨近零,則數值解趨近弱解。
證明手法是先前章節提到的包裝。守恆律(微分方程式)經過包裝得到新式,一致守恆方案(遞迴公式)經過包裝得到新式,兩道新式趨近相等,導致兩道新式的解也趨近相等。
另外,此定理有個前提:必須有唯一解。換句話說:符號解/數值解必須滿足唯一性。如此一來,兩道新式的解才是同一個解。
針對守恆律,一種初始條件,得到無限多種弱解、唯一一種熵解。此定理不適用於守恆律的弱解,只適用於守恆律的熵解。
conservation law: ⎧ d d ⎪ —— u(t,x) + —— f(u(t,x)) = 0 where t ≥ 0 ⎨ dt dx ⎪ ⎩ u(0,x) = u₀(x) weak formulation (skip set notation): ⌠+∞ ⌠+∞ ⎛ d d ⎞ ⎮ ⎮ ⎜ u(t,x) —— ϕ(t,x) + f(u(t,x)) —— ϕ(t,x) ⎟ dt dx ⌡0 ⌡-∞ ⎝ dt dx ⎠ ⌠+∞ + ⎮ u₀(x) ϕ(0,x) dx ⌡-∞ = 0 (denoted by L(u(t,x)) = 0) consistent conservative scheme: ⎧ Δt ⎪ uᵢ⁽ⁿ⁺¹⁾ - uᵢ⁽ⁿ⁾ + —— (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) = 0 ⎪ Δx ⎨ ⎪ fᵢ₊₁⸝₂⁽ⁿ⁾ = f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎪ ⎩ fᵢ₋₁⸝₂⁽ⁿ⁾ = f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾) where f̌(u*,u*) = f(u*) for all u* weak formulation (skip set notation): +∞ ⌠+∞ ϕ(t+Δt,x) - ϕ(t,x) ∑ ⎮ u(t,x) —————————————————— dx Δt 0 ⌡-∞ Δt ⌠+∞ + ⎮ u₀(x) ϕ(0,x) dx ⌡-∞ +∞ ⌠+∞ ϕ(t,x+½Δx) - ϕ(t,x-½Δx) + ∑ ⎮ f̌(u(t,x-½Δx), u(t,x+½Δx)) ——————————————————————— dx Δt 0 ⌡-∞ Δx = 0 (assume ϕ(t,x)→0 when x→±∞) (denoted by L̃(u(t,x)) = 0) Lax–Wendroff consistency theorem: L(u(t,x)) - L̃(u(t,x)) → 0 when Δt→0, Δx→0
https://books.google.com.tw/books?id=xJutzgEACAAJ&pg=PA130
entropy solution
講義《GIAN Course on Computational Solution of Hyperbolic PDE》。
本節討論得到熵解的條件。
符號解:熵不等式(其自帶物理量總和守恆、L¹收縮穩定性),得到熵解。 數值解:一致守恆方案、離散熵不等式、遞減(CFL條件),收斂至熵解。
entropy pair:熵對。原守恆律乘上一個嚴格遞增函數η′(u),改寫成新守恆律,形成新變換η(u)和q(u)。
窮舉每一對η(u)和q(u),新守恆律一律出現的解析解,就是原守恆律的解析解。但是新守恆律一律出現的弱解,通常不是原守恆律的弱解。兩邊的Rankine–Hugoniot jump condition亦不相同。
entropy pair (η(u),q(u)): (1) η(u): η″(u) > 0 (η′(u) is strictly increasing) (η(u) is strictly convex) (2) q(u): q′(u) = f′(u) η′(u)
original conservation law: d/dt u + d/dx f(u) = 0 conservation law d/dt u + f′(u) d/dx u = 0 chain rule original weak formulation: ⎧ ⌠+∞ ⌠+∞ ⎛ d d ⎞ │ ⎫ ⎨ ⎮ ⎮ ⎜ u —— ϕ + f(u) —— ϕ ⎟ dt dx = 0 │ ϕ is smooth ⎬ ⎩ ⌡-∞ ⌡-∞ ⎝ dt dx ⎠ │ ⎭
new conservation law: η′(u) d/dt u + η′(u) f′(u) d/dx u = 0 multiply η′(u) η′(u) d/dt u + q′(u) d/dx u = 0 let q′(u) = η′(u) f′(u) d/dt η(u) + d/dx q(u) = 0 chain rule new weak formulation: ⎧ ⌠+∞ ⌠+∞ ⎛ d d ⎞ │ ⎫ ⎨ ⎮ ⎮ ⎜ η(u) —— ϕ + q(u) —— ϕ ⎟ dt dx = 0 │ ϕ is smooth ⎬ ⎩ ⌡-∞ ⌡-∞ ⎝ dt dx ⎠ │ ⎭
entropy inequality:熵不等式。新守恆律改成小於等於,以便得到原守恆律的弱解,稱作熵解。
窮舉每一對非負的η(u)和q(u)、每一個平滑函數ϕ(t,x),熵不等式一律出現的弱解,就是原守恆律的熵解。
entropy inequality: d/dt η(u) + d/dx q(u) ≤ 0 weak formulation: ⎧ ⌠+∞ ⌠+∞ ⎛ d d ⎞ │ ϕ is smooth ⎫ ⎨ ⎮ ⎮ ⎜ η(u) —— ϕ + q(u) —— ϕ ⎟ dt dx ≥ 0 │ and ⎬ ⎩ ⌡-∞ ⌡-∞ ⎝ dt dx ⎠ │ ϕ ≥ 0 ⎭
熵不等式重新包裝得到新式,新式等價於原守恆律的Rankine–Hugoniot jump condition與Oleĭnik entropy condition。證明省略。
entropy solution: weak formulation of entropy inequality <=> Rankine–Hugoniot jump condition & Oleĭnik entropy condition
Rankine–Hugoniot jump condition: f(uʀ) - f(uʟ) ————————————— = s for all t uʀ - uʟ Oleĭnik entropy condition: f(u*) - f(uʟ) f(uʀ) - f(u*) ————————————— ≥ ————————————— for all t u* - uʟ uʀ - u* for all u* that uʟ > u* > uʀ
新式也等價於下述不知名entropy condition。證明省略。
weak formulation of entropy inequality <=> an entropy condition
an entropy condition: q(uʀ) - q(uʟ) s ≥ ————————————— for all t η(uʀ) - η(uʟ)
Kružkov's stability theorem
熵不等式重新包裝得到新式。新式暨特定一種熵對若成立,那麼新式暨任意一種熵對也成立。反方向顯而易見。換句話說,新式暨任意一種熵對,等價於新式。證明省略。
weak formulation of entropy inequality with a single pair <=> weak formulation of entropy inequality with anyone pair
weak formulation of entropy inequality with a single pair <=> weak formulation of entropy inequality
Kružkov's entropy pair:其中一種熵對。
weak formulation of entropy inequality with Kružkov's entropy pair: ⎧ ⌠+∞ ⌠+∞ ⎛ d d ⎞ │ ϕ is smooth ⎫ ⎨ ⎮ ⎮ ⎜ η(u) —— ϕ + q(u) —— ϕ ⎟ dt dx ≥ 0 │ and ⎬ ⎩ ⌡-∞ ⌡-∞ ⎝ dt dx ⎠ │ ϕ ≥ 0 ⎭ where η(u; k) = |u - k| q(u; k) = (f(u) - f(k)) sgn(u - k) [Kružkov 1970]
Kružkov's stability theorem:(兩種初始條件所得到的)兩種熵解,滿足收縮穩定性,但是僅L¹-norm。證明省略。
Kružkov's stability theorem: ‖u(t,·) - v(t,·)‖₁ ≤ ‖u(0,·) - v(0,·)‖₁ when t≥0 for numeric solution: ‖ũ⁽ⁿ⁾ - ṽ⁽ⁿ⁾‖₁ ≤ ‖ũ⁽⁰⁾ - ṽ⁽⁰⁾‖₁ when n≥0
更進一步來說,兩種初始條件恰巧相同,那麼兩種熵解也會相同。換句話說,一種初始條件,得到唯一一種熵解。
uniqueness of entropy solution: ‖u(0,·) - v(0,·)‖₁ = 0 => ‖u(t,·) - v(t,·)‖₁ = 0 when t≥0 u(0,·) = v(0,·) => u(t,·) = v(t,·) when t≥0 for numeric solution: ũ⁽⁰⁾ = ṽ⁽⁰⁾ => ũ⁽ⁿ⁾ = ṽ⁽ⁿ⁾ when n≥0
L¹-norm是絕對值總和。若數值非負,L¹-norm是總和。
當符號解/數值解非負,L¹-norm趨近相等可以視作物理量總和守恆。差強人意。
‖u‖₁ = sumᵢ |uᵢ|
u v | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-----------------> x |-----------------> x symbolic solution 1 symbolic solution 2
如果是更高次方的norm就好了。那樣的話熵解性質更強。
Kružkov's entropy pair得到L¹收縮穩定性。很不幸的,其他熵對不能直接得到Lᵖ收縮穩定性。這是數學界的大難題。
數學界的目前進度是利用relative entropy,得到一種解析解與一種熵解的Lᵖ收縮穩定性。有人以此求得L²收縮穩定性。我的理解可能有誤。請大家自行確認。
relative entropy: η(u|v) entropy inequality: ∂/∂t η(u|v) + ∂/∂x q(u|v) ≤ 0 Lᵖ-entropy pair: η(u) = |u|ᵖ / p and p ≥ 2 2nd-order Taylor approximation η(u) = η(v) + η′(v)(u-v) + 1/2 η″(ξ)(u-v)² 2nd-order relative entropy: η(u|v) := η(u) - η(v) - η′(v)(u-v) η(u|v) = 1/2 η″(ξ)(u-v)² C₁‖u-v‖² ≤ η(u|v) ≤ C₂‖u-v‖² pth-order relative entropy: C₁‖u-v‖ᵖ ≤ η(u|v) ≤ C₂‖u-v‖ᵖ Lᵖ-stability of strong solution ū and weak solution u: ‖u(t,·) - ū(t,·)‖ₚ ≤ ‖u(0,·) - ū(0,·)‖ₚ when t≥0
https://www.researchgate.net/publication/260477204 https://arxiv.org/abs/0911.3940
Crandall–Tartar lemma
守恆時,L¹收縮穩定性=保序。
證明手法:一、f ≤ max(f,g) ⇒ T(f) ≤ T(max(f,g))。二、兩種數值解相減,結果有正有負。拆開正負,分開累計。
if conservative, then order preserving <=> L¹-contractive stability [Crandall–Tartar 1980] [Crandall–Majda 1980, section 3]
https://www.ams.org/journals/proc/1980-078-03/S0002-9939-1980-0553381-X/ https://www.ams.org/journals/mcom/1980-34-149/S0025-5718-1980-0551288-3/ https://math.stackexchange.com/questions/4083618/
discrete entropy inequality
discrete entropy inequality:針對遞迴公式暨數值解,熵不等式其自帶數學性質被破壞,必須補救。
一、利用一致守恆方案,補救物理量總和守恆,補救弱解。 二、利用遞減(CFL條件),補救L¹收縮穩定性。
同時滿足一致守恆方案、離散熵不等式、遞減(CFL條件),得到熵解。
entropy-satisfying scheme: ⎧ consistent conservative scheme ⎨ discrete entropy inequality ⎩ diminishing (CFL condition) [Tadmor 1984]
consistent conservative scheme: ⎧ uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) ⎨ fᵢ₊₁⸝₂⁽ⁿ⁾ = f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎩ fᵢ₋₁⸝₂⁽ⁿ⁾ = f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾) where λ = Δt / Δx u is volume-averaged quantity with conservation f̌ is numerical flux function with consistency consistent conservative scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) volume-averaged quantity uᵢ: 1 ⌠xᵢ₊₁⸝₂ uᵢ⁽ⁿ⁾ = —— ⎮ u(tₙ,x) dx Δx ⌡xᵢ₋₁⸝₂ conservation: sum uᵢ⁽ⁿ⁾ = sum uᵢ⁽ⁿ⁺¹⁾ ⁱ ⁱ flux function f̌: f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) consistency: f̌(u*,u*) = f(u*) for all u*
discrete entropy inequality: ⎧ η(uᵢ⁽ⁿ⁺¹⁾) ≤ η(uᵢ⁽ⁿ⁾) - λ (qᵢ₊₁⸝₂⁽ⁿ⁾ - qᵢ₋₁⸝₂⁽ⁿ⁾) ⎨ qᵢ₊₁⸝₂⁽ⁿ⁾ = q̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎩ qᵢ₋₁⸝₂⁽ⁿ⁾ = q̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾) for all (η,q) where λ = Δt / Δx (η,q) is entropy pair that η″ > 0 and q′ = f′ η′ q̌ is numerical flux function with consistency discrete entropy inequality: η(uᵢ⁽ⁿ⁺¹⁾) ≤ η(uᵢ⁽ⁿ⁾) - λ (q̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - q̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) for all (η,q) that η″ > 0 and q′ = f′ η′
diminishing: ‖uᵢ⁽ⁿ⁺¹⁾‖ ≤ ‖uᵢ⁽ⁿ⁾‖ diminishing (CFL condition): λ ≤ 1
fundamental theorem of numerical analysis:
entropy solution符號解版本
數值分析基本定理,符號解版本:穩定則收斂。
討論存在性、唯一性。證明手法是逐點收斂性、緊緻性。
我沒有學會。此處只是我的粗淺理解。詳情請自行閱讀專著。
《Hyperbolic Conservation Laws in Continuum Physics》
Theorem 6.2.1 初始值L∞受限,則存在唯一熵解。
Theorem 6.2.3 初始值L∞受限且TVloc受限,則存在唯一熵解, 而且熵解各個時刻的TVloc小於等於初始值的TVloc。 (一維純量守恆律TV受限=>L∞受限,所以不必特地寫出L∞。) (當微分方程式不因時刻而變,那麼TVloc隨著時間遞減,形成TVD。) (考慮函數曲線u隨著時間移動。)
Theorem 6.1 守恆律的初始值的L¹和TV受限, 那麼守恆律必有唯一熵解, 而且熵解各個時刻的L∞和TV皆小於等於初始值的L∞和TV。 其中通量是piecewise constant function(f和u輸出浮點數)。 (證明是用緊緻性。熵解於最終時刻收斂至固定函數。)
Chapter 8 守恆律的初始值的L²和L∞受限, 其中f二次微分處處不是零(f是凹函數或凸函數)。 (證明是用Compensated Compactness / Young Measure)
Corollary 5.2 一個函數序列uₙ(t,x),屬於Sobolev space W¹¹: 每個函數,每個時刻,本身、對空間微分、對時間微分,三者的L¹同時受限。 那麼可以找到一個函數子序列: TV受限、L¹受限、L¹平緩、Lᵖloc逐點收斂至特定函數
Theorem 5.6 BV compactness theorem [Helly] A sequence {uₙ}⊂BV(Ω) with uniformly bounded TV and L∞ has a subsequence that converges to u in Lᵖloc.
Arzelà–Ascoli compactness theorem: a sequence {uₙ} 1. uniformly bounded ‖uₙ(x)‖ < M for all n and x 2. uniformly equicontinuous ‖uₙ(x) - uₙ(y)‖ < ε when ‖x - y‖ < δ for all n and x then exist a subsequence of {uₙ} that uniformly converges to u‖uₙ(x) - u(x)‖ → 0 for all x when n→∞
dominated convergence theorem: a sequence {uₙ}⊂L¹(Ω) 1. uniformly bounded by v in L¹ ‖uₙ(x)‖ < v(x) for all n and x where v⊂L¹(Ω) 2. pointwise converges to u in Lᵖ ‖uₙ(x) - u(x)‖ → 0 for all x when n→∞ then sequence {uₙ} converges to u in L¹ ‖uₙ - u‖₁ → 0 when n→∞
uniformly有時候是指整個數列(全部的n),有時候是指穩定性。
數學元件。
Lebesgue space p次方和仍受限的函數 Lᵖ(Ω) = {f:Ω→ℝ | ∫Ω|f(x)|ᵖdx < ∞} norm ‖f‖Lᵖ(Ω) = (∫Ω|f(x)|ᵖdx)¹⸍ᵖ space of locally integrable functions 積分範圍只考慮連通受限區域 Lᵖloc(Ω) = {f∈Lᵖ(K) ∀K⊂⊂Ω} relatively compact (compact and contained by) K⊂⊂Ω Sobolev space 微分1次到微分α次,p次方和仍受限的函數。 Wᵏᵖ(Ω) = {u∈Lᵖ(Ω) | Dαu∈Lᵖ(Ω), ∀|α|≤k} norm ‖u‖Wᵏᵖ(Ω) = (sum|α|≤k ‖Dαu‖Lᵖ(Ω)ᵖ)¹⸍ᵖ space of functions of bounded variation 升降高度總和受限 BV(Ω) = {f∈L¹(Ω) | ‖f‖ᴛᴠ < ∞} total variation ‖f‖ᴛᴠ = sup sum |f(xᵢ) - f(xᵢ₋₁)| x₀<⋯<xₙ 1⋯n
Banach space complete normed space, e.g. Lᵖ(Ω) Fréchet space with semi-norm and metric Hibert space L²(Ω) with inner product ⟨f,g⟩ = ∫Ωf(x)g(x)dx Hölder's inequality ∫Ω|f(x)g(x)|dx ≤ ‖f‖Lᵖ(Ω)‖f‖L𐞥(Ω) where 1/p + 1/q = 1
Lᵖ(Ω) ⊂ L𐞥(Ω) if p > q Lᵖ-stability => L𐞥-stability if p > q https://math.stackexchange.com/questions/18395/ https://math.stackexchange.com/questions/271658/ https://math.stackexchange.com/questions/782558/ https://math.stackexchange.com/questions/1529156/
BV(Ω) ⊂ L¹(Ω) BV(Ω) ⊂ L∞(Ω) (only in 1D) https://math.stackexchange.com/questions/2418741/ https://math.stackexchange.com/questions/1372555/
fundamental theorem of numerical analysis:
entropy solution數值解版本
數值分析基本定理,數值解版本:一致時,穩定即收斂。
根據Lax–Wendroff consistency theorem與Kružkov's stability theorem,建立數值分析基本定理的新版本:守恆律的熵解。
theorem: entropy solution consistency: entropy-satisfying scheme stability: L¹-contractive stability convergence: L¹-convergence [Harten–Hyman–Lax 1976]
守恆律熵解之數值分析基本定理 一致性:熵滿足方案 穩定性:L¹收縮穩定性 收斂性:L¹收斂性
consistent conservative scheme:一、物理量總和守恆。二、自訂通量必須滿足一致性。
consistent conservative scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) where λ = Δt / Δx f̌(u*,u) = f(u*) for all u*
entropy-satisfying scheme:承上,又滿足離散熵不等式。
entropy-satisfying scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) where λ = Δt / Δx f̌(u*,u*) = f(u*) for all u* η(uᵢ⁽ⁿ⁺¹⁾) ≤ η(uᵢ⁽ⁿ⁾) - λ (q̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - q̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) for all (η(u),q(u)) that η″(u) > 0 and q′(u) = f′(u) η′(u) q̌(u*,u*) = q(u*) for all u*
L¹-contractive stability:(兩種初始條件所得到的)兩種數值解每回合L¹距離受限,受限於初始距離。
‖ũ⁽ⁿ⁾ - ṽ⁽ⁿ⁾‖₁ ≤ ‖ũ⁽⁰⁾ - ṽ⁽⁰⁾‖₁ when n≥0
L¹-convergence:(兩種初始條件所得到的)兩種數值解每回合L¹距離趨近零。
‖ũ⁽ⁿ⁾ - ṽ⁽ⁿ⁾‖₁ → 0 when n≥0
注意到,此定理僅適用於一維純量守恆律。此定理無法直接用於多維空間、向量、方程組,無法直接引入散度、旋度、梯散,無法直接指定取樣間距、網格造型、邊界條件。必須另行證明或反駁。
守恆律的數值分析基本定理是數學界的大難題。每種守恆律都必須特地檢查一致性、穩定性、收斂性。
Finite volume methods: foundation and analysis https://ivv5hpp.uni-muenster.de/u/mohlb_01/postscript/finvol_script.pdf Convergence of approximate solutions of conservation laws https://www.igpm.rwth-aachen.de/Download/reports/pdf/IGPM217.pdf Finite volume schemes and Lax–Wendroff consistency https://hal.science/hal-03257774v2/document
躼躼長講了一大堆,上尾仔干焦保證物理量總和守恆。無彩工。
consistent conservative scheme
一致守恆方案,又滿足任意一種收縮穩定性,可以得到其中一個弱解。然並卵。
目前有兩類線性遞迴公式可以得到弱解。
(1) total variation diminishing scheme (TVD scheme) 總變差遞減方案。 數值解每回合總變差變小或不變。 (2) local extremum diminishing scheme (LED scheme) 局部極值遞減方案。 數值解每回合局部極值數值範圍變小或不變。 遞迴公式係數是凸組合。
TVD scheme:教科書習慣介紹TV穩定性。當遞迴公式恰是線性遞迴函數,TV穩定性變成TV遞減。
total variation stability (TV-stability): ‖f⁽ⁿ⁾ - g⁽ⁿ⁾‖ᴛᴠ ≤ ‖f⁽⁰⁾ - g⁽⁰⁾‖ᴛᴠ when n≥0 total variation diminishing (TVD): ‖f⁽ⁿ⁾‖ᴛᴠ ≤ ‖f⁽⁰⁾‖ᴛᴠ when n≥0 where ‖f‖ᴛᴠ = sumᵢ |fᵢ₊₁ - fᵢ|
consistent & conservative & TV-stability => converge to weak solution [Harten 1983] [LeVeque 1992, theorem 15.2]
https://www.researchgate.net/publication/285599438 https://ntrs.nasa.gov/api/citations/19830014814/downloads/19830014814.pdf
LED scheme:調整線性遞迴公式係數,輕鬆製造LED方案。
先前章節提到過LED ⇒ TVD。凡是LED方案都是TVD方案。
綜觀歷史,先有TVD方案,才有LED方案。最初的TVD方案其實是LED方案,只不過當時沒有LED這個詞彙。請正名LED。
弱解不一定是LED,熵解一定是LED。但是LED方案只能得到其中一個弱解,該弱解通常不是熵解。
The set of TVD schemes contains the set of monotone schemes. However, unlike the case of monotone schemes, the fact that a scheme is TVD does not automatically imply that it is consistent with the entropy inequality. [Harten 1984]
https://www.proquest.com/docview/923441644 https://www.proquest.com/docview/923559063
entropy-satisfying scheme
一致守恆方案,滿足離散熵不等式、滿足遞減(CFL條件),可以得到唯一一個熵解。
目前有兩類遞迴公式滿足離散熵不等式。
(1) E scheme (diminishing Godunov scheme) E方案。以下稱作遞減Godunov方案。 調整Godunov flux,導致遞減。 針對線性遞迴公式,至多一階準度。 (2) monotone scheme (order-preserving scheme) 單調方案。以下稱作遞減保序方案。 兩種數值解每回合保持高低關係。 遞迴公式是遞增函數(任一變數皆遞增)。 針對線性遞迴公式,至多一階準度。
E scheme:Godunov's method改成不等式。
小心調整上風通量,導致LED,導致遞減。
E scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) where sgn(uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) (fᵢ₊₁⸝₂⁽ⁿ⁾ - f(u*)) ≤ 0 for all u* ∈ [uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾] E scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) ⎧ fᵢ₊₁⸝₂⁽ⁿ⁾ ≤ min {f(u*) : uᵢ⁽ⁿ⁾ ≤ u* ≤ uᵢ₊₁⁽ⁿ⁾} where ⎨ , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ ⎪ fᵢ₊₁⸝₂⁽ⁿ⁾ ≥ max {f(u*) : uᵢ⁽ⁿ⁾ ≥ u* ≥ uᵢ₊₁⁽ⁿ⁾} ⎩ , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾ E scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) where sgn(uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) (fᵢ₊₁⸝₂⁽ⁿ⁾ - Godunov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾)) ≤ 0 E scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) ⎧ fᵢ₊₁⸝₂⁽ⁿ⁾ ≤ Godunov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) where ⎨ , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ ⎪ fᵢ₊₁⸝₂⁽ⁿ⁾ ≥ Godunov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎩ , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾ [Osher 1984]
https://ntrs.nasa.gov/api/citations/19840010891/downloads/19840010891.pdf https://ocw.mit.edu/courses/16-920j-numerical-methods-for-partial-differential-equations-sma-5212-spring-2003/b83f5998bf019571a250acd9acb7aa46_lec11_notes.pdf
monotone scheme:遞迴公式是遞增函數。
monotone這個詞彙容易造成誤解。單調函數分為遞增函數和遞減函數,然而此處必須是遞增函數。再者,雖然遞迴公式是遞增函數,但是數值解通常不是遞增函數。order preserving這個詞彙比較直觀。遞迴公式是遞增函數,等價於兩種數值解保序。最後,保序輔以遞減(CFL條件),補救L¹收縮穩定性。
monotone scheme: uᵢ⁽ⁿ⁺¹⁾ = Fᵢ(uⱼ₁⁽ⁿ⁾, ... , uⱼₘ⁽ⁿ⁾) where Fᵢ is increasing function: uⱼₖ⁽ⁿ⁾ ≤ vⱼₖ⁽ⁿ⁾ => uᵢ⁽ⁿ⁺¹⁾ ≤ vᵢ⁽ⁿ⁺¹⁾ for all 1 ≤ k ≤ m
order preserving: u⁽ⁿ⁾ ≤ v⁽ⁿ⁾ => u⁽ⁿ⁺¹⁾ ≤ v⁽ⁿ⁺¹⁾
順帶一提,原始論文直接假設遞迴公式滿足穩定性,於是沒有輔以遞減(CFL條件)。
for consistent conservative scheme with stability, monotone scheme => weak formulation of entropy inequality with Kružkov's entropy pair => L¹-contractive stability [Harten–Hyman–Lax 1976]
https://www.researchgate.net/publication/230676056
一般來說,通量函數是兩個變數(遞迴公式右式是三個變數)。此時通量函數取第一個變數是遞增函數、取第二個變數是遞減函數。證明省略。
for consistent conservative scheme, 3-point monotone scheme <=> its flux function f̌(u,v) is non-decreasing in u and non-increasing in v [Harten–Hyman–Lax 1976]
3-point consistent conservative monotone scheme: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f̌(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) - f̌(uᵢ₋₁⁽ⁿ⁾, uᵢ⁽ⁿ⁾)) where ⎰ d/du f̌(u,v) ≥ 0 (f̌(u,v) is non-decreasing in u) ⎱ d/dv f̌(u,v) ≤ 0 (f̌(u,v) is non-increasing in v)
此時,遞減保序方案=遞減Godunov方案。證明省略。
for consistent conservative scheme with CFL condition, 3-point monotone scheme <=> 3-point E scheme (⟹) https://math.tifrbng.res.in/~praveen/slides/gian2017_estable.pdf since f̌(u,v) is non-decreasing in u and non-increasing in v ⎰ f̌(u,v) ≤ f̌(u,w) ≤ f̌(w,w) = f(w) if u ≤ w ≤ v ⎱ f̌(u,v) ≤ f̌(w,v) ≤ f̌(w,w) = f(w) if u ≤ w ≤ v sign(v - u)(f̌(u,v) - f(w)) ≤ 0 for all w ∈ [u,v] (⟹) https://people.math.ethz.ch/~hiptmair/tmp/NUMHYP_07.pdf since f̌(v,w) is non-decreasing in v and non-increasing in w ⎰ f̌(v,w) - f̌(u,u) ≤ 0 if v < u < w ⎱ f̌(v,w) - f̌(u,u) ≥ 0 if w < u < v (⟸) [Abdi–Hansen–Schroll 2020] An adaptive viscosity E-scheme for balance laws http://www.math.ualberta.ca/ijnam/Volume-17-2020/No-3-20/2020-03-08.pdf https://link.springer.com/chapter/10.1007/978-3-319-96415-7_33
稍後介紹的數值方案,其中一些是熵滿足方案。
Lax–Friedrichs method is monotone scheme when CFL ≤ 1. Lax-Wendroff scheme is NOT monotone scheme. [Tadmor 1984] Godunov's method is E scheme when CFL ≤ 1. MUSCL is E scheme when CFL ≤ 1. [Osher 1985]
https://www.math.umd.edu/~tadmor/references/files/Tadmor%20entropy%20stable%20schemes-r%20handbook2016.pdf https://ocw.mit.edu/courses/16-920j-numerical-methods-for-partial-differential-equations-sma-5212-spring-2003/bafff8bb84c0ee8ac362cea89c5fea38_lec12_notes.pdf
Harten's TVD theorem is wrong
順便介紹Harten's TVD theorem。我認為這個定理是錯的。
for consistent conservative scheme with stability, monotone => L¹-contractive stability => total variation diminishing (TVD) => monotonicity preserving ✘ [Harten 1983]
第一步:遞減保序方案,符合離散熵不等式,滿足L¹收縮穩定性。第二步:total variation可以改寫成相鄰差的L¹-norm。同一種數值解,令其相減,令被減數是減數往右移位,湊出相鄰差。第三步:證明不正確。嘗試證明數值解本回合有一段單調函數,下回合仍是單調函數。兩種情況:一、新增局部極值導致TV增加。逆否命題,TV不增加導致不會新增局部極值。導致下回合仍是單調函數,得證。二、新增局部極值導致TV不增加。例如局部增加、全域減少。Harten為了避開第二種情況,刻意避免全域減少,刻意假設那段單調函數兩端點數值是常數,而這件事情不可能發生。他作弊了。
well-balanced scheme
我還沒有學會。請自行閱讀論文。
專論《A fast and stable well-balanced scheme with hydrostatic reconstruction for shallow water flows》。
一些古怪的名詞
E系列、entropy系列。括號附註是原始論文採用名稱。
Oleĭnik entropy condition (E condition) 守恆律的限制條件,得到熵滿足衝擊波。 entropy solution 守恆律的符號解/數值解,恰是熵滿足衝擊波。 entropy pair 守恆律額外乘上遞增函數,形成兩個變換函數,對應到時間變數、空間變數。 entropy inequality 守恆律額外乘上遞增函數,再改成不等式,得到熵滿足衝擊波。 entropy satisfying scheme 守恆律的一類數值方案,得到熵解。 diminishing Godunov scheme (E scheme) 守恆律的一類數值方案,得到熵解。
古人沒有考慮清楚,將進擊的衝擊波比擬為熱動力學的entropy,但是兩者根本無關,成為歷史共業。有些數學家像是Constantine Dafermos、劉太平,採用其他詞彙admissibility,但是並未風行。
numerical method
數值方法(大家只針對spatial discretization):
(1) finite difference method (2) finite volume method (3) Godunov's method (4) Godunov's method with Riemann solver (5) Godunov's method with slope limiter (6) essentially non-oscillatory method (7) discontinuous Galerkin method
此處介紹其中六種數值方法。它們是有限差分法、有限體積法、有限元素法的變種。
有限差分法,只能求得解析解,不能求得弱解。函數不連續處,泰勒級數某些項不存在,截斷誤差不受控制,收斂性不受控制。
有限體積法,可以求得弱解。定積分的平均數,可以處理不連續處。有限體積法的精髓在於操作通量。嘗試各種操作手法,得到各種數值方案。
有限元素法,用來求得近似解。利用形狀函數,進行平滑內插,打磨成理想的波形。另外配合有限體積法,以便處理不連續處。
finite difference method
專著《Computational Gasdynamics》。
此類數值方案可以求得守恆律的解析解。
upwind difference method:根據流向決定差分地點,差分地點總是位於上風處。針對線性遞迴公式,導致正組合,導致保單調。
linear conservation law: d d —— u(t,x) + a —— u(t,x) = 0 dt dx forward-time backward-space method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - C (uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) forward-time forward-space method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) upwind difference method: uᵢ⁽ⁿ⁺¹⁾ = ⎰ uᵢ⁽ⁿ⁾ - C (uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) , if a > 0 ⎱ uᵢ⁽ⁿ⁾ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) , if a < 0 where C = a Δt / Δx is CFL number without absolute value
conservation law: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx upwind difference method: uᵢ⁽ⁿ⁺¹⁾ = ⎰ uᵢ⁽ⁿ⁾ - λ (f(uᵢ⁽ⁿ⁾) - f(uᵢ₋₁⁽ⁿ⁾)) , if f(uᵢ⁽ⁿ⁾) > 0 ⎱ uᵢ⁽ⁿ⁾ - λ (f(uᵢ₊₁⁽ⁿ⁾) - f(uᵢ⁽ⁿ⁾)) , if f(uᵢ⁽ⁿ⁾) < 0 where λ = Δt / Δx is CFL number without speed
finite difference method:守恆律擁有兩個經典的數值方案。Lax–Friedrichs method與Lax–Wendroff method。
微分方程式暨符號解的數學性質、遞迴公式暨數值解的數學性質,兩邊必須一致。守恆律的符號解是LED。LED導致保單調、L∞遞減、TV遞減。上述兩個經典的數值方案,必須追加上風差分法,達成保單調;也必須追加CFL條件,達成遞減。
幸運的是,我們不必有所作為。上述兩個經典的數值方案,恰是上風差分法;為了滿足收縮穩定性,本來就要滿足CFL條件。
linear conservation law: d d —— u(t,x) + a —— u(t,x) = 0 dt dx forward-time central-space method: unstable uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) / 2 Lax–Friedrichs method: 1st-order accuracy uᵢ⁽ⁿ⁺¹⁾ = (uᵢ₊₁⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) / 2 - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) / 2 Lax–Wendroff method: 2nd-order accuracy uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) / 2 + C² (uᵢ₊₁⁽ⁿ⁾ - 2uᵢ⁽ⁿ⁾ + uᵢ₋₁⁽ⁿ⁾) / 2
conservation law: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx forward-time central-space method: unstable uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f(uᵢ₊₁)⁽ⁿ⁾ - f(uᵢ₋₁)⁽ⁿ⁾) / 2 Lax–Friedrichs method: 1st-order accuracy uᵢ⁽ⁿ⁺¹⁾ = (uᵢ₊₁⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) / 2 - λ (f(uᵢ₊₁)⁽ⁿ⁾ - f(uᵢ₋₁)⁽ⁿ⁾) / 2 Lax–Wendroff method: 2nd-order accuracy uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (f(uᵢ₊₁)⁽ⁿ⁾ - f(uᵢ₋₁)⁽ⁿ⁾) / 2 + λ² f′((uᵢ₊₁⁽ⁿ⁾ + uᵢ⁽ⁿ⁾) / 2) (f(uᵢ₊₁⁽ⁿ⁾) - f(uᵢ⁽ⁿ⁾)) / 2 - λ² f′((uᵢ⁽ⁿ⁾ + uᵢ₋₁⁽ⁿ⁾) / 2) (f(uᵢ⁽ⁿ⁾) - f(uᵢ₋₁⁽ⁿ⁾)) / 2
flux splitting (Harten's incremental form):將差分分成兩份。上風差分法可以改寫成此形式。優點是容易觀察係數,導致正組合,導致保單調。缺點是難以觀察穩定性條件。只是順便介紹。
linear conservation law: d d —— u(t,x) + a —— u(t,x) = 0 dt dx upwind difference method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ a⁺ (uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) - λ a⁻ (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) where a⁺ = max(a,0) a⁻ = min(a,0) a⁺ - a⁻ = |a|
conservation law: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx upwind difference method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ sᵢ⁺ (fᵢ⁽ⁿ⁾ - fᵢ₋₁⁽ⁿ⁾) - λ sᵢ⁻ (fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) where fᵢ⁽ⁿ⁾ = f(uᵢ⁽ⁿ⁾) sᵢ⁺ = sgn(max(fᵢ⁽ⁿ⁾,0)) sᵢ⁻ = sgn(min(fᵢ⁽ⁿ⁾,0)) Harten's incremental form [Harten 1983]: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - Gᵢ₋₁⸝₂ (fᵢ⁽ⁿ⁾ - fᵢ₋₁⁽ⁿ⁾) + Hᵢ₊₁⸝₂ (fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) where 0 ≤ Gᵢ₋₁⸝₂ and 0 ≤ Hᵢ₊₁⸝₂ and Gᵢ₋₁⸝₂ + Hᵢ₊₁⸝₂ ≤ 1 forms convex combination flux splitting: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ⁺ + fᵢ⁻)
finite volume method
專著《Numerical Methods for Fluid Dynamics: with Applications to Geophysics》。
此類數值方案可以求得守恆律的其中一個弱解,但是弱解不一定是衝擊波。此類數值方案也可以用來求得守恆律的解析解。有限差分法改寫成有限體積法,保證物理量總和守恆。
finite volume method:upwind difference method不守恆,無法改寫成有限體積法。上述兩個經典的數值方案恰巧守恆,可以改寫成有限體積法。
finite volume method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) forward-time central-space method: unstable fᵢ₊₁⸝₂⁽ⁿ⁾ = (fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾) / 2 Lax–Friedrichs method: 1st-order accuracy fᵢ₊₁⸝₂⁽ⁿ⁾ = (fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾) / 2 - (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) / λ / 2 Lax–Wendroff method: 2nd-order accuracy fᵢ₊₁⸝₂⁽ⁿ⁾ = (fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾) / 2 - (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) / λ / 2 + λ f′((uᵢ₊₁⁽ⁿ⁾ + uᵢ⁽ⁿ⁾) / 2) (fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) / 2
flux limiting:微調通量。權重w稱作flux limiter。注意到,微調通量,導致不滿足一致性。此手法毫無實際用處。
flux limiting: fᵢ₊₁⸝₂ = w fᵢ₊₁⸝₂ᵒʳⁱᵍⁱⁿ
flux averaging (flux-corrected transport):兩種數值方案的通量的加權平均,作為新的數值方案的通量。權重是凸組合,得以滿足一致性。
flux averaging [Zalesak 1979]: fᵢ₊₁⸝₂ = wˡᵒʷ fˡᵒʷ + wʰⁱᵍʰ fʰⁱᵍʰ = lerp(fˡᵒʷ, fʰⁱᵍʰ) where wˡᵒʷ and wʰⁱᵍʰ forms convex combination
flux averaging: fᵢ₊₁⸝₂ = fˡᵒʷ + w (fʰⁱᵍʰ - fˡᵒʷ) = fˡᵒʷ + diff(fʰⁱᵍʰ, fˡᵒʷ) where 0 ≤ w ≤ 1 forms convex combination
教科書的經典範例。然而毫無實際用處。畢竟不守恆。
flux averaging of upwind difference method and Lax–Wendroff method for linear conservation law: ⎧ uᵢ⁽ⁿ⁾ ⎪ - C (uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) ⎪ - w (C(1-C)/2) (uᵢ₊₁⁽ⁿ⁾ - 2uᵢ⁽ⁿ⁾ + uᵢ₋₁⁽ⁿ⁾) ⎪ , if a > 0 uᵢ⁽ⁿ⁺¹⁾ = ⎨ ⎪ uᵢ⁽ⁿ⁾ ⎪ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) ⎪ + w (C(1+C)/2) (uᵢ₊₁⁽ⁿ⁾ - 2uᵢ⁽ⁿ⁾ + uᵢ₋₁⁽ⁿ⁾) ⎩ , if a < 0 upwind difference method (fˡᵒʷ) w = 0 Lax–Wendroff method (fʰⁱᵍʰ) w = 1
Godunov's method
講義《Numerical Methods for Conservation Laws and Related Equation》。
此類數值方案可以求得熵解,但是計算過程需要使用最佳化演算法。僅有理論上的價值,沒有實務上的價值。當倍率a(u)恰是嚴格遞增函數、變換f(u)恰是嚴格凸函數,區間極值簡化為區間端點極值,才有實務上的價值。
upwind flux method:有限差分法之upwind difference method,導致正組合,導致保單調,但是不守恆。有限體積法之upwind flux method,如法炮製,差分地點改成通量地點,以便守恆。
linear conservation law: d d —— u(t,x) + a —— u(t,x) = 0 dt dx upwind flux method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) fᵢ₊₁⸝₂⁽ⁿ⁾ = upwind_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = ⎰ a uᵢ⁽ⁿ⁾ , if a > 0 ⎱ a uᵢ₊₁⁽ⁿ⁾ , if a < 0 CFL condition: |a| λ ≤ 1
conservation law: d d —— u(t,x) + —— f(u(t,x)) = 0 dt dx upwind flux method: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) fᵢ₊₁⸝₂⁽ⁿ⁾ = upwind_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = ⎰ f(uᵢ⁽ⁿ⁾) , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) > 0 ⎱ f(uᵢ₊₁⁽ⁿ⁾) , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) < 0 intermediate state: uᵢ₊₁⸝₂⁽ⁿ⁾ = u(xᵢ + ½Δx)⁽ⁿ⁾ = u((xᵢ + xᵢ₊₁) / 2)⁽ⁿ⁾ an estimation of intermediate state: uᵢ₊₁⸝₂⁽ⁿ⁾ = (uᵢ⁽ⁿ⁾ + uᵢ₊₁⁽ⁿ⁾) / 2 CFL condition: |f′(uᵢ⁽ⁿ⁾)| λ ≤ 1 for all i
https://apps.dtic.mil/sti/tr/pdf/ADA139769.pdf https://dblp.org/pid/151/3708.html
仔細比較。只是順便介紹。
upwind difference method: not conservative uᵢ⁽ⁿ⁺¹⁾ = ⎰ uᵢ⁽ⁿ⁾ - λ (fᵢ⁽ⁿ⁾ - fᵢ₋₁⁽ⁿ⁾) , if fᵢ⁽ⁿ⁾ > 0 ⎱ uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) , if fᵢ⁽ⁿ⁾ < 0 upwind flux method: conservative ⎧ uᵢ⁽ⁿ⁾ - λ (fᵢ⁽ⁿ⁾ - fᵢ₋₁⁽ⁿ⁾) ⎪ , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) > 0 and f′(uᵢ₋₁⸝₂⁽ⁿ⁾) > 0 ⎪ uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⁽ⁿ⁾ - fᵢ₋₁⁽ⁿ⁾) uᵢ⁽ⁿ⁺¹⁾ = ⎨ , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) < 0 and f′(uᵢ₋₁⸝₂⁽ⁿ⁾) > 0 ⎪ uᵢ⁽ⁿ⁾ - λ (fᵢ⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) ⎪ , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) > 0 and f′(uᵢ₋₁⸝₂⁽ⁿ⁾) < 0 ⎪ uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⁽ⁿ⁾ - fᵢ⁽ⁿ⁾) ⎩ , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) < 0 and f′(uᵢ₋₁⸝₂⁽ⁿ⁾) < 0 where fᵢ⁽ⁿ⁾ = f(uᵢ⁽ⁿ⁾)
Godunov's method:兩兩相鄰格子皆視作Riemann problem。
可以視作upwind flux method的改良版本。
一、差分地點改成通量地點。以便守恆。
二、單點函數值改成區間極值。形成Riemann problem的正解。
順帶一提,當倍率a(u)是常數函數,Godunov's method退化成upwind flux method。證明在此。
Godunov's method [Osher 1983]: fᵢ₊₁⸝₂⁽ⁿ⁾ = Godunov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎧ min {f(u*) : uᵢ⁽ⁿ⁾ ≤ u* ≤ uᵢ₊₁⁽ⁿ⁾} = ⎨ , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ ⎪ max {f(u*) : uᵢ⁽ⁿ⁾ ≥ u* ≥ uᵢ₊₁⁽ⁿ⁾} ⎩ , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾ CFL condition: max {|f′(u*)| : uᵢ⁽ⁿ⁾ ≥ u* ≥ uᵢ₊₁⁽ⁿ⁾} λ ≤ 1 for all i
Engquist–Osher method: fᵢ₊₁⸝₂⁽ⁿ⁾ = Engquist_Osher_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) f(uᵢ⁽ⁿ⁾) + f(uᵢ₊₁⁽ⁿ⁾) 1 ⌠ uᵢ₊₁⁽ⁿ⁾ = ————————————————————— − ——— ⎮ |f′(θ)| dθ 2 2 ⌡ uᵢ⁽ⁿ⁾ = f(max(uᵢ⁽ⁿ⁾, ω)) + f(min(uᵢ₊₁⁽ⁿ⁾, ω)) - f(ω) if f(u) is convex with minimum at ω: Engquist_Osher_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = f⁺(uᵢ⁽ⁿ⁾) + f⁻(uᵢ₊₁⁽ⁿ⁾) where f⁺(u) = f(max(u, ω)) f⁻(u) = f(min(u, ω))
Rusanov's method: derived from Lax–Friedrichs method fᵢ₊₁⸝₂⁽ⁿ⁾ = Rusanov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) f(uᵢ⁽ⁿ⁾) + f(uᵢ₊₁⁽ⁿ⁾) = ————————————————————— 2 uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾ - ——————————————— max {f′(u*) : uᵢ⁽ⁿ⁾ ≤ u* ≤ uᵢ₊₁⁽ⁿ⁾} 2 if f(u) is convex: fᵢ₊₁⸝₂⁽ⁿ⁾ = Rusanov_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) f(uᵢ⁽ⁿ⁾) + f(uᵢ₊₁⁽ⁿ⁾) = ————————————————————— 2 uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾ - ——————————————— max(f′(uᵢ⁽ⁿ⁾), f′(uᵢ₊₁⁽ⁿ⁾)) 2
Roe's method: approximated and simplified Godunov's method fᵢ₊₁⸝₂⁽ⁿ⁾ = Roe_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = ⎰ min(f(uᵢ⁽ⁿ⁾), f(uᵢ₊₁⁽ⁿ⁾)) , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ ⎱ max(f(uᵢ⁽ⁿ⁾), f(uᵢ₊₁⁽ⁿ⁾)) , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾
https://www.researchgate.net/publication/265398564 https://ocw.mit.edu/courses/16-920j-numerical-methods-for-partial-differential-equations-sma-5212-spring-2003/bafff8bb84c0ee8ac362cea89c5fea38_lec12_notes.pdf https://arxiv.org/pdf/2004.02258
Godunov's method with Riemann solver
專著《Riemann Solvers and Numerical Methods for Fluid Dynamics: A Practical Introduction》。
此類數值方案可以求得熵解的近似解。自創數學公式,代替最佳化演算法。數學公式稱作Riemann solver。
以下是一維純量守恆律的Riemann solver。
Harten–Lax–van Leer–Einfeldt solver (HLLE):近似解。保正。 Harten–Lax–van Leer contact solver (HLLC):近似解。改良版本。
Harten–Lax–van Leer–Einfeldt solver (HLLE): fᵢ₊₁⸝₂⁽ⁿ⁾ = HLLE_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎧ f(uʟ) , if sʟ ≥ 0 = ⎨ f(uʀ) , if sʀ ≤ 0 ⎩ (sʀ f(uʟ) - sʟ f(uʀ) + sʟ sʀ (uʀ - uʟ)) / (sʀ - sʟ) , otherwise where uʟ = uᵢ⁽ⁿ⁾ uʀ = uᵢ₊₁⁽ⁿ⁾
Harten–Lax–van Leer contact solver (HLLC): fᵢ₊₁⸝₂⁽ⁿ⁾ = HLLC_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎧ f(uʟ) , if sʟ ≥ 0 = ⎨ f(uʀ) , if sʀ ≤ 0 ⎪ f(uʟ) + sʟ (u* - uʟ) , sʟ ≤ 0 ≤ s* ⎩ f(uʀ) + sʀ (u* - uʀ) , s* ≤ 0 ≤ sʀ intermediate state: (sʀ f(uʀ) - sʟ f(uʟ)) - (f(uʀ) - f(uʟ)) u* = ——————————————————————————————————————— sʀ - sʟ intermediate wave speed: f(uʟ) - f(uʀ) s* = ————————————— Rankine–Hugoniot jump condition uʟ - uʀ an estimation of wave speed: sʟ = min(f′(uʟ), s*) sʀ = max(f′(uʀ), s*)
Riemann solver推廣到二維空間,事情相當複雜。此處省略。
講義《Computational Magnetohydrodynamics》。
講義《Computational Astrophysics》。
大家也針對特定的微分方程式,發明特定的Riemann solver。例如Euler's equations of gas dynamics的Riemann solver。
Roe solver:近似解。需要計算微分矩陣的反矩陣。 Osher solver:近似解。 advection upstream splitting method (AUSM):近似解。
http://www.ae.metu.edu.tr/tuncer/ae546/docs/NumericalMethods/section3_7.html https://princetonuniversity.github.io/Athena-Cversion/AthenaDocsUGRiemann.html http://www.prague-sum.com/download/2012/Toro_2-HLLC-RiemannSolver.pdf https://www.proquest.com/docview/920868503
Godunov's method with slope limiter
講義《Numerische Strömungsmechanik》。
專著《Finite Volume Methods for Hyperbolic Problems》。
此類數值方案可以求得熵解的近似解,但是計算過程需要使用函數積分演算法。僅有理論上的價值,沒有實務上的價值。當函數積分簡單到可以推導出數學公式,才有實務上的價值。
full-discretization:流經介面的水量,就是通量。然而,水面處處高度不等,水體處處速度不等。不易判斷哪些水體流經介面。
finite volume method:一個格子,水量採用物理量平均值,水面形成常數函數。水面處處高度均等,水體處處速度均等。容易判斷哪些水體流經介面。
║▂▂║▃▃║▅▅║▇▇║██║▆▆║▅▅║▄▄║▆▆║ ╚══╩══╩══╩══╩══╩══╩══╩══╩══╝ ║ ▂║▂▃║▃▅║▅▇║▇█║█▆║▆▅║▅▄║▄▆║▆ ╚══╩══╩══╩══╩══╩══╩══╩══╩══╝
一、流經介面的水量。
finite volume method: fᵢ₊₁⸝₂⁽ⁿ⁾ = approximate_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = f(u(tₙ,xᵢ₊₁⸝₂)) = f(uᵢ₊₁⸝₂⁽ⁿ⁾) 1 ⌠tₙ₊₁ = —— ⎮ f(u(t, xᵢ₊₁⸝₂ - fᵢ⁽ⁿ⁾ Δt)) dt Δt ⌡tₙ 1 ⌠tₙ₊₁ and/or —— ⎮ f(u(t, xᵢ₊₁⸝₂ + fᵢ₊₁⁽ⁿ⁾ Δt)) dt Δt ⌡tₙ = fᵢ⁽ⁿ⁾ (uᵢ⁽ⁿ⁾ + ½ (Δx - fᵢ⁽ⁿ⁾ Δt)) and/or fᵢ₊₁⁽ⁿ⁾ (uᵢ₊₁⁽ⁿ⁾ - ½ (Δx + fᵢ₊₁⁽ⁿ⁾ Δt))
二、判斷水體來自左格或右格。
一、介面水面連續:根據介面速度正負號,判斷水體來自左格或右格。 二、介面水面不連續:根據介面兩側速度正負號,判斷水體來自左格或右格。 甲、兩側速度正負號一致:根據速度正負號,判斷水體來自左格或右格。 乙、兩側速度正負號不一致:同時來自兩格、或者沒有通量。
upwind flux method:即是一。不符合有限體積法的作派。
upwind flux method: fᵢ₊₁⸝₂⁽ⁿ⁾ = upwind_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) = ⎰ f(uᵢ⁽ⁿ⁾) , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) > 0 ⎱ f(uᵢ₊₁⁽ⁿ⁾) , if f′(uᵢ₊₁⸝₂⁽ⁿ⁾) < 0 = ⎰ fᵢ⁽ⁿ⁾ , if f′ᵢ₊₁⸝₂⁽ⁿ⁾ > 0 ⎱ fᵢ₊₁⁽ⁿ⁾ , if f′ᵢ₊₁⸝₂⁽ⁿ⁾ < 0
modified upwind flux method:即是二。查無參考文獻。
modified upwind flux method: fᵢ₊₁⸝₂⁽ⁿ⁾ = modified_upwind_flux(uᵢ⁽ⁿ⁾, uᵢ₊₁⁽ⁿ⁾) ⎧ f(uᵢ⁽ⁿ⁾) , if f′(uᵢ⁽ⁿ⁾) > 0 ⎪ and f′(uᵢ₊₁⁽ⁿ⁾) > 0 ⎪ f(uᵢ₊₁⁽ⁿ⁾) , if f′(uᵢ⁽ⁿ⁾) < 0 = ⎨ and f′(uᵢ₊₁⁽ⁿ⁾) < 0 ⎪ f(uᵢ⁽ⁿ⁾) + f(uᵢ₊₁⁽ⁿ⁾) , if f′(uᵢ⁽ⁿ⁾) > 0 ⎪ and f′(uᵢ₊₁⁽ⁿ⁾) < 0 ⎪ 0 , if f′(uᵢ⁽ⁿ⁾) < 0 ⎩ and f′(uᵢ₊₁⁽ⁿ⁾) > 0 ⎧ fᵢ⁽ⁿ⁾ , if f′ᵢ⁽ⁿ⁾ > 0 and f′ᵢ₊₁⁽ⁿ⁾ > 0 = ⎨ fᵢ₊₁⁽ⁿ⁾ , if f′ᵢ⁽ⁿ⁾ < 0 and f′ᵢ₊₁⁽ⁿ⁾ < 0 ⎪ fᵢ⁽ⁿ⁾ + fᵢ₊₁⁽ⁿ⁾ , if f′ᵢ⁽ⁿ⁾ > 0 and f′ᵢ₊₁⁽ⁿ⁾ < 0 ⎩ 0 , if f′ᵢ⁽ⁿ⁾ < 0 and f′ᵢ₊₁⁽ⁿ⁾ > 0 CFL condition: |f′(uᵢ⁽ⁿ⁾)| λ ≤ 1 for all i
semi-Lagrangian method:挪動整塊水體、分配各格水量。等價於上風通量法修正版。
semi-Lagrangian method: (1) advection:每個格子,根據速度挪動水體。 (2) remapping:每個格子,統計獲得多少水量。
advection:各個格子,處處高度均等,處處速度均等。得以一口氣挪動整個水體。根據CFL條件,移動距離不可超過一格。
CFL condition: |f′ᵢ⁽ⁿ⁾| Δt ≤ Δx for all i => |f′ᵢ⁽ⁿ⁾| λ ≤ 1 for all i
remapping:每個格子,統計獲得多少水量。
水體觀點:一、一個格子一口氣挪動整個水體。 二、重新分配各格水量。 通量觀點:一、相鄰格子的通量=左格往右水量-右格往左水量。 二、一個格子的水量=該格水量+右通量-左通量。
van Leer's method:每回合重新設定水面形狀。
van Leer's method [van Leer 1979]: (1) reconstruction:每個格子,重新設定水面形狀。 (2) advection:每個格子,根據速度挪動水體。 (3) remapping:每個格子,統計獲得多少水量。
reconstruction:改變水面形狀,導致改變準度。
改變水面形狀,也改變通量大小。有趣的是,所有文獻不約而同避談一致性。一切攏係米國太空總署NASA欸陰謀啦。
這是有原因的。上述所有數值方案,僅Lax–Friedrichs method可以快速得到熵解。然而,根據數學界的目前進度,根據數值分析基本定理,得到熵解的數值方案僅保證物理量總和守恆,無彩工。事實上Lax–Friedrichs method得到的熵解根本不堪用,無法符合現實世界的衝擊波。大家轉而關注Riemann solver和slope limiter。捨棄一致性,求得近似解,但是堪用。
reconstruction: (1) piecewise constant function 分段常數函數:單一格子的水面形狀是水平線。形成LED。 形成線性遞迴公式。根據Godunov's order barrier theorem,一階準度。 (2) piecewise linear function with slope limiter 分段一次函數:單一格子的水面形狀是斜線。(不是一次內插) 斜率限制器:所有格子的水面形狀以slope limiter將強行調整成LED。 形成非線性遞迴公式。二階準度。 然而捨棄一致性也無所謂準度了。二階準度只是van Leer在那唬爛。
slope limiter:斜率限制器。每個格子,微調水面形狀,確保LED。一、局部極值們,斜率是零。二、單調區間們,斜率取左右斜率較平緩者。一種方式是斜率的「補零中位數minmod()」。
piecewise linear function with slope limiter: u(x)⁽ⁿ⁾ = uᵢ⁽ⁿ⁾ + σᵢ⁽ⁿ⁾ (x - xᵢ) for xᵢ₋₁⸝₂ ≤ x ≤ xᵢ₊₁⸝₂ where σᵢ⁽ⁿ⁾ is slope limiter
Lax–Wendroff method σᵢ = (uᵢ₊₁ - uᵢ₋₁) / (2 Δx) Beam–Warming method σᵢ = (uᵢ - uᵢ₋₁) / Δx Fromm's method σᵢ = (uᵢ₊₁ - uᵢ) / Δx minmod limiter σᵢ = minmod((uᵢ - uᵢ₋₁) / Δx, (uᵢ₊₁ - uᵢ) / Δx) superbee limiter σᵢ = minmod(minmod( (uᵢ₊₁ - uᵢ) / Δx, 2 (uᵢ - uᵢ₋₁) / Δx), minmod(2 (uᵢ₊₁ - uᵢ) / Δx, (uᵢ - uᵢ₋₁) / Δx)) monotonized centeral σᵢ = minmod((uᵢ₊₁ - uᵢ₋₁) / (2 Δx), limiter 2 (uᵢ - uᵢ₋₁) / Δx, 2 (uᵢ₊₁ - uᵢ) / Δx)
補零中位數 median(x,y,0) = minmod(x,y) = ½ (sgn(x) + sgn(y)) min(x,y) 中位數 median(x,y,z) = x + minmod(y-x, z-x)
van Leer's method of linear conservation law: fᵢ₊₁⸝₂⁽ⁿ⁾ = ⎰ a (uᵢ⁽ⁿ⁾ + ½ σᵢ⁽ⁿ⁾ (Δx - a Δt)) , if a > 0 ⎱ a (uᵢ₊₁⁽ⁿ⁾ - ½ σᵢ₊₁⁽ⁿ⁾ (Δx + a Δt)) , if a < 0
flux limiter:通量限制器。van Leer's method可以改寫成有限體積法。advection和remapping可以改寫成通量函數。斜率限制器可以改寫成通量限制器。
數學式子有兩種寫法。早期寫成左右斜率比值,近期寫成左中斜率比值,分別是下面兩篇文章。大部分文獻仍採用早期方式。
專論《High Resolution Schemes Using Flux Limiters for Hyperbolic Conservation Laws》。
專論《Understand Slope Limiter - Graphically》。
conservation form: uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾) flux averaging: fᵢ₊₁⸝₂ = fˡᵒʷ + φ(rᵢ₊₁⸝₂⁽ⁿ⁾) (fʰⁱᵍʰ - fˡᵒʷ) fᵢ₋₁⸝₂ = fˡᵒʷ + φ(rᵢ₋₁⸝₂⁽ⁿ⁾) (fʰⁱᵍʰ - fˡᵒʷ) where φ(r) is flux limiter ratio of two slopes: uᵢ₋₁⁽ⁿ⁾ - uᵢ₋₂⁽ⁿ⁾ rᵢ₋₁⸝₂⁽ⁿ⁾ = ————————————————— uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾ uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾ rᵢ₊₁⸝₂⁽ⁿ⁾ = ——————————————— uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾
寫成左右斜率比值,恰好形成upwind flux method和Lax–Wendroff method的flux averaging。
flux averaging of upwind flux method and Lax–Wendroff method: ⎧ uᵢ⁽ⁿ⁾ - C (uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) - (C(1-C)/2) fᵢ⁽ⁿ⁾ ⎪ , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ uᵢ⁽ⁿ⁺¹⁾ = ⎨ ⎪ uᵢ⁽ⁿ⁾ - C (uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) + (C(1+C)/2) fᵢ⁽ⁿ⁾ ⎩ , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾ fᵢ⁽ⁿ⁾ = φ(rᵢ₊₁⸝₂⁽ⁿ⁾)(uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾) - φ(rᵢ₋₁⸝₂⁽ⁿ⁾)(uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾) ⎧ uᵢ₋₁⁽ⁿ⁾ - uᵢ₋₂⁽ⁿ⁾ ⎪ ————————————————— , if uᵢ⁽ⁿ⁾ < uᵢ₊₁⁽ⁿ⁾ ⎪ uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾ rᵢ₊₁⸝₂⁽ⁿ⁾ = ⎨ ⎪ uᵢ₊₁⁽ⁿ⁾ - uᵢ⁽ⁿ⁾ ⎪ ————————————————— , if uᵢ⁽ⁿ⁾ > uᵢ₊₁⁽ⁿ⁾ ⎩ uᵢ⁽ⁿ⁾ - uᵢ₋₁⁽ⁿ⁾
upwind flux method φ(r) = 0 Lax–Wendroff method φ(r) = 1 Beam–Warming method φ(r) = r Fromm's method φ(r) = (1+r)/2 van Leer φ(r) = (r+|r|)/(1+|r|) minmod limiter φ(r) = minmod(1,r) superbee limiter φ(r) = max(0, min(1,2r), min(2,r)) MC limiter φ(r) = max(0, min((1+r)/2, 2, 2r)
https://www.ita.uni-heidelberg.de/~dullemond/lectures/num_fluid_2011/Chapter_4.pdf https://leifh.folk.ntnu.no/teaching/tkt4140/._main074.html https://amrvac.org/md_doc_limiter.html
通量限制器的函數圖形稱作「Sweby diagram」。
Godunov-type method:闔家團圓。Godunov's method和van Leer's method共同形成大家族。
大家族事先追加一道步驟:重建水面。Godunov's method採用分段常數函數,等同於什麼都不做。van Leer's method採用分段一次函數並確保LED,提升準度卻捨棄一致性。
重建水面,最終只需要介面兩側水面高度,即可計算通量。
Godunov-type method: (1) reconstruction:每個格子,求出水面形狀。 ⎰ uᵢ₋₁⸝₂⁺⁽ⁿ⁾ = uᵢ⁽ⁿ⁾ - σᵢ⁽ⁿ⁾ (½ Δx) ⎱ uᵢ₊₁⸝₂⁻⁽ⁿ⁾ = uᵢ⁽ⁿ⁾ + σᵢ⁽ⁿ⁾ (½ Δx) (2) flux evaluation:兩個相鄰格子,根據介面左右高度,求出介面通量。 fᵢ₊₁⸝₂⁽ⁿ⁾ = your_flux(uᵢ₊₁⸝₂⁺⁽ⁿ⁾, uᵢ₊₁⸝₂⁻⁽ⁿ⁾) (3) update:套用遞迴公式,求出新的水面平均數。 uᵢ⁽ⁿ⁺¹⁾ = uᵢ⁽ⁿ⁾ - λ (fᵢ₊₁⸝₂⁽ⁿ⁾ - fᵢ₋₁⸝₂⁽ⁿ⁾)
Godunov-type method: for each volume: set initial value by initial condition. for (t = beginning_time; t <= ending_time; t += Δt) for each volume: compute quantities at interfaces by piecewise polynomial function. for each interface: compute flux at interface by Riemann solver. for each volume: update the solution by recurrence.
大家族擁有許多稱呼。
Godunov-type method:視作Godunov's method的推廣版本。源自原作者觀點。 MUSCL:此數值方法的開源程式碼專案名稱。源自原作者所在的實驗室。 TVD-MUSCL:用來強調內含slope limiter。 MUSCL–Hancock method:將有限體積法視作predictor–corrector method。 REA method:專著[LeVeque 2002]的原創詞彙。
大家也針對特定的微分方程式,發明特定的數值方案。例如Euler's equations of gas dynamics的Kurganov–Tadmor method。
https://en.wikipedia.org/wiki/MUSCL_scheme https://www.math.umd.edu/~tadmor/pub/central-schemes/Kurganov-Tadmor.JCP-00I.pdf
essentially non-oscillatory method
專著《Computational Gasdynamics》。
essentially non-oscillatory method (ENO method):不再內插水面,直接內插通量,Neville interpolation暨upwind flux method。不再考慮準度,直接考慮TVD收縮速度,突破天際。
essentially non-oscillatory method (ENO method) ‖f⁽ⁿ⁾‖ᴛᴠ ≤ ‖f⁽⁰⁾‖ᴛᴠ + O((Δx)𐞥) 數值解總差值減少量受限 [Harten–Engquist–Osher–Chakravarthy 1987] https://www.researchgate.net/publication/223605523 weighted essentially non-oscillatory method (WENO method) 內插時,使用特殊權重。 https://en.wikipedia.org/wiki/WENO_methods
multi-dimensional optimal order detection (MOOD):我還沒有學會。請自行閱讀論文。
https://hal.science/hal-00566023/file/FVCA6_MOOD_Clain-Diot-Loubere.pdf https://hal.science/hal-00637123/file/moodCaF.pdf https://www.lamfa.u-picardie.fr/desveaux/eMOOD.pdf
discontinuous Galerkin method
專著《Implementing Spectral Methods for Partial Differential Equations》。
專著《Nodal Discontinuous Galerkin Methods: Algorithms, Analysis, and Applications》。
discontinuous Galerkin method:先前小節的數值方案可以改寫成基底內插函數。我還沒有學會。請自行閱讀專著。
Nitsche's method https://relate.cs.illinois.edu/course/cs555-s24/
https://users.oden.utexas.edu/~leszek/classes.html https://users.oden.utexas.edu/~leszek/classes/EM394H/book.pdf
High Order Entropy Stable Discontinuous Galerkin Discretizations https://www.nas.nasa.gov/pubs/ams/2024/08-13-24.html High order positivity-preserving entropy stable discontinuous Galerkin discretizations https://sites.google.com/view/jessechan/talks
一些古怪的名詞
數值方法系列。第二行是作者原創名稱。
Godunov's method with slope limiter reconstruct–evolve–average method (REA method) LeVeque Godunov's method with slope limiter monotonic upstream-centered scheme for conservation laws (MUSCL) van Leer Godunov's method with shape function discontinuous Galerkin method (DG method) Cockburn Godunov's method with higher-order shape function arbitrary high order using derivatives (ADER-DG method) Toro higher-order accuracy numerical scheme high-resolution scheme 大於一階準度的數值方案們。例如MUSCL、DG method。 Harten
differential equation - Hamilton's equation🚧
本文介紹動態系統的其中一種特例:扭對稱動態系統
symplectic transformation
symplectic:扭對稱的。原創詞彙,意譯為結辮,音譯為辛。
https://en.wiktionary.org/wiki/symplectic https://www.zhihu.com/question/517638760
symplectic transformation:扭對稱變換。數對到數對的變換,而且必須是保面積變換。
一維扭對稱變換:輸入輸出都是數對。保面積是指任意兩種輸入的面積等於兩種對應輸出的面積。面積是指平行四邊形有向面積。
symplectic transformation: (p',q') = F(p,q) symplectic transformation is area-preserving: area((0,0),(p₁,q₁),(p₁+p₂,q₁+q₂),(p₂,q₂)) = area((0,0),(p₁',q₁'),(p₁'+p₂',q₁'+q₂'),(p₂',q₂'))
扭對稱變換可以用線性代數或外代數來描述。
簡單起見,本文採用線性代數。數對(p,q)作為向量x。變換函數F(p,q)的微分矩陣的轉置矩陣作為變換矩陣A。面積可以表示成行列式、叉積、雙線性型。
[linear algebra perspective] (1) input x is a vector. output too. x = ⎡ p ⎤ y = ⎡ p' ⎤ ⎣ q ⎦ ⎣ q' ⎦ (2) transformation A is a matrix. A = (∇F)ᵀ y = A x (3) area preservation (a) determinant ⎡ | | ⎤ ⎡ | | ⎤ det⎢ x₁ x₂ ⎥ = det⎢ Ax₁ Ax₂ ⎥ ⎣ | | ⎦ ⎣ | | ⎦ (b) cross product x₁ × x₂ = Ax₁ × Ax₂ (add a padding zero) (c) bilinear form x₁ᵀ J x₂ = (Ax₁)ᵀ J (Ax₂) where J = ⎡ 0 1 ⎤ ⎣ -1 0 ⎦
[exterior algebra perspective] (1) input (p, q) is a 2-form. output too. x = (p, q) y = (p', q') (2) transformation F y = F(x) (3) area preservation (a) wedge product p Λ q = p' Λ q'
高維扭對稱變換:輸入輸出都是多個數對(一個數對視作一個維度)。保面積總和(每個數對的面積的總和)。雙線性型的數學式子最漂亮,不需要明確寫出加總運算。
[linear algebra perspective] (1) input x is a vector. output too. ⎡ pₓ ⎤ ⎢ p ⎥ x = ⎢ p ⎥ (for example, in 3D) ⎢ qₓ ⎥ ⎢ q ⎥ ⎣ q ⎦ (2) transformation A is a matrix A = (∇F)ᵀ y = A x (3) area preservation (a) determinant det⎡ pₓ₁ pₓ₂ ⎤ + ... = det⎡ pₓ'₁ pₓ'₂ ⎤ + ... ⎣ qₓ₁ qₓ₂ ⎦ ⎣ qₓ'₁ qₓ'₂ ⎦ (b) cross product ⎡ pₓ₁ ⎤ ⎡ pₓ₂ ⎤ ⎡ pₓ'₁ ⎤ ⎡ pₓ'₂ ⎤ ⎢ qₓ₁ ⎥ × ⎢ qₓ₂ ⎥ + ... = ⎢ qₓ'₁ ⎥ × ⎢ qₓ'₂ ⎥ + ... ⎣ 0 ⎦ ⎣ 0 ⎦ ⎣ 0 ⎦ ⎣ 0 ⎦ (c) bilinear form x₁ᵀ J x₂ = (Ax₁)ᵀ J (Ax₂) where J = ⎡ 0 I ⎤ ⎣ -I 0 ⎦
J is a 2n×2n skew-symmetric matrix. n is dimension. (a) Jᵀ = -J = J⁻¹ (b) J² = -I (c) det(J) = 1
一維扭對稱變換,保面積即是變換矩陣行列式等於1。
A is symplectic transformation <=> det(A) = 1 (only for 1D)
高維扭對稱變換,保面積總和即是Aᵀ J A = J。證明省略。
A is symplectic transformation <=> Aᵀ J A = J
symplectic dynamical system(Hamilton's equations)
symplectic dynamical system (Hamilton's equations):扭對稱動態系統。微分方程組,兩個未知函數p(t)和q(t),格式如下。
symplectic dynamical system: ⎧ d ∂ ⎪ —— p(t) = - —— H(p(t),q(t)) ⎪ dt ∂q ⎨ ⎪ d ∂ ⎪ —— q(t) = + —— H(p(t),q(t)) ⎩ dt ∂p symplectic dynamical system: ⎰ dp/dt = -∂H(p,q)/∂q skip (t) ⎱ dq/dt = ∂H(p,q)/∂p symplectic dynamical system: ⎰ dp/dt = -∂H/∂q skip (t) and (p,q) ⎱ dq/dt = ∂H/∂p
扭對稱動態系統可以用線性代數或李代數來描述。
[linear algebra perspective] symplectic dynamical system: ⎡ d ⎤ ⎡ ∂ ⎤ ⎢ —— p(t) ⎥ ⎢ —— H(p(t),q(t)) ⎥ ⎢ dt ⎥ ⎢ ∂p ⎥ ⎢ ⎥ = ⎡ 0 -1 ⎤ ⎢ ⎥ ⎢ d ⎥ ⎣ 1 0 ⎦ ⎢ ∂ ⎥ ⎢ —— q(t) ⎥ ⎢ —— H(p(t),q(t)) ⎥ ⎣ dt ⎦ ⎣ ∂q ⎦ symplectic dynamical system: d(p,q)/dt = J⁻¹ ∇H(p,q) symplectic dynamical system: du/dt = J⁻¹ ∇H(u) where J = ⎡ 0 1 ⎤ ⎣ -1 0 ⎦ function of (p,q): F(p,q) derivative of function of (p,q): dF(p,q)/dt = ∂F/∂p dp/dt + ∂F/∂q dq/dt chain rule = ∂F/∂p -∂H/∂q + ∂F/∂q ∂H/∂p substitution = ∇F(p,q)ᵀ J⁻¹ ∇H(p,q) bilinear form where ∇F(p,q) = ⎡ ∂F(p,q)/∂q ⎤ ⎣ ∂F(p,q)/∂p ⎦
[Lie algebra perspective] symplectic dynamical system: d(p,q)/dt = {I,H}(p,q) Poisson bracket where I(p,q) = (p,q) identity function derivative of function of (p,q): dF(p,q)/dt = ∂F/∂p dp/dt + ∂F/∂q dq/dt chain rule = ∂F/∂p -∂H/∂q + ∂F/∂q ∂H/∂p substitution = ∂F/∂q ∂H/∂p - ∂F/∂p ∂H/∂q transposition = {F,H}(p,q) Poisson bracket where {F,G}(p,q) = ∂F/∂q ∂G/∂p - ∂F/∂p ∂G/∂q
Poisson bracket (a special case of Lie bracket): {A,B} I don't know the name: {A,A} = 0 anticommutativity: {A,B} + {B,A} = 0 Jacobi identity: {A,{B,C}} + {B,{C,A}} + {C,{A,B}} = 0 bilinearity: {A+B,C} = {A,C} + {B,C} {A,B+C} = {A,B} + {A,C} Leibniz rule: {AB,C} = {A,C}B + A{B,C} {A,BC} = B{A,C} + {A,B}C vanishing integral: ∬{A,B} = 0 with periodic boundary condition ∬{A,B} = 0 with zero boundary condition at infinity Poisson's theorem: d{A,B}/dt = {dA/dt,B} + {A,dB/dt} when (p,q) belongs symplectic dynamical system. determinant of Jacobian: {A,B} = det(Jacobian(A,B))
此格式導致扭對稱變換。輸入是當前時刻數對(p(t₀),q(t₀)),輸出是下個瞬間數對(p(t₀+dt),q(t₀+dt))。
證明手法是利用Aᵀ J A = J。變換矩陣A是變換函數J⁻¹ ∇H的微分矩陣的轉置矩陣。專著將變換矩陣改成flow,以便應付微分。證明過程請見這本專著:
[Poincaré 1899] transformation matrix (flow): A = (∇(J⁻¹ ∇H))ᵀ = (J⁻¹ (∇∇H))ᵀ = (∇∇H)ᵀ (J⁻¹)ᵀ = Hessian(H) J
Hamiltonian:扭對稱動態系統導致每個時刻的H(p,q)是定值。H(p,q)不隨時間而變。H(p,q)守恆。
扭對稱動態系統的H(p,q),稱作Hamiltonian。Hamilton是人名。字尾-ian意思是「此人的」,可以作為形容詞或名詞。
conservation: H = constant for all t conservation: dH/dt = 0
dH/dt = ∂H/∂p dp/dt + ∂H/∂q dq/dt = -∂q/∂t ∂p/∂t + ∂p/∂t ∂q/∂t = 0
dH(p,q)/dt = dH(p,q)/d(p,q) ∙ d(p,q)/dt chain rule = ∇H(p,q) ∙ (J⁻¹ ∇H(p,q)) substitution = ∇H(p,q)ᵀ J⁻¹ ∇H(p,q) dot product -> transpose = 0
dH(p,q)/dt = {H,H}(p,q) = 0
https://www.unige.ch/~hairer/poly_geoint/week2.pdf https://www.math.umd.edu/~immortal/MATH246/lecturenotes/ch3-7.pdf
first integral:扭對稱動態系統導致每個時刻的某些函數F(p,q)是定值。某些函數F(p,q)不隨時間而變。某些函數F(p,q)守恆。
動態系統的守恆量,稱作「第一積分first integral」。針對扭對稱動態系統,first integral是某些函數F(p,q),有無限多種造型。
dF(p,q)/dt = {F,H}(p,q) = 0
symplectic method
symplectic method:扭對稱法。數值方案是扭對稱變換。輸入是當前時刻數對(p⁽ⁿ⁾,q⁽ⁿ⁾),輸出是下個時刻數對(p⁽ⁿ⁺¹⁾,q⁽ⁿ⁺¹⁾)。
numerical scheme:先前小節的數值方案可以改成扭對稱法。
(1) symplectic Euler method (semi-implicit Euler method) (2) symplectic midpoint method (implicit midpoint method) (3) symplectic leapfrog method (Størmer–Verlet method)
symplectic Euler method:semi-implicit method。第一式顯式法,第二式隱式法。
1. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - Δt ∂H(p⁽ⁿ⁺¹⁾, q⁽ⁿ⁾)/∂q 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt ∂H(p⁽ⁿ⁺¹⁾, q⁽ⁿ⁾)/∂p
未知函數角色互換,數值解略有差異。無傷大雅。
1. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - Δt ∂H(p⁽ⁿ⁾, q⁽ⁿ⁺¹⁾)/∂q 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt ∂H(p⁽ⁿ⁾, q⁽ⁿ⁺¹⁾)/∂p
這倆數值方案都是扭對稱變換。證明Aᵀ J A = J。
1. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - Δt ∂H(p⁽ⁿ⁺¹⁾, q⁽ⁿ⁾)/∂q 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt ∂H(p⁽ⁿ⁺¹⁾, q⁽ⁿ⁾)/∂p
⎡ ∂p⁽ⁿ⁺¹⁾ ∂p⁽ⁿ⁺¹⁾ ⎤ ⎢ ——————— ——————— ⎥ ∂(p⁽ⁿ⁺¹⁾,q⁽ⁿ⁺¹⁾) ⎢ ∂p⁽ⁿ⁾ ∂q⁽ⁿ⁾ ⎥ A = ———————————————— = ⎢ ⎥ ∂(p⁽ⁿ⁾,q⁽ⁿ⁾) ⎢ ∂q⁽ⁿ⁺¹⁾ ∂q⁽ⁿ⁺¹⁾ ⎥ ⎢ ——————— ——————— ⎥ ⎣ ∂p⁽ⁿ⁾ ∂q⁽ⁿ⁾ ⎦ ∂p⁽ⁿ⁺¹⁾ ⎛ ∂²H ∂p⁽ⁿ⁺¹⁾ ∂²H ∂q⁽ⁿ⁾ ⎞ ——————— = 1 - Δt ⎜ ———————————— ——————— + —————————— ————— ⎟ ∂p⁽ⁿ⁾ ⎝ ∂q⁽ⁿ⁾∂p⁽ⁿ⁺¹⁾ ∂p⁽ⁿ⁾ ∂q⁽ⁿ⁾∂q⁽ⁿ⁾ ∂p⁽ⁿ⁾ ⎠ ∂p⁽ⁿ⁺¹⁾ ∂p⁽ⁿ⁾ ⎛ ∂²H ∂p⁽ⁿ⁺¹⁾ ∂²H ∂q⁽ⁿ⁾ ⎞ ——————— = ————— - Δt ⎜ ———————————— ——————— + —————————— ————— ⎟ ∂q⁽ⁿ⁾ ∂q⁽ⁿ⁾ ⎝ ∂q⁽ⁿ⁾∂p⁽ⁿ⁺¹⁾ ∂q⁽ⁿ⁾ ∂q⁽ⁿ⁾∂q⁽ⁿ⁾ ∂q⁽ⁿ⁾ ⎠ ∂q⁽ⁿ⁺¹⁾ ∂q⁽ⁿ⁾ ⎛ ∂²H ∂p⁽ⁿ⁺¹⁾ ∂²H ∂q⁽ⁿ⁾ ⎞ ——————— = ————— + Δt ⎜ —————————————— ——————— + ———————————— ————— ⎟ ∂p⁽ⁿ⁾ ∂p⁽ⁿ⁾ ⎝ ∂p⁽ⁿ⁺¹⁾∂p⁽ⁿ⁺¹⁾ ∂p⁽ⁿ⁾ ∂p⁽ⁿ⁺¹⁾∂q⁽ⁿ⁾ ∂p⁽ⁿ⁾ ⎠ ∂q⁽ⁿ⁺¹⁾ ⎛ ∂²H ∂p⁽ⁿ⁺¹⁾ ∂²H ∂q⁽ⁿ⁾ ⎞ ——————— = 1 + Δt ⎜ —————————————— ——————— + ———————————— ————— ⎟ ∂q⁽ⁿ⁾ ⎝ ∂p⁽ⁿ⁺¹⁾∂p⁽ⁿ⁺¹⁾ ∂q⁽ⁿ⁾ ∂p⁽ⁿ⁺¹⁾∂q⁽ⁿ⁾ ∂q⁽ⁿ⁾ ⎠ 然後你算一下Aᵀ J A = J。應該會相等。我沒有算過。
symplectic midpoint method:trapezoidal method。注意到,這跟先前章節的midpoint method沒有關聯。
1. u⁽ⁿ⁺¹⁾ = u⁽ⁿ⁾ - Δt J⁻¹ ∇H(u⁽ⁿ⁺¹⸍²⁾) where u⁽ⁿ⁺¹⸍²⁾ = ½ (u⁽ⁿ⁾ + u⁽ⁿ⁺¹⁾)
symplectic leapfrog method:Strang splitting、semi-implicit method、trapezoidal method大家一起上。注意到,這跟先前章節的leapfrog method沒有關聯。
1. p⁽ⁿ⁺¹⸍²⁾ = p⁽ⁿ⁾ - ½ Δt ∂H(p⁽ⁿ⁺¹⸍²⁾, q⁽ⁿ⁾)/∂q 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt (∂H(p⁽ⁿ⁺¹⸍²⁾, q⁽ⁿ⁾)/∂p + ∂H(p⁽ⁿ⁺¹⸍²⁾, q⁽ⁿ⁺¹⁾)/∂p) 3. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁺¹⸍²⁾ - ½ Δt ∂H(p⁽ⁿ⁺¹⸍²⁾, q⁽ⁿ⁺¹⁾)/∂q
未知函數角色互換,數值解略有差異。無傷大雅。步驟一三變化大(走兩步),步驟二變化小(平滑化)。要求變化小的那一個未知函數,適合放在步驟二。【尚待確認】
(1) pqp method (kick-drift-kick) (2) qpq method (drift-kick-drift)
numerical property:符號解/數值解具備四個數學性質。
(1) area preservation:面積保留性。保面積總和。 (2) time reversibility:時間可逆性。變換矩陣共軛轉置,可以回到上個時刻。 (3) bounded conservation:受限守恆性。H(p,q)受限。 (4) periodic oscillation:週期振盪性。p振盪,q振盪,各自誤差也振盪。
area preservation:面積保留性。每個時刻,面積總和保持相同。一維是det(A) = 1,高維是u₁ᵀJu₂ = (Au₁)ᵀJ(Au₂)。
time reversibility:時間可逆性。變換矩陣共軛轉置,可以回到上個時刻,宛如反轉時間軸。扭對稱動態系統以及上述數值方案皆有時間可逆性,除了symplectic Euler method。
bounded conservation:受限守恆性。符號解H(p,q)守恆。數值解H(p,q)受限守恆。並非完全守恆,但是至少受限。詳細來說,截斷誤差受限,導致p和q受限,再導致H(p,q)受限,並且可以手工推導準度數量級。
periodic oscillation:週期振盪性。扭對稱動態系統的解通常是振盪函數,導致誤差隨之振盪。詳細來說,符號解的p和q各自振盪,數值解的p和q各自振盪,導致p誤差和q誤差隨之振盪。
symplectic dynamical system in mechanics
針對力學,扭對稱法有兩個變種。
(1) Hamilton's equations with separable Hamiltonian (2) Liouville's equation
針對力學,扭對稱動態系統有兩個等價形式。
(3) Euler–Lagrange equation (4) Hamilton–Jacobi equation
Hamilton's equations with separable Hamiltonian
separable Hamiltonian:H(p,q)可以加法分離!
Hamilton's equations: ⎰ dp/dt = -∂H/∂q ⎱ dq/dt = ∂H/∂p separable Hamiltonian: H(p,q) = T(p) + V(q)
H(p,q)微分可以簡化。
∂H/∂q = dV/dq ∂H/∂p = dT/dp
微分方程組可以簡化。
Hamilton's equations with separable Hamiltonian: ⎰ dp/dt = -∂V/∂q ⎱ dq/dt = ∂T/∂p
數值方案可以簡化。
symplectic Euler method: 1. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - Δt dV( q⁽ⁿ⁾)/dq 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt dT(p⁽ⁿ⁺¹⁾ )/dp symplectic Euler method: 1. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - Δt dV( q⁽ⁿ⁺¹⁾)/dq 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt dT(p⁽ⁿ⁾ )/dp
symplectic leapfrog method: 1. p⁽ⁿ⁺¹⸍²⁾ = p⁽ⁿ⁾ - ½ Δt dV(q⁽ⁿ⁾ )/dq 2. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt dT(p⁽ⁿ⁺¹⸍²⁾)/dp 3. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁺¹⸍²⁾ - ½ Δt dV(q⁽ⁿ⁺¹⁾ )/dq
甚至合併成兩個步驟。步驟一,分別代入二和三。
1. q⁽ⁿ⁺¹⁾ = q⁽ⁿ⁾ + Δt dT(p⁽ⁿ⁾) + ½ (Δt)² dT(p⁽ⁿ⁾) 2. p⁽ⁿ⁺¹⁾ = p⁽ⁿ⁾ - ½ Δt (dV(q⁽ⁿ⁾) + dV(q⁽ⁿ⁺¹⁾))
甚至合併成一個步驟。時間離散化是中央差分。【尚待確認】
d² ∂² d ∂ ∂ ——— q = ———— H(p,q) —— q - ——— H(p,q) —— H(p,q) dt² ∂q∂p dt ∂p² ∂q
Hamilton's equations: d²q/dt² = f(q) leapfrog method: q⁽ⁿ⁺¹⁾ - 2q⁽ⁿ⁾ + q⁽ⁿ⁺¹⁾ ——————————————————————— = f(q⁽ⁿ⁾) 2 Δt q⁽ⁿ⁾ + q⁽ⁿ⁺¹⁾ p⁽ⁿ⁺¹⸍²⁾ = ————————————— 2
Newtonian mechanics:牛頓力學。物理現象習慣表示成函數方程式,未知函數是位置和時間,已知函數是質量和某種係數。
Hamiltonian mechanics:Hamilton力學。Hamilton進一步發現許多物理現象也可以表示成扭對稱動態系統。已知泛函數H(p,q)是動能加位能,後人稱作Hamiltonian。未知函數p(t)和q(t)是動量和位置,後人稱作phase space。
Newtonian mechanics:質量加速度相乘。用來描述力平衡,形成守恆律。 Hamiltonian mechanics:動能位能相加。用來描述動能位能相互轉換。
p: momentum 動量 x: position 位置 T(p): kinetic energy 動能 V(x): potential energy 位能 H(p,x): total energy 動能加位能
三個範例。
(1) simple harmonic oscillation of a non-damping spring Newtonian mechanics mẍ + kx = 0 time t position x mass (constant) m (m > 0) Hookean (constant) k (k > 0) velocity v = ẋ = dx/dt acceleration a = ẍ = d²x/dt² force f = ma = mẍ force f = -kx Hamiltonian mechanics ⎰ dp/dt = -kx ⎱ dx/dt = p/m momentum p = mv position x force f = -kx = -∂H(p,x)/∂x velocity v = p/m = ∂H(p,x)/∂p kinetic energy T(p) = ½mv² = ½p²/m potential energy V(x) = ½kx² Hamiltonian H(p,x) = T(p) + V(x) = ½p²/m + ½kx² (2) Kepler problem (planetary motion in a plane) Newtonian mechanics r̈ + GMr/‖r‖³ = 0 Hamiltonian mechanics ⎰ dp/dt = -GMmr/‖r‖³ ⎱ dx/dt = p/m Hamiltonian H(p,r) = ½‖p‖²/m - GMm/‖r‖ (3) simple harmonic oscillation of a simple pendulum Newtonian mechanics θ̈ + (g/l)sinθ = 0 Hamiltonian mechanics ⎰ dp/dt = -mglsinθ ⎱ dθ/dt = p/ml² Hamiltonian H(p,θ) = ½p²/ml² - mglcosθ
https://physics.uwo.ca/~mhoude2/courses/PDF%20files/physics350/Hamilton.pdf
Hamilton's equations with separable Hamiltonian:引進牛頓力學之後,數學式子格式如下。【尚待確認】
Newtonian mechanics: mẍ + kx = 0 Hamiltonian mechanics: ⎰ dp/dt = -∂H/∂q = -dV/dq ⎱ dq/dt = ∂H/∂p = p/m Hamiltonian: H(p,q) = ½p²/m + V(q)
Newtonian mechanics: Mẍ + Kx = F(t) Hamiltonian mechanics: ⎰ ṗ = -∇V(q) + F(t) ⎱ q̇ = M⁻¹p Hamiltonian: H(p,q) = ½pᵀM⁻¹p + V(q)
state space:狀態空間。每種時刻t的數對(p(t),q(t))們。
狀態:特定時刻的數對。 狀態空間:所有時刻的數對的集合。
state: (p(t),q(t)) at certain t state space: (p(t),q(t)) for all t
phase space:相空間。物理學術語。數對是位置x、動量p,對應到q(t)、p(t)。相空間不是振幅相位那個相位,兩者無關。
相空間:數對是位置x、動量p。 組態空間:數對是位置x、速度v。
phase space: (position,momentum) for all t configuration space: (position,velocity) for all t
conservation:扭對稱動態系統導致許多物理量總和守恆。
證明手法是first integral。將物理量寫成函數F(p,q),嘗試推導dF(p,q)/dt = 0。當F(p,q)不隨時間而變,即是守恆。證明過程不需要用到可分離。
三個範例。
(1) energy (Hamiltonian) 能量守恆 (2) angular momentum (e.g. Kepler's second law) 角動量守恆 (3) state density (Liouville's theorem) 狀態密度守恆
https://phys.libretexts.org/Bookshelves/Classical_Mechanics/Variational_Principles_in_Classical_Mechanics_(Cline)/15:_Advanced_Hamiltonian_Mechanics/15.02:_Poisson_bracket_Representation_of_Hamiltonian_Mechanics
Hamilitonian:扭對稱動態系統導致H(p,q)守恆。
Kepler's second law:行星繞行太陽,行星與太陽的連線,每單位時間均掃過相同面積。
preservation of phase-space volume (Liouville's theorem):相空間容積保留性。det(A) = 1。就這樣。
幾何意義:考慮所有初始條件,合併所有狀態空間。一群連續數對,形成子空間。子空間實施變換,子空間容積保持相同。
Liouville's equation
Liouville's equation:平流方程式、扭對稱動態系統,兩者聯立。位置變數xy推廣成物理量pq,pq恰是扭對稱變換的數對。
advection equation: ∂f/∂t + dp/dt ∂f/∂p + dq/dt ∂f/∂q = 0 ^^^^^ ^^^^^ ṗ q̇ symplectic dynamical system: ⎰ dp/dt = -∂H/∂q ⎱ dq/dt = ∂H/∂p
嚴謹的說法:連續方程式、扭對稱動態系統,兩者聯立。連續方程式可以拆解成平流和壓縮。扭對稱動態系統導致不可壓縮。連續方程式只剩下平流。
continuity equation: ∂f/∂t + ∂(fṗ)/∂p + ∂(fq̇)/∂q = 0 symplectic dynamical system => incompressibility ∂ṗ/∂p + ∂q̇/∂q = -∂²H/∂p∂q + ∂²H/∂q∂p = 0
https://en.wikipedia.org/wiki/Liouville's_theorem_(Hamiltonian) https://web.physics.ucsb.edu/~mccann/notes/Virial.pdf https://mediatum.ub.tum.de/doc/1140308/828022.pdf
Liouville's equation可以改寫成帕松括號。
Liouville's equation: ∂f/∂t + ∂H/∂p ∂f/∂q - ∂H/∂q ∂f/∂p = 0 Liouville's equation: ∂f/∂t + {f,H}(p,q) = 0
數值方案需要特化。我只知道兩種數值方案。
Cheng–Knorr method:確保H總和守恆。【尚待確認】 Arakawa's method:同時確保½f²總和守恆。
Cheng–Knorr method:確保H總和守恆。【尚待確認】
隱式法,模仿symplectic leapfrog method。
[Cheng–Knorr 1976] The integration of the vlasov equation in configuration space https://www.osti.gov/servlets/purl/4200114 (6) and (7) dv/dt = -E(x) dx/dt = v f⁽⃰⁾(x,v) = f⁽ⁿ⁾(x-vΔt/2, v) f⁽⃰⃰⁾(x,v) = f⁽⃰⁾(x, v+E(x)Δt) f⁽ⁿ⁺¹⁾(x,v) = f⁽⃰⃰⁾(x-vΔt/2, v)
Arakawa's method:確保½f²總和守恆。代價是未知函數的變數增加三個,導致時間複雜度和空間複雜度大幅增加,需要使用超級電腦進行計算。就當作是學個想法吧。
專著《Numerical Methods for Fluid Dynamics: with Applications to Geophysics》。
符號解擁有數學性質:vanishing integral導致½f²總和守恆。
vanishing integral: ∬{f,H} = 0 vanishing integral multiplies f: ∬f{f,H} = ∬{½f²,H} = 0 vanishing integral multiplies H: ∬H{f,H} = ∬{f,½H²} = 0 Liouville's equation: ∂f/∂t + {f,H}(p,q) = 0 Liouville's equation multiplies f: ∂(½f²)/∂t + {½f²,H} = 0 conservation of ∬½f²: ∬(∂(½f²)/∂t + {½f²,H}) = 0 ∬∂(½f²)/∂t + ∬{½f²,H} = 0 ∬∂(½f²)/∂t = 0 ∂(∬½f²)/∂t = 0
數值解也必須擁有此性質。數值方案採用中央差分,其中帕松括號離散化修改成Arakawa's Jacobian,以便滿足vanishing integral三道式子,導致½f²總和守恆。
Arakawa's method: δ₂ₜf + δ₍₂ₚ,₂₉₎{f,H} = 0 sorry I replace subscript q with 9 central difference: f(t+Δt,p,q) - f(t-Δt,p,q) δ₂ₜf = ————————————————————————— 2 Δt f(t,p+Δp,q) - f(t,p-Δp,q) δ₂ₚf = ————————————————————————— 2 Δp f(t,p,q+Δq) - f(t,p,q-Δq) δ₂₉f = ————————————————————————— 2 Δq δ₍₂ₚ,₂₉₎{f,H} = (δ₂ₚf)(δ₂₉H) - (δ₂ₚH)(δ₂₉f) Arakawa's Jacobian: δ₍₂ₚ,₂₉₎{f,H} = ((δ₂ₚf)(δ₂₉H) - (δ₂ₚH)(δ₂₉f)) / 3 + (δ₂ₚ(f δ₂₉H) - δ₂₉(f δ₂ₚH)) / 3 + (δ₂₉(H δ₂ₚf) - δ₂ₚ(H δ₂₉f)) / 3 vanishing integral: sum sum δ₍₂ₚ,₂₉₎{f,H} = 0 ᵖ 𐞥 sum sum δ₍₂ₚ,₂₉₎{½f²,H} = 0 ᵖ 𐞥 sum sum δ₍₂ₚ,₂₉₎{f,½H²} = 0 ᵖ 𐞥
補充一下Arakawa's Jacobian名稱由來。名稱其實不太精準。
[Charney–Eliassen 1949] A Numerical Method for Predicting the Perturbations of the Middle Latitude Westerlies (7)(8)相差一個負號,與眾不同。導致旋度公式不成立。 [Charney–Fjørtoft–von Neumann 1950] Numerical Integration of the Barotropic Vorticity Equation (I3)上方提到Laplacian和Jacobian。 Jacobian定義成交叉微分項,與眾不同。其實是determinant of Jacobian。 [Arakawa 1966] Computational design for long-term numerical integration of the equations of fluid motion: Two-dimensional incompressible flow. Part I (2)(3)(13)沿襲前人的定義。 [Arakawa–Lamb 1980] A Potential Enstrophy and Energy Conserving Scheme for the Shallow Water Equations 微分方程式取名為potential vorticity advection equation。
三個範例。
(1) Vlasov's equation 電漿(天文物理流體力學) (2) 2D vorticity advection equation 氣旋(地球物理流體力學) (3) shallow water equations 波浪(地球物理流體力學)
Vlasov's equation:電漿分布方程式。
f(t,x,v) particle distribution function ρ(t,x) = ∭ f(t,x,v) dv particle density v(t,x) = (∭ v f(t,x,v) dv) / ρ(t,x) particle velocity
collisionless Boltzmann equation: df/dt = 0 ^^^^^ total derivative collisionless Boltzmann equation: ∂f/∂t + v ∂f/∂x + a ∂f/∂v = collision(∂f/∂t) ^^^^^^^^^^^^^^^^ = 0 Vlasov's equation: ∂f/∂t + v ∂f/∂x + F/m ∂f/∂v = 0 ∂f/∂t + v ∂f/∂x + F ∂f/∂(mv) = 0 m is constant ∂f/∂t + dx/dt ∂f/∂x + dp/dt ∂f/∂p = 0 Vlasov's equation (Poisson bracket formulation): ∂f/∂t + ∂H/∂p ∂f/∂x - ∂H/∂q ∂f/∂p = 0 ∂f/∂t + ∂f/∂x ∂H/∂p - ∂f/∂p ∂H/∂q = 0 Vlasov's equation (Poisson bracket formulation): ∂f/∂t + {f,H}(p,x) = 0 H ≔ ½p²/m + Φ(x) kinetic energy + potential energy f ≔ f distribution function p ≔ p momentum q ≔ x position
f: distribution function x: position v: velocity a: acceleration m: mass p: momentum F: force
https://en.wikipedia.org/wiki/Vlasov_equation https://en.wikipedia.org/wiki/Distribution_function_(physics)
2D vorticity advection equation:二維渦度平流方程式。
速度平流方程式改寫成Liouville's equation,未知函數翻倍。速度改成渦度,情況並未改善。然而二維空間的情況下,向量位勢退化為純量位勢,得以減少未知函數。
½ζ²總和守恆。ζ是二維渦度。½ζ²稱作enstrophy。
½ζ² = ½v²。½v²稱作specific kinetic energy。
2D vorticity advection equation: Dζ/Dt = 0 ^^^^^ material derivative 2D vorticity advection equation: ∂ζ/∂t + dx/dt ∂ζ/∂x + dy/dt ∂ζ/∂y = 0 2D vorticity advection equation (Poisson bracket formulation): ⎰ ∂ζ/∂t + ∂ψ/∂y ∂ζ/∂x - ∂ψ/∂x ∂ζ/∂y = 0 ⎱ ζ = laplace(ψ) 2D vorticity advection equation (Poisson bracket formulation): ⎰ ∂ζ/∂t + {ζ,ψ}(y,x) = 0 ⎱ ζ = laplace(ψ) H ≔ ψ stream function f ≔ ζ = laplace(ψ) vorticity in 2D space p ≔ y y position q ≔ x x position
shallow water equations:淺水方程組。帕松括號需要擴展。我沒有學會。
shallow water equations: ⎧ ∂h/∂t + ∂(hu)/∂x + ∂(hv)/∂y = 0 conservation of mass ⎨ ∂u/∂t + u ∂u/∂x + v ∂u/∂y + g ∂h/∂x = 0 advection of velocity ⎩ ∂v/∂t + u ∂v/∂x + v ∂v/∂y + g ∂h/∂y = 0 advection of velocity shallow water equations (Poisson bracket formulation): ∂f/∂t + {f,H}(h,u) = 0 H ≔ ½hu² + ½hv² + ½gh² energy f ≔ F(h,u,v) height and velocity p ≔ h height q ≔ u x velocity
懸案:守恆律可以強行轉換成Hamilton's equations,然後套用扭對稱法。【尚待確認】
Euler–Lagrange equation
我不知道這些主題對於設計數值方案有什麼幫助。有些文獻提到這些主題,於是順手紀錄起來。
Eulerian:用來描述格子流動變化。 Lagrangian:用來描述粒子移動軌跡。
Lagrangian L(q,q̇,t) generalized coordinates q = x generalized velocity q̇ = dx/dt time t
Hamiltonian:動能位能相加。用來描述動能位能總和固定。 Lagrangian:動能位能相減。用來描述動能位能相互轉換。
Hamiltonian H = T+V Lagrangian L = T-V
action S = ∫L(q,q̇,t)dt least action principle q = argmin S Euler–Lagrange equation solve q by ∂S/∂q = 0
Euler–Lagrange equation d/dt (∂L/∂q̇) - ∂L/∂q = 0 momentum p = ∂L/∂q̇ Legendre transform H(q,p,t) = pq̇ - L(q,q̇,t) kinetic energy × 2 pq̇
Noether's theorem if S(q,q̇,t) = S(q+dq,q̇,t) then p = constant
Lagrangian (without q̇) L(q,t) advection equation d/dt L(q,t) = 0
定理:一與二成立,那麼Euler–Lagrange equation等價於Hamilton's equation。
一、動量p = ∂L/∂q̇。(隱含separable Lagrangian。)
二、Lagrangian是動能位能相減。換句話說,Hamiltonian加Lagrangian是兩倍動能。換句話說,H(q,p,t) = pq̇ - L(q,q̇,t),其中pq̇是兩倍動能。順帶一提,這個看似簡單的式子可以用凸分析來描述,稱作Legendre transform。
Hamilton–Jacobi equation
我不知道這些主題對於設計數值方案有什麼幫助。有些文獻提到這些主題,於是順手紀錄起來。
Hamilton–Jacobi equation H(∂S/∂q,q,t) + ∂S(q,q̇,t)/∂t = 0 canonical transformation (p',q') = C(p,q) that d(p',q')/dt = {I,H'}(p',q')
canonical transformation H + dS/dt = H' Hamilton–Jacobi equation H + dS/dt = 0 generating function S = ∫ L dt + constant
phase-space transformation:相空間變換。原數對(p,q)實施座標變換成為新數對(p',q')。例如平移、縮放、旋轉。
preservation of symplectic dynamical system:扭對稱動態系統保留性。新數對恰好又形成新扭對稱動態系統。這樣的座標變換稱作「正則變換canonical transformation」。
symplectic dynamical system: d(p,q)/dt = {I,H}(p,q) canonical transformation: (p',q') = A(p,q) such that d(p',q')/dt = {I,H'}(p',q')
定理:保扭對稱動態系統變換(正則變換)=扭對稱變換。
canonical transformation <=> symplectic transformation
證明手法是利用Aᵀ J A = J。證明過程請見專著。
2/e p187
平移、等面積縮放、旋轉,皆是正則變換。扭對稱變換、扭對稱動態系統,也是正則變換。
preservation of Poisson bracket:帕松括號保留性。任意兩個函數,帕松括號保持相等。可以用來檢查數值解是否足夠準確。
{F,G}(p,q) = {F,G}{p',q'}
定理:扭對稱動態系統保留性=帕松括號保留性。
preservation of symplectic dynamical system <=> preservation of Poisson bracket
證明手法是利用p與q的帕松括號。證明過程請見專著。
{pᵢ,pⱼ}(p,q) = 0 {qᵢ,qⱼ}(p,q) = 0 {pᵢ,qⱼ}(p,q) = Kronecker delta function
定理:正則變換擁有積分不變量。
定理:積分不變量導致生成函數存在性、共軛動量存在性。
注意到,這跟組合學的生成函數沒有關聯。
證明路線:扭對稱動態系統保留性=帕松括號保留性=拉格朗日括號保留性=絕對積分不變量=相對積分不變量。證明過程請見專著。
專著《Notes on Hamiltonian Dynamical Systems》。
C (p,q) ———————> (p',q') canonical transformation ↓ ↓ {f,g}(p,q) ===== {f,g}(p',q') Poisson bracket ↓ ↓ [p,q](f,g) ===== [p',q'](f,g) Lagrange bracket ↓ ↓ dp Λ dq ===== dp' Λ dq' absolute integral invariant ↓ ↓ p dq ===== p' dq' relative integral invariant │ │ └────────┬─────────┘ ↓ differential of dF = p dq - p'dq' generating function ↓ ⎰ dF/dq = p conjugate momentum ⎱ dF/dq' = -p'
canonical transformation of separable Hamiltonian:生成函數平流方程式、共軛動量、Legendre transform、生成函數是新舊作用量相減【尚待確認】,四式聯立,得到座標變換公式。
生成函數的輸入變數有四種設定方式。本文採用F(q,q',t)。
(1) advection equation of F(q,q',t): dF(q,q',t)/dt = ∂F/∂q dq/dt + ∂F/∂q' dq'/dt + ∂F/∂t (2) conjugate momentum: ⎰ ∂F/∂q = p ⎱ ∂F/∂q' = -p' (3) Legendre transform: ⎰ L(q,q̇,t) = pq̇ - H(p,q,t) ⎱ L'(q',q̇',t) = p'q̇' - H'(p',q',t) (4) define F(q,q',t) as difference of actions: (?????) dF(q,q',t)/dt = L(q,q̇,t) - L'(q',q̇',t) canonical transformation of separable Hamiltonian: H(p,q,t) + ∂F(q,q',t)/∂t = H'(p',q',t)
https://phys.libretexts.org/Bookshelves/Classical_Mechanics/Variational_Principles_in_Classical_Mechanics_(Cline)/15:_Advanced_Hamiltonian_Mechanics/15.03:_Canonical_Transformations_in_Hamiltonian_Mechanics#mjx-eqn-15.76 https://physics.stackexchange.com/questions/572903/
Hamilton–Jacobi equation:separable Hamiltonian座標變換公式,令新Hamiltonian等於零。換句話說,找到一個座標變換,使得新扭對稱動態系統,其能量總和一直都是零。
修改能量基準點。宛如原點挪至平均數。減少浮點數運算誤差。
H(p,q,t) + ∂F(q,q',t)/∂t = 0
許多文獻調整生成函數的輸入變數設定方式,一如既往。
H(∂F/∂q,q,t) + ∂F(q,q̇,t)/∂t = 0 where p = ∂F/∂q
differential equation - in mathematics🚧
微分方程式的分類:多變數函數
微分方程式分為兩類。一、常微分方程式:對同一種變數進行微分。二、偏微分方程式:對多種變數進行微分。
ordinary differential equation, ODE: ∂ ∂ ∂ f(x,y) + 2 = —— f(x,y) + 3 —— —— f(x,y) + 2 g(x,y) ∂x ∂x ∂x ∂f ∂²f f + 2 = —— + 3 ——— + 2g 省略括號的部分、合併多次微分的部分 ∂x ∂x² (Leibniz) f + 2 = Dₓf + 3Dₓₓf + 2g 微分簡寫成 Dₓf Dₓₓf (Arbogast) f + 2 = fₓ + 3fₓₓ + 2g 微分簡寫成 fₓ fₓₓ (???) f + 2 = f′ + 3f″ + 2g 微分簡寫成 f′ f″ (Lagrange) f + 2 = ḟ + 3f̈ + 2g 微分簡寫成 ḟ f̈ (Newton)
partial differential equation, PDE: ∂ ∂ ∂ f(x,y) + 2 = —— f(x,y) + 3 —— —— f(x,y) + 2 g(x,y) ∂x ∂x ∂y ∂f ∂²f f + 2 = —— + 3 ——— + 2g 省略括號的部分、合併多次微分的部分 ∂x ∂xy f + 2 = ∂ₓf + 3∂ₓf + 2g 微分簡寫成 ∂ₓf ∂ₓf f + 2 = fₓ + 3fₓ + 2g 微分簡寫成 fₓ fₓ
微分方程式的分類:多變量函數
微分方程式分為兩類。一、純量微分方程式:純量函數的微分方程式。二、向量微分方程式:向量函數的微分方程式,得以引入梯度、散度、旋度。大家經常省略字尾-valued。
scalar-valued differential equation: ∂f ∂f ∂²f ∂²f ∂²f f + 2 —— + 3 —— + 5 ———— + g ——— + h ——— = 0 ∂x ∂y ∂x∂y ∂x² ∂y²
vector-valued differential equation: ∂Fₓ ∂F ∂F ∂Fₓ ( ——— + ——— ) Fₓ + ( ——— - ——— ) F = 0 ∂x ∂y ∂x ∂y
微分方程式的分類:加法分離
微分方程式分為兩類。一、一次微分方程式:函數微分視作變數,形成一次函數。二、非一次微分方程式。
一次微分方程式,可以推導符號解(分離變數法、格林函數)、演算數值解(時域一次方程組、頻域傅立葉轉換)。非一次微分方程式,則是數學界的大難題,至今只有少數特例找到了符號解。
linear differential equation: ∂f ∂f ∂²f ∂²f ∂²f f + 2 —— + 3 —— + 5 ———— + g ——— + h ——— + c = 0 ∂x ∂y ∂x∂y ∂x² ∂y²
nonlinear differential equation: ∂f ∂f ∂f ⎛∂f⎞² ⎛∂f⎞ f —— + —— —— + ⎜——⎟ + sin⎜——⎟ = 0 ∂x ∂x ∂y ⎝∂x⎠ ⎝∂x⎠
微分方程式還有兩類:一、齊次微分方程式:函數微分視作變數,沒有常數項。二、擬一次微分方程式:函數微分視作變數,係數不是常數函數而是泛函數,泛函數的輸入變數不含最高次微分。
齊次微分方程式、擬一次微分方程式,容易推導符號解。
homogeneous differential equation: ∂f ∂f ∂²f ∂²f ∂²f f + 2 —— + 3 —— + 5 ———— + g ——— + h ——— = 0 ∂x ∂y ∂x∂y ∂x² ∂y²
quasilinear differential equation: ∂f ∂f A(f) —— + B(f) —— + C(f) = 0 ∂x ∂y quasilinear differential equation: ⎛ ∂f ∂f⎞ ∂f ⎛ ∂f ∂f⎞ ∂f ⎛ ∂f ∂f⎞ ∂²f A⎜f —— ——⎟ —— + B⎜f —— ——⎟ —— + C⎜f —— ——⎟ ———— ⎝ , ∂x , ∂y⎠ ∂x ⎝ , ∂x , ∂y⎠ ∂y ⎝ , ∂x , ∂y⎠ ∂x∂y ⎛ ∂f ∂f⎞ ∂²f ⎛ ∂f ∂f⎞ ∂²f ⎛ ∂f ∂f⎞ + D⎜f —— ——⎟ ——— + E⎜f —— ——⎟ ——— + F⎜f —— ——⎟ = 0 ⎝ , ∂x , ∂y⎠ ∂x² ⎝ , ∂x , ∂y⎠ ∂y² ⎝ , ∂x , ∂y⎠
微分方程式的分類:乘法分離
微分方程式分為兩類。一、可分離微分方程式:微分方程式/解恰是多個函數相乘,每個函數輸入變數不重複。二、不可分離微分方程式。
可分離微分方程式,容易推導符號解(分離變數法)、演算數值解(顯式方法)。
separable ordinary differential equation: ⎛ ∂f ⎞ A(f) B⎜ —— ⎟ = c where B is identity functional ⎝ ∂x ⎠
separable partial differential equation: equation L( f(t,x,y) ) = 0 solution f(t, x, y) = f₁(t) f₂(x) f₃(y)
non-separable differential equation: ∂f f —— = — + f x ∂x x
微分方程式的分類:相依
常微分方程式分為三類。一、純時間常微分方程式:左式對時間微分,右式只有時間變數。二、自主常微分方程式:左式對時間微分,右式沒有時間變數。三、以上皆非。
pure-time ODE: df —— = 3x² + 2x + 1 dx pure-time ODE: d²f df 5 ——— + 4 —— = 3x² + 2x + 1 dx² dx
autonomous ODE: df —— = 3f² + 2f + 1 dx autonomous ODE: d²f df 5 ——— + 4 —— = 3f² + 2f + 1 dx² dx
微分方程式的分類:正定
二階偏微分方程式分為三類:橢圓、拋物、雙曲。圓錐曲線。
∂²f ∂²f ∂²f ∂f ∂f a ——— + 2b ———— + c ——— + d —— + e —— + g f + h = 0 ∂x² ∂x∂y ∂y² ∂x ∂y elliptic PDE b² - 4ac < 0 parabolic PDE b² - 4ac = 0 hyperbolic PDE b² - 4ac > 0
elliptic PDE e.g. Poisson's equation fₓₓ + f = 0 parabolic PDE e.g. heat equation fₜ = fₓₓ hyperbolic PDE e.g. wave equation fₜₜ = fₓₓ
微分方程式的分類:函數運算
algebraic equation:代數方程式。不做微分積分運算。 differential equation:微分方程式。只做微分運算。 integral equation:積分方程式。只做積分運算。 difference equation:差分方程式。只做差分運算。 differential-algebraic equation:微分代數方程式。兩個一起上。 differential-difference equation:微分差分方程式。兩個一起上。 integro-differential equation:積分微分方程式。兩個一起上。
微分方程式的分類:函數輸入運算
functional differential equation:泛函微分方程式。函數輸入做各種運算。 delay differential equation:延遲微分方程式。只做減法運算(減去常數)。 ordinary differential equation:常微分方程式。函數輸入不做運算。
微分方程式的標準式
微分方程式的標準格式,宛如動態系統。
explicit ODE:常微分方程ODE,最高次偏微分,挪到左式。 Cauchy problem:偏微分方程PDE,對時間最高次偏微分,挪到左式。
微分方程式的標準作圖方式
動態系統的解可以畫成圖形。
time series graph 函數曲線。以時間為主軸。 gradient field plot 移動速度。(dx/dt, dy/dt)向量場。 phase portrait 移動路線。初始條件(x₀,y₀)沿著向量場跑。 bifucation diagram 穩態位置。每種參數的穩態位置。
微分方程式的解
微分方程式有多解。舉例來說:
一、常數函數,微分通通是零,答案很多種。 二、散度旋度運算,好比a + b = 1,答案很多種。
微分方程式求解,必須事先確保唯一解。
existence 確保存在解 uniqueness 確保唯一解
追加限制條件,以確保唯一解。
initial condition 指定解的某處的函數值、導數值 boundary condition 指定解的邊界的位置、函數值、導數值
函數值:確保解的零次項(常數項)、一次項、二次項、……。 導數值:確保解的一次項、二次項、……。
微分方程式的題型
(1) first-order linear differential equation a₀ f + a₁ f′ = b approach: integrator solution: exponentiation https://tutorial.math.lamar.edu/classes/de/linear.aspx (2) second-order linear differential equation a₀ f + a₁ f′ + a₂ f″ = b approach: characteristic equation solution: Euler's identity https://www.ryanjuckett.com/damped-springs/ (3) eigenvalue problem f′ = k f where k is constant function approach: characteristic equation solution: eigenfunction (eigenmode) https://tutorial.math.lamar.edu/classes/de/bvpevals.aspx (4) linear differential equation a₀ f + a₁ f′ + a₂ f″ + ... = b approach: Laplace transform (spectral method) solution: fundamental solution https://tutorial.math.lamar.edu/Classes/DE/IVPWithLaplace.aspx https://tutorial.math.lamar.edu/Classes/DE/Laplace_Table.aspx https://tutorial.math.lamar.edu/classes/de/FundamentalSetsofSolutions.aspx (5) system of linear differential equation f⃗′ = A f⃗ + b⃗ approach: eigendecomposition --> Laplace transform solution: fundamental solution https://tutorial.math.lamar.edu/classes/de/SystemsIntro.aspx
微分方程式的化簡
(1) principle of superposition 疊加原理。強行分開邊界條件,成為多個問題,分別求解,疊加答案。 (2) separation of variables 分離變數法。強行分開變數,成為多個問題,分別求解,融合答案。 (3) method of lines 線法。強行將變數離散化,化作常微分方程式。僅適用IVP。 (4) method of characteristics 特徵線法。強行將變數對時間偏微分,化作常微分方程組。僅適用IVP。
微分方程式的歸約
函數方程式,化作微分方程式。
函數方程式的解,視作微分方程式的穩態。利用數值模擬,令時刻足夠大,以便求得穩態。
funtional equation: L(f(x)) = 0 differential equation: d/dt f(t,x) = L(f(t,x)) steady state of differential equation: d/dt f(t,x) = L(f(t,x)) = 0
高階微分方程式,化作一階微分方程組。
d³ d² d ——— f(t) = 6 ——— f(t) + 7 —— f(t) + 8 f(t) + 9 dt³ dt² dt
錯誤方式 ⎧ f = f ⎡ f ⎤ ⎡ 0 1 0 0 ⎤ ⎡ 1 ⎤ ⎨ f′ = f′ ⎢ f′ ⎥ ⎢ 0 0 1 0 ⎥ ⎢ f ⎥ ⎪ f″ = f″ --> ⎢ f″ ⎥ = ⎢ 0 0 0 1 ⎥ ⎢ f′ ⎥ ⎩ f‴ = 6f″ + 7f′ + 8f + 9 ⎣ f‴ ⎦ ⎣ 9 8 7 6 ⎦ ⎣ f″ ⎦ 正確方式 ⎧ (f )′ = f′ ⎧ f₀′ = f₁ ⎨ (f′)′ = f″ --> ⎨ f₁′ = f₂ ⎩ (f″)′ = 6f″ + 7f′ + 8f + 9 ⎩ f₂′ = 6f₂ + 7f₁ + 8f₀ + 9
微分方程式,化作代數方程式。
differential equation - in physics🚧
簡介
本章收錄經典的微分方程式。
本章前段收錄基礎的微分方程式。源自工程數學教科書。
本章後段涵蓋各種領域的微分方程式。收錄原則是個人喜好。
內容並不完整,只是隨手記錄。畢竟本站主旨是演算法而不是工程數學。如果想要學習完整內容,請參考各個科系的專業課程。
各種生醫理工科系(除了資工系)都會開設專業課程,講解自身領域經常使用的微分方程式。舉例來說,淺水方程組shallow water equations在大氣系、海洋系。電磁方程組Maxwell's equations在電機系。柔體方程組Navier–Cauchy equations在機械系、土木系。
經典的微分方程式:exponentiation
基礎的微分方程式。
exponential equation ḟ = f fₜ = f phase rotation equation ḟ = 𝑖f fₜ = 𝑖f 0D wave equation f̈ = f fₜₜ = f oscillator equation f̈ = -f fₜₜ = -f
exponential equation
「指數方程式」。
ḟ = f,微分之後還是一樣。微分不動點。
ḟ = cf ,添上倍率c。c>1是成長率,c<1是衰減率。
符號解是指數函數。
f(t) = f(0)exp(ct)
phase rotation equation
「相位旋轉方程式」。
ḟ = 𝑖f,添上虛數𝑖。
ḟ = 𝑖ωf ,添上角速度ω。
符號解是歐拉公式。
f(t) = f(0)exp(𝑖ωt) = f(0)(cos(ωt) + 𝑖sin(ωt))
0D wave equation【尚無正式名稱】
「零維波動方程式」。
⎰ ṗ = cq ⎱ q̇ = cp
一式對時間微分、替換二式,簡化為一道式子。
f̈ - c²f = 0
符號解是雙曲函數。A和B取決於初始條件。
f(t) = A exp(ct) + B exp(-ct) = C cosh(ct) + D sinh(ct) A + B = f(0) initial position A - B = ḟ(0)/c initial velocity A = (f(0) + ḟ(0)/c) / 2 B = (f(0) - ḟ(0)/c) / 2 C = f(0) initial position D = ḟ(0)/c initial velocity
oscillator equation
「振子方程式」。簡諧運動。扭對稱動態系統經典範例。
⎰ ṗ = -ωq ⎱ q̇ = +ωp
一式對時間微分、替換二式,簡化為一道式子。形成守恆律。
f̈ + ω²f = 0
符號解是弦波。A和B取決於初始條件。
f(t) = A cos(ωt) + B sin(ωt) = C cos(ωt - ϕ) A = f(0) initial position B = ḟ(0)/ω initial velocity C = magnitude(A+B𝑖) = sqrt(A²+B²) initial magnitude ϕ = phase(A+B𝑖) = tan⁻¹(B/A) initial phase
經典的微分方程式:Laplacian
引入了梯散運算。全是人名,紀念古人。
Laplace's equation ∆f = 0 fₓₓ + f + f = 0 Poisson's equation ∆f = g fₓₓ + f + f = g Helmholtz's equation ∆f = λf fₓₓ + f + f = λf
人名後面到底要不要加apostrophe s?大家意見不一致。
Laplace's equation
「拉普拉斯方程式」。處處梯散為零。
一坨東西的勢力均衡。
Poisson's equation
「泊松方程式」。處處梯散已知。
常見用法是兩邊梯散相同∆f₁ = ∆f₂,f₂已知或∆f₂已知。
兩坨東西的勢力分布相等。其中一坨已知。
梯散反運算。已知梯散g,求得原函數f。
符號解:格林函數疊加而得。
數值解:擁有特殊演算法。時域一次方程組、頻域傅立葉轉換。
Helmholtz's equation
「亥姆霍玆方程式」。梯散運算的特徵函數。
梯散運算的特徵函數f是各種頻率的cos和sin波。
符號解:f(x) = e𝑖√λ‖x‖ / 4π‖x‖。
經典的微分方程式:spacetime
引入了時間變數、空間變數。
Helmholtz's equation f = ∆f f = fₓₓ + f + f heat equation ḟ = ∆f fₜ = fₓₓ + f + f wave equation f̈ = ∆f fₜₜ = fₓₓ + f + f
注意到,數學家使用運算符號,其運算對象涵蓋所有變數。物理學家異於常人,牛頓微分符號只針對時間變數,梯度/散度/旋度/梯散符號只針對空間變數。
物理學家另行發明梯度運算spacetime gradient、梯散運算d'Alembertian,以便針對所有變數。食飽換枵。
Helmholtz's equation
「亥姆霍玆方程式」。不是魔法學校,也不是煉金術師。
f = ∆f,函數等於位勢差。
f = -k²∆f,添上波數k。
heat equation
「熱傳導方程式」。硬生生多出傳導二字。
ḟ = ∆f,變化速度等於位勢差。
ḟ = c∆f,添上擴散速度c。
符號解:f(x) = e-x²/4t / √t。稱作heat kernel。
wave equation
「波動方程式」。硬生生多出動字。
f̈ = ∆f,加速度等於位勢差。位勢差產生彈簧力,彈簧力產生加速度。
f̈ = c²∆f,添上傳播速度c,有如彈性係數。
一維空間的符號解:d'Alembert's formula。
1 1 ⌠x+ct f(x,t) = ——— [ϕ(x-ct) + ϕ(x+ct)] + ——— ⎮ ψ(s) ds 2 2c ⌡x-ct f(x,0) = ϕ(x) initial position ḟ(x,0) = ψ(x) initial velocity
方程式重新整理成:時間微分的特徵函數、空間二次微分的特徵函數。解是兩者聯立,稱為特徵模態(eigenmode)。物理意義:駐波。
一維空間的符號解:特徵模態f(x,t) = A sin(x+vt) + B sin(x-vt),其中a與b取決於初始條件。物理意義:兩個波,振幅A與B,往反方向傳播,疊加之後形成駐波。
二維空間的符號解:取決於邊界形狀。特殊的邊界形狀,才能順利推導符號解。
一維琴弦振動:直線線段 二維薄膜振動:方形、圓形、L形 三維固體振動:懸臂梁、H型鋼、平板
經典的微分方程式:higher-order derivative
引入了合體技:零次微分項(泛函數R(f))、一次微分項(散度∇∙f)、二次微分項(梯散∆f)、常數函數項(已知函數g)。
分別稱作反應、傳輸、擴散、源/匯。
transport equation ḟ = ∇∙f diffusion equation ḟ = ∆f transport–diffusion equation ḟ = ∆f + ∇∙f reaction–diffusion equation ḟ = R(f) + ∆f reaction–transport–diffusion equation ḟ = R(f) + ∇∙f + ∆f
合體技導致難以推導符號解。形成數學領域:動態系統。
經典的微分方程式:transport
引入了物理量、速度。
transport–diffusion equation q̇ + ∇∙(qv) - ∇∙(D∇q) = S
continuity equation q̇ + ∇∙(qv) = 0 ∂ₜq + ∂ₓ(qv) + ∂(qv) = 0 advection equation q̇ + v∙∇q = 0 ∂ₜq + vₓ∂ₓq + v∂q = 0 incompressibility ∇∙v = 0 ∂ₓvₓ + ∂v = 0
注意到,數學偏微分vₓ跟物理學分量vₓ無法辨別。一種解法是更換偏微分表示法,偏微分寫成∂/∂x q或者∂ₓq。另一種解法是更換分量表示法,速度分量寫成u v w。實務上的解法是一起更換。
transport–diffusion equation
「傳輸-擴散方程式」。
D是擴散係數。S是源/匯,根據正負號。
q̇ + ∇∙(qv) - ∇∙(D∇q) = S ^^^^^^ ^^^^^^^ ^^ transport diffusion source/sink ^^^^^^^^^ ^^^^^^^^^ ^^^^^^ 1st-order 2nd-order constant derivative derivative function
continuity equation
「連續方程式」。
q̇ + ∇∙q = 0,時間變化量等於空間轉移量。
q̇ + ∇∙(qv) = 0,添上每一處的轉移速度v。
連續方程式的由來是泰勒近似。泰勒級數,取零次項與一次項。二次項之後數值極小,物理學家選擇忽略不計。事實上,所有物理公式,其本質都是泰勒級數取到一次項或者取到二次項。
advection equation
「平流方程式」。
q̇ + ∇∙q = 0,當速度是常數函數,恰是連續方程式。
q̇ + v∙∇q = 0,添上每一處的轉移速度v。
連續方程式可以拆成兩項:平流與壓縮。連續=平流+壓縮。
微分乘積律:前微後不微、前不微後微。
q̇ + ∇∙(qv) = 0 q̇ + v∙(∇q) + q(∇∙v) = 0 ^^^^^^ ^^^^^^^ advection compression
∂ ∂ ∂ —— q + ( —— qvₓ + —— qv ) = 0 ∂t ∂x ∂y ∂ ∂ ∂ ∂ ∂ —— q + ( vₓ —— q + v —— q ) + q ( —— vₓ + —— v ) = 0 ∂t ∂x ∂y ∂x ∂y ^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ advection compression
平流方程式只有時間變化項、平流項,沒有壓縮項。
換句話說,連續方程式、不可壓縮∇∙v = 0,兩式聯立,得到平流方程式。平流=連續&不可壓縮。
有人簡寫成大寫D,稱作「物質導數material derivative」。
∂ ∂ ∂ D —— q + ( vₓ —— q + v —— q ) = 0 ---> —— q = 0 ∂t ∂x ∂y Dt
incompressibility
「不可壓縮」。
∇∙v = 0。出入速度,總和相等。流動順暢,不疾不徐。
經典的微分方程式:conservation
引入了質量、動量、能量。引入了體積、密度。
continuity equation for mass conservation ∂/∂t ρ + ∇∙(ρv) = 0 for momentum conservation ∂/∂t (ρv) + ∇∙(ρv⊗v) = 0 for energy conservation ∂/∂t (ρe) + ∇∙(ρev) = 0
物理學當中,上述三式同時成立。白話文:
質量守恆:密度連續方程式 動量守恆:動量密度連續方程式 能量守恆:能量密度連續方程式
continuity equation for mass conservation
「連續方程式之質量守恆」。物理量是密度q := ρ。
質量m。體積V。密度ρ = m/V。
原式是質量守恆。將質量改寫成密度,成為密度守恆。
大家總是採用密度守恆。原因是微積分運算整齊劃一。密度守恆可以同時對空間變數和時間變數積分,具備物理意義。密度守恆不必對空間變數和時間變數微分,沒有物理意義。
體積是常數的情況下,質量改寫成密度,有兩種等價方式:
一、中學四則運算風格:質量除以體積。ρ = m/V。
二、大學微積分風格:質量對體積微分。由於體積是常數,不必套用微分乘積律、微分連鎖律。ρ = ∂m/∂V。
兩種方式都有人使用。甚至混用。
continuity equation for momentum conservation
「連續方程式之動量守恆」。物理量是動量密度q := ρv。
質量m。速度v。動量mv。動量密度ρv = mv/V。
二維動量有兩個方向,總共兩道方程式,三維動量有三個方向,總共三道方程式。利用Kronecker product ⊗,簡寫成一道方程式。
continuity equation for energy conservation
「連續方程式之能量守恆」。物理量是能量密度q := ρe。
動力學當中,能量是動能。熱動力學當中,能量是動能加內能。
質量m。速度v。動能½mv²。動能密度½ρv²。
m: mass mv: momentum ½mv²: kinectic energy ρ: density (mass per volume) ρv: momentum density ½ρv²: kinectic energy density
能量E。能量密度E/V。比能(能量除以質量)e = E/m。
E = ½mv² E/V = ½ρv² e = E/m = ½v²
E: energy Eₖ: kinetic energy Eₚ: potential energy e: specific energy (energy per mass)
物理學當中,specific是指定的物質。specific energy是每單位質量的能量(指定的物質)。specific翻譯成比例的比,specific energy翻譯成比能,非常奇葩。
各位可能聽過比熱容specific heat capacity,簡稱比熱specific heat。每單位質量的熱能(指定的物質),使得溫度升高一單位。
velocity advection equation
質量守恆與動量守恆兩式聯立=質量守恆與速度平流兩式聯立。
⎰ ∂/∂t ρ + ∇∙(ρv) = 0 <=> ⎰ ∂/∂t ρ + ∇∙(ρv) = 0 ⎱ ∂/∂t (ρv) + ∇∙(ρv⊗v) = 0 ⎱ ρ D/Dt v = 0
⎰ conservation of mass <=> ⎰ conservation of mass ⎱ conservation of momentum ⎱ advection of velocity (multiplied by density)
∂/∂t (ρv) = (∂/∂t ρ)v + ρ(∂/∂t v) 1st term of ^^^^^^^^(a) conservation of momentum ∇∙(ρv⊗v) = (∇∙(ρv))v + (ρv)∙∇v 2nd term of ^^^^^^^^(b) conservation of momentum (a) + (b) = 0 conservation of mass ρ(∂/∂t v) + (ρv)∙∇v = 0 subtraction ρ (∂/∂t v + v∙∇v) = 0 factoring ρ D/Dt v = 0 material derivative
白話文:
一、物體沿著速度方向移動。 二、質量也沿著速度方向移動。 三、速度是物體的附庸品,速度也沿著速度方向移動。
因此,動量守恆的數學式子有兩種寫法:動量密度連續方程式、速度平流方程式(再乘以密度)。目前沒有一致公認的寫法,但是速度平流比較常見。
注意到,連續=平流+壓縮,平流=連續&不可壓縮,其主詞是同一個物理量。至於此處的速度平流方程式,不適用上述定理,畢竟速度連續方程式不成立。
注意到,速度平流方程式,乍看不可壓縮,但是實際上動量密度可以壓縮。這是常見誤區。
經典的微分方程式:dynamics
引入了動量變化、能量變化。不討論質量變化。
Newton's law of motion ∂/∂t (ρv) = f/V work–energy theorem ∂/∂t (ρe) = (f/V)∙v
Newton's law of motion
「牛頓運動定律」。一、動量是質量乘以速度。二、衝量是動量先後差異、動量傳遞多寡。三、動量(或衝量)對時間微分是力。
此處只談一和三。
⎰ P = mv ⎱ ∂/∂t P = f
合併成一道式子。
∂/∂t P = ∂/∂t (mv) = f
整個式子除以體積。動量密度對時間微分得到力密度。
∂/∂t (P/V) = ∂/∂t (ρv) = f/V
work–energy theorem
「功能定理」。一、能量是質量乘以速度平方再除以二。二、功是能量先後差異、能量傳遞多寡。三、能量(或功)對時間微分是功率。因此功率恰是力與速度的點積。
此處只談一和三。
⎰ E = me = m(½v²) ⎱ ∂/∂t E = f∙v
合併成一道式子。
∂/∂t E = ∂/∂t (me) = f∙v
整個式子除以體積。能量密度對時間微分得到功率密度。功率密度是力密度與速度的點積。
∂/∂t (E/V) = ∂/∂t (ρe) = (f/V)∙v
經典的微分方程式:hydrodynamics
引入了重力、壓力、應力。
continuity equations ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎨ ∂/∂t (ρv) + ∇∙(ρv⊗v) = 0 ⎩ ∂/∂t (ρe) + ∇∙(ρev) = 0 Euler's equations ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎨ ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇p = 0 ⎩ ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(pv) = 0 Cauchy's equations ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎨ ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇∙σ = 0 ⎩ ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(σ∙v) = 0 hydrodynamic equations ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎨ ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇p + ∇∙σ = 0 ⎩ ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(pv) + ∇∙(σ∙v) = 0
只看動量守恆。
continuity equations ∂/∂t (ρv) + ∇∙(ρv⊗v) = 0 Euler's equations ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇p = 0 Cauchy's equations ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇∙σ = 0 hydrodynamic equations ∂/∂t (ρv) + ∇∙(ρv⊗v) + ρg + ∇p + ∇∙σ = 0
只看能量守恆。
continuity equations ∂/∂t (ρe) + ∇∙(ρev) = 0 Euler's equations ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(pv) = 0 Cauchy's equations ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(σ∙v) = 0 hydrodynamic equations ∂/∂t (ρe) + ∇∙(ρev) + ρg∙v + ∇∙(pv) + ∇∙(σ∙v) = 0
∇∙(pv) = (∇p)∙v + p(∇∙v) ∇∙(σ∙v) = (∇∙σ)∙v + σ:∇v
實際上是質量守恆、動量守恆、能量守恆,三式聯立。動量守恆額外考慮力(動量變化),能量守恆額外考慮功率(能量變化)。
四式都有兩種寫法。動量守恆有兩種寫法,但是速度平流方程式比較常見。此處採用動量密度連續方程式。教科書大多採用速度平流方程式。
continuity equations
「連續方程組」。不考慮力。
Euler's equations
「歐拉方程組」。動量相聚,產生壓力。
考慮兩種力密度:重力密度ρg。壓力密度∇p。
重力加速度g。重力mg。重力密度ρg = mg/V。
力f。表面積A。壓力p = f/A。壓力密度∇p = f/V。
符號解是Arnold–Beltrami–Childress flow。
Cauchy's equations
「柯西方程組」。動量相撞、動量相擦,產生應力。
考慮兩種力密度:重力密度ρg。應力密度∇∙σ。
力f。表面積A。應力σ = f/A。應力密度∇∙σ = f/V。
https://www.grc.nasa.gov/www/k-12/airplane/nseqs.html https://www.eng.auburn.edu/~tplacek/courses/fluidsreview-1.pdf
hydrodynamic equations
「流體方程組」。省略動力學三字。大家一起上。
請見本站文件「fluid simulation: equation」。
質量守恆、動量守恆、能量守恆,三式聯立。並且引入重力、壓力、應力。
考慮三種力密度。
mg: gravity (force) vector p: pressure (force per area) scalar σ: stress (force per area) matrix ρg: force density from gravity vector ∇p: force density from pressure vector ∇∙σ: force density from stress vector
重力mg(向量):有些文獻將重力mg改成外力f。力密度ρg。 壓力p(純量):力除以面積,然而中文翻譯成力。力密度∇p。 應力σ(矩陣):力除以面積,然而中文翻譯成力。力密度∇∙σ。
經典的微分方程式:geophysical hydrodynamics
引入了深度、壓力。
shallow water equations 薄層流體 quasi-geostrophic shallow water equations 地球自轉
shallow water equations
「淺水方程組」。考慮水深。用於模擬大型水體表面運動,例如海嘯。
淺水方程組有兩種寫法。首先介紹速度平流方程式。
⎰ ∂/∂t h + ∇∙(hv) = 0 conservation of mass ⎱ D/Dt v + g ∇h = 0 advection of velocity
⎧ ∂/∂t h + ∂/∂x (hvₓ) + ∂/∂y (hv) = 0 ⎨ ∂/∂t vₓ + vₓ ∂/∂x vₓ + v ∂/∂y vₓ + g ∂/∂x h = 0 ⎩ ∂/∂t v + vₓ ∂/∂x v + v ∂/∂y v + g ∂/∂y h = 0
原理:密度連續方程式、速度平流方程式、流體靜力平衡,三式聯立。
⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of mass ⎨ ρ D/Dt v + ∇p + ρg = 0 advection of velocity ⎩ D/Dt v = 0 hydrostatic balance
流體靜力平衡定義為Z軸方向(水深反方向)沒有速度平流。
D/Dt v = 0 hydrostatic balance
假設是均勻流體:密度ρ是常數。第一式對Z軸積分,除以密度ρ,改寫成水深h。第二式與第三式合併,除以密度ρ,改寫成水深h。最後精簡成二維空間。得到淺水方程組。
第一式對Z軸積分。水體內部密度是常數,水體外部密度是零,積分結果是密度乘上水深。
∫ { ∂/∂t ρ + ∇∙(ρv) } dz = 0 integral ∂/∂t (ρh) + ∇∙(ρhv) = 0 ∫ρdz = ρh ∂/∂t h + ∇∙(hv) = 0 ρ is constant
第二式與第三式可以推導出知名公式p = ρgh。
ρ D/Dt v + ∂/∂z p + ρg = 0 z-axis of advection of velocity D/Dt v = 0 hydrostatic balance ∂/∂z p + ρg = 0 subtraction ∂/∂z p = -ρg hydrostatic pressure distribution p = -ρgz ρ and g are constants p = ρgh unit_vector(h) = - unit_vector(z)
利用p = ρgh改寫第二式。
ρ D/Dt vₓ + ∂/∂x p + ρgₓ = 0 x-axis of advection of velocity ρ D/Dt vₓ + ∂/∂x p = 0 gₓ = 0 ρ D/Dt vₓ + ∂/∂x (ρgh) = 0 p = ρgh ρ D/Dt vₓ + ρg ∂/∂x h = 0 ρ and g are constants D/Dt vₓ + g ∂/∂x h = 0 divides ρ
ρ D/Dt v + ∂/∂y p + ρg = 0 y-axis of advection of velocity D/Dt v + g ∂/∂y h = 0
z軸0 + 0 = 0沒有意義。精簡成二維空間。
ρ D/Dt v + ∂/∂z p + ρg = 0 z-axis of advection of velocity 0 + 0 = 0
shallow water equations
淺水方程組有兩種寫法。接著介紹動量密度連續方程式。
⎰ ∂/∂t h + ∇∙(hv) = 0 conservation of mass ⎱ ∂/∂t (hv) + ∇∙(hv⊗v) + hg ∇h = 0 conservation of momentum
⎧ ∂/∂t h + ∂/∂x (hvₓ) + ∂/∂y (hv) = 0 ⎨ ∂/∂t (hvₓ) + ∂/∂x (hvₓvₓ) + ∂/∂y (hvₓv) + ∂/∂x (½gh²) = 0 ⎩ ∂/∂t (hv) + ∂/∂x (hvvₓ) + ∂/∂y (hvv) + ∂/∂y (½gh²) = 0
原理:密度連續方程式、動量密度連續方程式、流體靜力平衡,三式聯立。
⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of mass ⎨ ∂/∂t (ρv) + ∇∙(ρv⊗v) + ∇p + ρg = 0 conservation of momentum ⎩ D/Dt v = 0 hydrostatic balance
對Z軸積分,除以密度ρ,改寫成水深h。最後精簡成二維空間。得到淺水方程組。
最後來個波浪溯升。
專著《Computational Algorithms for Shallow Water Equations》。
quasi-geostrophic shallow water equations
專著《Essentials of Atmospheric and Oceanic Dynamics》。
「準地轉淺水方程組」。追加地轉偏向力,以便模擬地球表面流體,例如海洋和大氣。用於天氣預報。
淺水方程組、旋轉參考系、球面座標系,三式聯立。
⎰ ∂/∂t h + ∇∙(hv) = 0 conservation of mass ⎱ D/Dt v - f×v + g ∇h = 0 advection of velocity
⎧ ∂/∂t h + ∂/∂x (hvₓ) + ∂/∂y (hv) = 0 ⎨ ∂/∂t vₓ + vₓ ∂/∂x vₓ + v ∂/∂y vₓ - fₓv + g ∂/∂x h = 0 ⎩ ∂/∂t v + vₓ ∂/∂x v + v ∂/∂y v + fvₓ + g ∂/∂y h = 0
Coriolis force / geostrophic equations https://www.youtube.com/watch?v=5y47Z8RPr30 https://www.youtube.com/watch?v=thiN9tix1Zc http://nwafiles.nwas.org/digest/papers/1996/Vol21No1/Pg21-Billingsley.pdf https://gfd.whoi.edu/wp-content/uploads/sites/18/2018/03/lecture8-harvey_136564.pdf
經典的微分方程式:elastodynamics
Navier–Stokes equations 牛頓流體 Navier–Cauchy equations 彈性固體
Navier–Stokes equations
「牛頓流體方程組」。流體方程組,針對牛頓流體。例如水。
請見本站文件「fluid simulation: equation」。
流體方程組、本構方程式(牛頓流體),兩式聯立。大家習慣省略能量守恆。
⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of mass ⎨ ρ D/Dt v + ρg + ∇p + ∇∙σ = 0 conservation of momentum ⎩ σ = -μ ∇v constitutive equation (Newtonian fluid)
牛頓流體當中,應力與應變率(速度梯度)成正比。作為摩擦力則帶負號。
constitutive equation (Newtonian fluid): σ = μ ∇v
因此應力可以改寫成速度擴散。
⎰ ∂/∂t ρ + ∇∙(ρv) = 0 ⎱ ρ ( v̇ + (v ∙ ∇v) ) + ρg + ∇p - μ ∆v = 0
⎰ ∂/∂t ρ + ∇∙(ρv) = 0 ⎱ v̇ + (v ∙ ∇v) + g + (∇p / ρ) - ν ∆v = 0 (let ν = μ/ρ) ^^^ ^^^ Greek letter nu
μ: dynamic viscosity ν: kinematic viscosity (momentum diffusivity)
符號解是千禧年大獎難題,跟P/NP問題齊名。
Navier–Cauchy equations
姑且稱作「柔體方程組」。利用流體方程組描述固體運動。
請見本站文件「soft body simulation: linear elasticity」。
流體方程組、本構方程式(線性彈性),兩式聯立。只考慮應力。大家習慣省略能量守恆。
⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of mass ⎨ ρ D/Dt v + ∇∙σ = 0 conservation of momentum ⎪ ∂/∂t ε = (∇v + (∇v)ᵀ) / 2 strain rate ⎩ σ = -C:ε constitutive equation (linear elasticity)
線性彈性當中,應力與應變呈線性關係。作為摩擦力則帶負號。
constitutive equation (linear elasticity): σ = C:ε
經典的函數方程式:thermodynamics
注意到這不是微分方程式。這是重要觀念,於是順便介紹一下。
conservation of mechanical energy 能量守恆(粒子) Bernoulli's equation 能量守恆(流體) ideal gas equation of state 能量關係式 heat transfer formula 功關係式
conservation of mechanical energy
「機械能守恆」。粒子運動能量守恆。無論哪個時刻,動能、位能,兩者總和為定值。
conservation of mechanical energy: ½mv² + mgh = constant ½ρv² + ρgh = constant
機械能=動能+位能。
質量m。速度v。動能½mv²。動能密度½ρv²。
m: mass mv: momentum ½mv²: kinectic energy ρ: density (mass per volume) ρv: momentum density ½ρv²: kinectic energy density
質量m。重力mg。位能mgh。位能密度ρgh。
m: mass mg: gravity mgh: potential energy ρ: density (mass per volume) ρg: gravity density ρgh: potential energy density
Bernoulli's equation
「白努利方程式」。流體版本的機械能守恆。流體運動能量守恆。無論哪個時刻,動能、位能、壓力能,三者總和為定值。源自Euler's equation。
conservation of energy in fluid flow (Bernoulli's equation): ½mv² + mgh + pV = constant ½ρv² + ρgh + p = constant
½mv²: kinectic energy mgh: potential energy pV: pressure energy ½ρv²: kinectic energy density ρgh: potential energy density p: pressure
ideal gas equation of state(ideal gas law)
「理想氣體狀態方程式」。狀態方程式是多種物理量的關係式。此處討論理想氣體。物理量總共四種:壓力p、體積V、莫耳n、溫度T。另外還有係數R,稱作氣體常數。古人習慣使用大寫P。
pV = nRT
p: pressure V: volume n: number of moles R: ideal gas constant T: temperature
方便起見,將莫耳改寫成質量。
pV = mrT
nRT = (m/M)RT = m(R/M)T = mrT
n: number of moles M: molar mass (mass per mole) m: mass r: specific gas constant
方便起見,將質量改寫成密度。前提是體積是常數。如此一來,不必套用微分乘積律、微分連鎖律。然而熱動力學當中,體積通常不是常數。
p = ρrT when V = constant
p = mrT/V = (m/V)rT = ρrT
ρ: density
理想氣體狀態方程式可以追加限制條件,例如等壓過程、等容過程、等溫過程、等熵過程、絕熱過程、……。
(1) isobaric process: p = constant (2) isochoric process: V = constant (3) isothermal process: T = constant => pρ = constant (4) isentropic process: S = constant => adiabatic and reversible (5) adiabatic process: Q = 0 => pρ⁻ᵞ = constant
多變過程是這些過程的通用公式:等壓過程n=0,等容過程n=∞,等溫過程n=1,等熵過程n=γ。
polytropic process: pVⁿ = constant
heat transfer formula
順便介紹一些物理量。
專著《Thermodynamics: An Engineering Approach》。
總能=內能+機械能 total energy E = U + M 內能=顯熱+潛熱+鍵能+核能 internal energy U = ...... 機械能=動能+位能+壓力能 mechanical energy M = ½mv² + mgh + pV
內能 internal energy U 外功 external work W 焓=熱能總和=內能+壓力能 enthalpy H = U + pV 熱=熱能差異=內能差異+外功 heat Q = ΔU + W 機械能觀點:能量=壓力X體積 p-V diagram energy = pV 熱能觀點:能量=溫度X熵 T-S diagram energy = TS
熱動力學沒有定義「熱能thermal energy」這個詞彙,但是這個詞彙私底下相當好用。熱能是受溫度影響的能量。內能、壓力能,它們都是一種熱能。熱動力學的焓,模仿了動力學的位能加動能,方便大家累計受溫度影響的能量總和,按理會守恆。熱動力學的熱,模仿了動力學的功,方便大家觀察先後能量差異、計算能量消耗。
順便介紹一些關係式。
專著《Applied Thermodynamics for Marine Engineers》。
heat transfer formula:熱與溫差的關係式。熱正比於溫差、正比於質量、取決於物質特性。熱能從高溫流向低溫。
Q = cmΔT
熱 heat Q 溫度 temperature T 質量 mass m 熱容 heat capacity C = Q/ΔT 比熱容(比熱) specific heat capacity c = C/m
Mayer's relation:熱容與氣體常數的關係式,當ΔU相同。
⎰ Qᵥ = cᵥmΔT = ΔU + 0 heat transfer at constant volume ⎱ Qₚ = cₚmΔT = ΔU + pΔV heat transfer at constant pressure => cₚmΔT = cᵥmΔT + pΔV => cₚmΔT = cᵥmΔT + mrΔT => cₚ = cᵥ + r => r = cₚ - cᵥ
heat capacity ratio:等壓過程的比熱容、等容過程的比熱容,兩者比值。用來代替其他物理參數,以便精簡物理參數數量。
⎰ r = cₚ - cᵥ Mayer's relation ⎱ γ = cₚ / cᵥ heat capacity ratio => ⎰ cₚ = rγ/(γ-1) ⎱ cᵥ = r/(γ-1)
r: specific gas constant γ: heat capacity ratio cₚ: specific heat capacity at constant pressure cᵥ: specific heat capacity at constant volume
formulas of ideal gas:等容過程的一些關係式。用於Euler's equation,將壓力p改寫成密度ρ與比內能eᵢ,減少未知函數。
⎰ pV = mrT ideal gas law ⎱ Qᵥ = cᵥmΔT heat transfer at constant volume => ΔU = Qᵥ = cᵥmΔT = (r/(γ-1))mΔT = ΔpV/(γ-1) => Δeᵢ = ΔU/m = Δp/ρ(γ-1) => eᵢ = p/ρ(γ-1) => ρeᵢ = p/(γ-1) => p = (γ−1)ρeᵢ
eᵢ: specific internal energy
經典的微分方程式:electrodynamics
引入了散度、旋度。
electric force: Coulomb's force Lorentz's force Abraham–Lorentz force electrostatics: Gauss's law Coulomb's law magnetostatics: Ampère's law Biot–Savart law Ampère's force law electromagnetic induction: Ampère–Maxwell law Faraday's law electric energy: Faraday's law electrical resistivity and conductivity: Ohm's law
動力學討論粒子運動。電動力學討論帶電粒子運動。
粒子附帶電荷,英文charged particle,中文帶電粒子。
electric force
電動力學當中,大家不討論動量,只討論力(動量變化)。
電力就是力。電力分為三類:庫侖力(電場力)、勞侖茲力(磁場力)、亞伯拉罕-勞侖茲力(輻射反應力)。
一、帶電粒子集體沒有運動,產生定值電場(靜電場)。 電場進一步形成庫侖力(電場力)。 二、帶電粒子集體等速運動,產生定值磁場(靜磁場),繞著速度方向逆時針旋轉。 磁場進一步形成勞侖茲力(磁場力)。 三、帶電粒子集體變速運動,產生電磁輻射(電磁波),朝著四面八方傳遞。 電磁波進一步形成亞伯拉罕-勞侖茲力(輻射反應力)。
一個帶電粒子運動,同時受到三種力。
F = Fele + Fmag + Frad
一、庫侖力(電場力):電場產生電力。電力正比於電荷。
Coulomb's force (force from electric field): Fele
方便起見,引入電荷,將電力改寫成電場。
Coulomb's force (force from electric field): Fele = qEele define E = F/q
F: electric force 電力=力 q: electric charge 電荷 E: electric field 電場=電力/電荷
二、勞侖茲力(磁場力):磁場產生電力。電力正比於電荷。
安培右手開掌定則:電力切線分量/磁場/電力法線分量,其方向是右手拇指/四指/手掌。適合叉積。
Lorentz force (force from magnetic field): Fmag = q(v × B)
方便起見,引入電荷,將電力改寫成電場。
Lorentz force (force from magnetic field): Emag = v × B
F = q(v × B) F/q = v × B E = v × B define E = F/q
F: electric force 電力=力 N q: electric charge 電荷 C E: electric field 電場=電力/電荷 N/C B: magnetic field 磁場=電場/速度 (N/C)/(m/s) v: velocity 速度 m/s
方便起見,將電荷和速度送作堆。
Lorentz force (force from magnetic field): Fmag = qv × B
方便起見,引入體積,將電荷改寫成電荷密度。
Lorentz force (force from magnetic field): f = ρv × B
F = q(v × B) F/V = (q/V)(v × B) f = ρ(v × B) define f = F/V and ρ = q/V f = ρv × B
方便起見,將電荷密度乘以速度改寫成電流密度。
Lorentz force (force from magnetic field): f = j × B
f = ρv × B f = j × B define j = ρv
V: volume 體積 m³ f: force density 力密度 N/m³ ρ: charge density 電荷密度 C/m³ j: current density 電流密度 (C/m³)(m/s) = A/m²
補充一下。物理學家沒有替qv取名,也沒有替qB取名。
電流不是qv。電流不是電流密度乘以體積。電流是電流密度乘以面積。意義是電荷變化(每單位時間的電荷差異)。此詞彙源自Ampère。取名為流,卻沒移動。成為歷史共業。
磁力不是qB。磁力不是磁場乘以電荷。磁力是磁極產生的力,這不屬於電動力學的範疇。也有人認為磁力=勞侖茲力,但是那其實是電力。磁場與磁力沒有效仿電場與電力的關係。成為歷史共業。
electric current: I = jA = d/dt q I/A = j = ρv
j: current density 電流密度 (C/m³)(m/s) = A/m² A: area 面積 m² I: electric current 電流 C/s = A
三、亞伯拉罕-勞侖茲力(輻射反應力):電磁波產生電力。
一個帶電粒子突然改變速度,導致隔壁帶電粒子隨之改變速度。一傳十、十傳百,產生波。
變速運動產生電磁波,朝著四面八方傳遞,傳遞速度接近光速。注意到,電磁波傳遞速度不是帶電粒子速度,前者通常比閃電還快,後者通常比匍匐前進還慢。
以車潮做比方。帶電粒子速度:人人車速都很慢,彼此距離都很近。電磁波傳遞速度:一旦有人急踩煞車,一瞬間所有後車依序跟著急踩煞車。電磁波傳遞方向:車潮是縱波,電磁波是橫波。
Abraham–Lorentz force (radiation reaction force): Frad = (1/4πε₀) (2/3) (q²/c³) (d³/dt³ x)
x⃛: jerk 加加速度 m/s³ c: speed of light 光速 m/s
輻射反應力仍有疑點。輻射反應力與等效原理併用將產生矛盾。
https://en.wikipedia.org/wiki/Abraham–Lorentz_force https://en.wikipedia.org/wiki/Paradox_of_radiation_of_charged_particles_in_a_gravitational_field
補充一下。日常生活口語當中,電線裡面的電流速度,在電動力學當中,對應到電磁波傳遞速度。不是qV也不是I,跟電流無關。
electrostatics
帶電粒子集體沒有運動,產生常數電場(靜電場)。
高斯定律(靜電場定律):電力正比於截面的電荷濃度。電荷越濃,電力越多。
ε₀是物理常數,稱作真空電容率。ε₀ = 8.854 × 10⁻¹²。
Gauss's law: F = (1/ε₀)(q/l)²
方便起見,引入面積,將電力改寫成電力通量。
電力乘以面積,得到電力通量。電力通量取決於一單位電荷產生的電力通量(物理常數1/ε₀)與電荷平方(變數q²)。
Gauss's law: FA = (1/ε₀)q²
方便起見,物理量改為向量。面積向量朝向法線方向。
電力與面積的點積,得到電力通量。
Gauss's law: F∙A = (1/ε₀)q²
方便起見,式子兩側同除以電荷,將電力改寫成電場。
Gauss's law: E∙A = (1/ε₀)q define E = F/q
方便起見,式子兩側同對體積微分,將電荷改寫成電荷密度。
Gauss's law: ∇∙E = ρ/ε₀ define ρ = q/V = ∂q/∂V (V is constant)
l length 長度 m A area 面積 m² V volume 體積 m³ q charge 電荷 C ρ charge density 電荷密度 C/m³ F electric force 電力=力 N E electric field 電場=電力/電荷 N/C F∙A 電力通量 Nm² E∙A electric flux 電通量 Nm²/C ∇∙E 電場散度 N/Cm² ε₀ permittivity 真空電容率 Nm²/C² of free space
靜電位勢條件:∇×E = 0的情況下,E存在純量位勢。我不知道∇×E = 0的物理意義,也許是動量守恆。
electrostatics: ∇×E = 0
靜電場公式:∇×E = 0的情況下,E存在純量位勢。得以套用散度反運算。
Helmholtz decomposition theorem: E(x) = (1/4πε₀) ∭ (ρ ∙ (x-x')/‖x-x'‖³) dV' where dV' = dxₓ' dx' dx'
方便起見,將位置差距改寫成移位,將積分單元挪到左邊。
Helmholtz decomposition theorem: E(x) = (1/4πε₀) ∭ {ρ dV' ∙ r'/‖r'‖³} where r' = x - x' and dV' = dxₓ' dx' dx'
當電荷密度只存在於一點,可以把積分結果推導出來。
Helmholtz decomposition theorem for a point charge: E = (1/4πε₀) q (r/‖r‖³) = (1/4πε₀) q (r̂/‖r‖²)
r̂: unit vector of r 單位向量 ‖r‖: length of r 向量長度
庫侖定律:兩個帶電粒子相引,引力正比於電荷相乘、反比於距離平方。宛如牛頓萬有引力,但是物理量不是質量、而是電荷。
Coulomb's law (force between two point charges): F = kq₁q₂r̂/‖r‖² where k = 1/(4πε₀)
F: electric force 電力=力 q: electric charge 電荷 x: position 位置 r: displacement 移位 π: 3.14159... 圓周率 ε₀: permittivity of free space 真空電容率
或者簡單來說:球面的電力通量,在球心設置一個假想電荷。
FA = (1/ε₀)q² Gauss's law ∮FdA = F(4πr²) = (1/ε₀)q² surface integral over sphere F = (1/ε₀)q²/(4πr²) = kq²/r² define k = 1/(4πε₀) F = kq²r̂/‖r‖² scalar r → vector r F = kq₁q₂r̂/‖r‖² test charge at sphere center
magnetostatics
帶電粒子集體等速運動,產生常數磁場(靜磁場),繞著運動方向逆時針旋轉。
安培定律(靜磁場定律):qB正比於截面的電荷濃度乘以速度。電荷越濃,速度越快,qB越多。qB可以想成是磁力線。
μ₀是物理常數,稱作真空磁導率。μ₀ = 4π × 10⁻⁷。
Ampère's law: qB = μ₀(q/l)²v
方便起見,引入面積。
Ampère's law: A(qB) = μ₀q²v
方便起見,物理量改為向量。面積向量朝向法線方向。
Ampère's law: A×(qB) = μ₀q²v
方便起見,先前流程重跑一遍。
Ampère's law: A×B = μ₀qv (A/V)×B = μ₀(q/V)v ∇×B = μ₀ρv
方便起見,引入電流密度。
Ampère's law: ∇×B = μ₀j
l length 長度 m A area 面積 m² V volume 體積 m³ q charge 電荷 C ρ charge density 電荷密度 C/m³ j current density 電流密度 (C/m³)(m/s) qB /人◕ ‿‿ ◕人\ N/(m/s) B magnetic field 磁場 (N/C)/(m/s) A×B 面積與磁場的叉積 (Nm²/C)/(m/s) ∇×B 磁場旋度 (N/Cm²)/(m/s) μ₀ permeability 真空磁導率 Ns²/C² of free space
靜磁位勢條件:∇∙B = 0的情況下,B存在向量位勢。我不知道∇∙B = 0的物理意義,也許是電荷守恆。
magnetostatics: ∇∙B = 0
必歐-沙伐定律(靜磁場公式):∇∙B = 0的情況下,B存在向量位勢。得以套用旋度反運算。
Biot–Savart law: B(x) = (μ₀/4π) ∭ (j × (x-x')/‖x-x'‖³) dV' where dV' = dxₓ' dx' dx'
方便起見,將位置差距改寫成移位,將積分單元挪到左邊。
Biot–Savart law: B(x) = (μ₀/4π) ∭ {j dV' × r'/‖r'‖³} where r' = x - x' and dV' = dxₓ' dx' dx'
當電流密度只存在於一條電線,可以把體積積分改寫成線積分。
補充一下。電流不是電流密度乘以體積,電流是電流密度乘以面積。電流不是線積分結果,電流是線積分對象。電流不是向量,電流是純量。電流沒有方向、不會流動。成為歷史共業。
Biot–Savart law for constant electric current: B(x) = (μ₀/4π) ∫ {I dl × r'/‖r'‖³} where dl is the direction vector at x'
當電線是無限長直線,可以把積分結果推導出來。
Biot–Savart law for infinite straight constant electric current: B = μ₀I/2πd
B(x) = (μ₀/4π) ∫ {I dl × r'/‖r'‖³} = (μ₀/4π) ∫ {I dl -w/‖r'‖³} r' = -(l+w) and l⟂w = (μ₀/4π) ∫ {I dl -w/sqrt(l²+w²)³} = (μ₀/4π) (I/sqrt(l²+w²)) = μ₀I/2π‖r'‖
安培力定律:兩條平行電線的勞侖茲力。
Ampère's force law (force between two parallel currents): F/L = μ₀I₁I₂/2πd
ρ: charge density 電荷密度 j: current density 電流密度 x: position 位置 r: displacement 移位=位置-位置 I: electric current 電流=電流密度X面積 π: 3.14159... 圓周率 μ₀: permeability of free space 真空磁導率
安培力定律討論特殊情況:空間僅兩條直線有電力;空間處處有磁力,大致繞著直線旋轉。勞侖茲力討論一般情況:空間處處有電力、磁力。因此大家習慣直接討論勞侖茲力。
http://spmphysics.onlinetuition.com.my/2008/06/force-between-2-current-carrying.html https://www.schoolphysics.co.uk/age16-19/Electricity%20and%20magnetism/Electromagnetism/text/Forces_between_currents/index.html https://phys.libretexts.org/Bookshelves/University_Physics/University_Physics_(OpenStax)/University_Physics_II_-_Thermodynamics_Electricity_and_Magnetism_(OpenStax)/12%3A_Sources_of_Magnetic_Fields/12.04%3A__Magnetic_Force_between_Two_Parallel_Currents
electromagnetic induction
方才討論靜電場和靜磁場。此處討論動電場和動磁場。
電場變化(動電場)產生磁場,磁場變化(動磁場)產生電場,合稱電磁感應。
安培-馬克士威定律(動電場定律):電生磁。電場變化等同磁場旋度。
Ampère–Maxwell law: ∇×B = μ₀j + ε₀μ₀ ∂/∂t E
ρ: charge density 電荷密度 j: current density 電流密度 ε₀: permittivity of free space 真空電容率 μ₀: permeability of free space 真空磁導率
法拉第定律(動磁場定律):磁生電。磁場變化等同電場旋度。
Faraday's law: ∇×E = -k ∂/∂t B
k是物理常數,沒有特別取名,恰是1。源自電磁波方程式。
一、動電場定律、動磁場定律,兩式聯立,取旋度,得到電磁波方程式。其係數包含ε₀、μ₀、k。二、進行物理實驗,測量ε₀、μ₀。三、假定電磁波傳遞速度是光速c。四、反向推導得到k=1。
electromagnetic wave equation: ∂²/∂t² B = (1/ε₀μ₀k) ∂²/∂x² B where 1/(ε₀μ₀k) = c²
c: speed of light 光速
https://www.pas.rochester.edu/~stte/phy415F21/units/unit_1-3.pdf https://www.feynmanlectures.caltech.edu/II_18.html
electric energy
電動力學當中,大家只討論能量,不討論功率(能量變化)。
法拉第定律(動磁場定律):磁場變化產生電能。
方便起見,引入積分,改寫成環路的電動勢、環面的磁通量。
Faraday's law: ∮E∙dl = - ∂/∂t ∫B∙dA
電動勢定義為電場與線段的點積。
electromotive force: ℰ = ∫E∙dl
磁通量定義為磁場與面積的點積。
magnetic field flux: 𝛷 = ∫B∙dA
energy 能量 J = Nm work 功=能量差異 J = Nm power 功率=功/時間 W = J/s action 作用量=功X時間 Js
electric field 電場 N/C electromotive force 電動勢 V = J/C megnetic field 磁場 T = (J/C)s/m² magnetic flux 磁通量 Wb = (J/C)s
electric potential 電位=位能/電荷 V = J/C voltage 電壓=電位差異 V = J/C
補充一下。英文electromotive force,中文電動勢。定義是位能差異除以電荷(電位差異)。意義是每單位電荷的功。此詞彙源自Volta,被Maxwell引用。取名為力,其實是功。成為歷史共業。
electrical resistivity and conductivity
電動力學當中,介質稱作導體。
歐姆定律:帶電粒子運動,受到介質阻礙,速度下降一定比例。宛如庫侖摩擦定律,但是沒有區分動靜摩擦力,機制不同。
Ohm's law (electric current through conductor) E = (1/σ) j
方便起見,將電阻率(1/σ)改寫電導率σ。
Ohm's law (electric current through conductor) j = σ E
E: electric field 電場 j: current density 電流密度 1/σ: electrical resistivity 電阻率 σ: electrical conductivity 電導率
https://en.wikipedia.org/wiki/Drude_model
討論導體的情況下,帶電粒子設定為自由電子。自由電子的速度,稱作漂移速度。漂移速度通常很慢,一小時走一公尺。
方便起見,將電導率σ改寫電子遷移率μ,將電流密度j改寫成漂移速度v。
Ohm's law: v = μ E
j = σE j = ρv = qnv = qnμE σ = qnμ μ = σ/qn
μ: electron mobility 電子遷移率 v: drift velocity 漂移速度=速度 j: current density 電流密度=每單位體積的電荷速度 ρ: charge density 電荷密度=每單位體積的電荷 n: charge carrier density 載子密度=每單位體積的載子 q: charge per carrier 每單位載子的電荷(不是之前的q)
經典的微分方程式:magnetohydrodynamics
集大成。
Maxwell's equations 電磁場 electromagnetic wave equation 電磁波 equation of motion of charged particle 電磁砲 induction equation 電磁牆 magnetohydrodynamic equations 電磁流
Maxwell's equations
專著《A Student's Guide to Maxwell's Equations》。
「電磁方程組」。科學家們先後發現各式各樣的電磁關係式,由Maxwell集結成一套完整理論,由Heaviside精煉成散度與旋度。
大致來說:靜電場、靜磁場、動電場、動磁場、動量守恆、電荷守恆,隨便抓了幾個湊在一起。
⎧ ∇∙E = ρ/ε₀ Gauss's law ⎨ ∇∙B = 0 ⎪ ∇×E = - ∂/∂t B Faraday's law ⎩ ∇×B = μ₀j + ε₀μ₀ ∂/∂t E Ampère–Maxwell law
這些定律都有兩種寫法:積分方程式、微分方程式。利用散度定理或旋度定理彼此轉換。
裡面摻了靜磁位勢條件∇∙B = 0,我不知道原因。我讀過的文獻都沒有提到原因。各位有空可以觀落陰問一下Maxwell。很多文獻稱之為高斯磁定律,但是這個名稱應該是後人瞎掰的。
Griffiths的電動力學教科書,利用必歐-沙伐定律、常數電流,強行推導∇∙B = 0。然而靜磁場才有常數電流,動磁場不見得有。
electromagnetic wave equation
「電磁波方程式」。電場振盪產生波。磁場隨之振盪產生波。
電/磁/波,其方向是右手四指/手掌/拇指。形成橫波。
電磁方程組取旋度,形成波動方程式,分為電場版本和磁場版本。電磁感應成立的情況下,兩個版本等價,實際上只有一道方程式。c是光速。
∂²/∂t² E = c² ∂²/∂x² E where c² = 1/(ε₀μ₀) ∂²/∂t² B = c² ∂²/∂x² B
equation of motion of charged particle
「帶電粒子運動方程式」。運動方程式是力與各種物理量的方程式,此處討論帶電粒子。物理量是電荷、電場、速度、磁場。
F = q (E + v × B)
帶電粒子的力=電場力+磁場力。也有人整包稱作勞侖茲力。
方便起見,捨棄輻射反應力。其數值相對較小,無傷大雅。
F = Fele + Fmag F = qEele + qEmag define E = F/q F = qE + q(v × B) Lorentz's law: Emag = v × B F = q (E + v × B) f = ρ (E + v × B) define f = F/V and ρ = q/V f = ρE + (j × B) define j = ρv
知名應用:磁軌砲、線圈砲、魔貫光殺砲。通稱電磁砲。
磁軌砲railgun:
https://science.howstuffworks.com/rail-gun.htm
https://sputnikglobe.com/20101216/161806525.html
https://commons.m.wikimedia.org/wiki/File:JGSDF_Railgun_01.png
線圈砲coilgun:
https://commons.wikimedia.org/wiki/File:Coilgun_animation.gif
https://www.researchgate.net/figure/Structure-of-a-three-stage-coilgun_fig1_293112575
魔貫光殺砲special beam cannon:
(゚Д゚)σ 弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌弌⊃
induction equation
「感應方程式」。重點在於將電阻改寫成磁擴散。
∂/∂t B - ∇×(v×B) - η∆B = 0 where η = 1/μ₀σ
∆B: magnetic diffusion 磁擴散 η: magnetic diffusivity 磁擴散率
原理:帶電粒子運動方程式、歐姆定律、安培定律、法拉第定律,四式聯立。
方便起見,捨棄安培-馬克士威定律,採用安培定律。省略的那一項,數值相對較小,無傷大雅。
⎧ F = q (E + v × B) equation of motion of charged particle ⎨ j = σ E Ohm's law ⎪ ∇×B = μ₀j Ampère's law ⎩ ∇×E = - ∂/∂t B Faraday's law
F = q (E + v × B) equation of motion of charged particle Eeff = E + v × B effective electric field j = σ (E + v × B) apply Ohm's law ∇×B = μ₀σ (E + v × B) apply Ampère's law E = (1/μ₀σ) ∇×B - v × B ∇×((1/μ₀σ) ∇×B - v × B) = - ∂/∂t B apply Faraday's law ∂/∂t B + (1/μ₀σ) ∇×∇×B - ∇×(v×B) = 0 ∂/∂t B - (1/μ₀σ) ∆B - ∇×(v×B) = 0 since ∇×∇×B = -∆B
magnetohydrodynamic equations(MHD equations)
專著《Introduction to Modern Magnetohydrodynamics》。
「磁流體方程組」。省略動力學三字。帶電粒子流動,產生電磁場。用於模擬電漿運動,例如晶圓蝕刻、太陽風與磁暴。
⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of charge ⎪ ∂/∂t ρv + ∇∙(ρv⊗v) conservation of current ⎪ - ρE - j×B + ρg + ∇p + ∇∙σ = 0 ⎨ ∂/∂t ρe + ∇∙(ρev) conservation of energy ⎪ - ρE∙v - j×B∙v + ρg∙v + ∇∙(pv) + ∇∙(σ∙v) = 0 ⎪ ∂/∂t (pρ⁻ᵞ) = 0 adiabatic process (γ = 5/3) ⎪ ∂/∂t B - ∇×(v×B) - η∆B = 0 induction equation (η = 1/μ₀σ) ⎩ ∇∙B = 0
原理:電荷密度連續方程式(電荷守恆)、電流密度連續方程式(電流守恆)、電能密度連續方程式(電能守恆)、電磁方程組(電磁感應)、帶電粒子運動方程式(力)、理想氣體狀態方程式之絕熱過程(壓力)、歐姆定律(應力),通通聯立。
電力包含電場力(庫侖力)、磁場力(勞侖茲力)。電流守恆考慮電場力密度ρE、磁場力密度j×B。作為恢復力則帶負號。
另外,當重力不再是常數,大家習慣將重力改寫成重力位勢。
g = ∇φ
游離氣體,英文「plasma」,日文「電離気体」,繁中「電漿」,簡中「等离子体」。
講義《Astrophysical and Space Plasma Simulations》。
物質狀態分為固體、液體、氣體、電漿。柔體方程組描述固體運動,流體方程組描述氣體運動和液體運動,磁流體方程組描述電漿運動。這下全都講一遍了。
ideal MHD equations
專著《Computational Methods in Plasma Physics》。
「理想磁流體方程組」。追加限制條件:完美導體。
現實世界沒有完美導體。主要用來簡化方程組。
完美導體:無視電阻。電導率σ趨近無限大,電場E趨近零。
perfect conductor (ideal conductor): σ→∞ and E→0
https://eng.libretexts.org/Bookshelves/Electrical_Engineering/Electro-Optics/Book:_Electromagnetics_I_(Ellingson)/06:_Steady_Current_and_Conductivity/6.03:_Conductivity
理想歐姆定律:無視電阻。
ideal Ohm's law: E + v × B = 0
F = q (E + v × B) equation of motion of charged particle Eeff = E + v × B effective electric field j = σ (E + v × B) apply Ohm's law j/σ = E + v × B 0 = E + v × B perfect conductor: σ→∞
https://warwick.ac.uk/fac/sci/physics/research/cfsa/people/valery/teaching/khu_mhd/KHU_mhd_handout.pdf
理想感應方程式:無視電阻。無視磁擴散。
ideal induction equation: ∂/∂t B - ∇×(v×B) = 0
理想磁流體方程組:無視電阻。無視電場力、磁擴散。
ideal MHD equations: ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 conservation of charge ⎪ ∂/∂t ρv + ∇∙(ρv⊗v) conservation of current ⎪ - j×B + ρg + ∇p + ∇∙σ = 0 ⎨ ∂/∂t ρe + ∇∙(ρev) conservation of energy ⎪ - j×B∙v + ρg∙v + ∇∙(pv) + ∇∙(σ∙v) = 0 ⎪ ∂/∂t (pρ⁻ᵞ) = 0 adiabatic process (γ = 5/3) ⎪ ∂/∂t B - ∇×(v×B) = 0 ideal induction equation ⎩ ∇∙B = 0
方便起見,將電流j改寫成磁場B,減少未知函數。
ideal MHD equations: ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎪ ∂/∂t ρv + ∇∙(ρv⊗v) ⎪ + ∇(½(B∙B)/μ₀) - ∇∙((B⊗B)/μ₀) + ρg + ∇p + ∇∙σ = 0 ⎨ ∂/∂t ρe + ∇∙(ρev) ⎪ + ∇∙((½(B∙B)/μ₀)v) - ∇∙((B⊗B)/μ₀)∙v + ρg∙v + ∇∙(pv) + ∇∙(σ∙v) = 0 ⎪ ∂/∂t (pρ⁻ᵞ) = 0 ⎪ ∂/∂t B - ∇×(v×B) - η∆B = 0 ⎩ ∇∙B = 0 magnetic pressure: ½(B∙B)/μ₀ magnetic stress: (B⊗B)/μ₀
方便起見,改寫成守恆律,以便使用有限體積法。
梯度、旋度,一律改寫成散度。
ideal MHD equations: ⎧ ∂/∂t ρ + ∇∙(ρv) = 0 ⎪ ∂/∂t ρv + ∇∙(ρv⊗v + ½(B∙B)I/μ₀ - (B⊗B)/μ₀ + ρφI + pI + σ) = 0 ⎨ ∂/∂t ρe + ∇∙(ρev + (½(B∙B)/μ₀)v - ((B⊗B)/μ₀)∙v + ρφv + pv + σ∙v) = 0 ⎪ ∂/∂t (pρ⁻ᵞ) = 0 ⎪ ∂/∂t B + ∇∙(v⊗B - B⊗v - η∇B) = 0 ⎩ ∇∙B = 0
∇p = ∇∙(pI) where I is identity matrix ∇×(v×B) = ∇∙(B⊗v - v⊗B)
最後推導一下磁壓力和磁應力。
無視電場力密度ρE。考慮磁場力密度j×B。
Lorentz force density: f = j × B
方便起見,捨棄安培-馬克士威定律,採用安培定律。
Ampère's law: μ₀j = ∇×B
磁場力密度可以拆成兩項:磁壓力、磁應力。
磁應力作為摩擦力則帶負號。
(μ₀j)×B = (∇×B)×B j×B = ((∇×B)×B)/μ₀ -j×B = (B×(∇×B))/μ₀ -j×B = (½∇(B∙B) - B∙∇B)/μ₀ -j×B = ∇(½(B∙B)/μ₀) - (B∙∇B)/μ₀ -j×B = ∇(½(B∙B)/μ₀) - ∇∙(B⊗B)/μ₀ when ∇∙B = 0
Lorentz force density: j×B force density from pressure: ∇(½(B∙B)/μ₀) force density from stress: (B∙∇B)/μ₀ force density from stress (under magnetostatics): (B∙∇B)/μ₀ = ∇∙(B⊗B)/μ₀ when ∇∙B = 0 magnetic pressure: ½(B∙B)/μ₀ magnetic stress: (B⊗B)/μ₀
使用了兩道數學公式。
½∇(B∙B) = B×(∇×B) + B∙∇B
∇∙(B⊗B) = (B∙∇)B + B(∇∙B) ∇∙(B⊗B) = B∙∇B when ∇∙B = 0
https://en.wikipedia.org/wiki/Vector_calculus_identities
adiabatic process
專著《Magnetohydrodynamics of Laboratory and Astrophysical Plasmas》。
絕熱過程是熱能沒有傳遞、熱能處處不變。磁流體方程組當中,絕熱過程用來描述壓力p。
pρ⁻ᵞ = p/ρᵞ = constant adiabatic process ∂/∂t (pρ⁻ᵞ) = 0 adiabatic process
我們可以追加限制條件,例如等壓過程、等容過程、等溫過程、等熵過程,以便簡化方程組。
如果是等容過程,存在關係式p = (γ−1)ρeᵢ。將壓力p改寫成密度ρ和比內能eᵢ,減少未知函數。
p = (γ−1)ρeᵢ
如果是等溫過程,熱能守恆且等溫過程則熵守恆。將絕熱過程改寫成熵守恆,無法減少未知函數,並沒有甚麼卵用。
∂/∂t ρs + ∇∙(ρsv) = 0 conservation of entropy s = cᵥ ln(pρ⁻ᵞ) + constant specific entropy
經典的微分方程式:linearization
有些經典的微分方程式,實施線性化,恰好退化成波動方程式。
shallow water wave equation 淺水波 acoustic wave equation 聲波
線性化:非線性微分方程式,強行拆開變數,成為穩態與差異量,成為線性微分方程式。需要假定差異量遠少於穩態。
nonlinear differential equation: df df —— + f —— + g = 0 dt dx linearization f = f₀ + f̃: d d —— (f₀ + f̃) + (f₀ + f̃) —— (f₀ + f̃) + g = 0 dt dx steady state f₀: d d —— f₀ + f₀ —— f₀ + g = 0 dt dx subtraction: df̃ df̃ df₀ df̃ —— + f₀ —— + f̃ ——— + f̃ —— = 0 dt dx dx dx assume f̃ << f₀: (product of differentials equals zero) df̃ df̃ df₀ —— + f₀ —— + f̃ ——— = 0 dt dx dx linear differential equation with variable f̃ and constant f₀: df̃ ⎛ ⎞ df̃ ⎛ df₀ ⎞ —— + ⎜ f₀ ⎟ —— + ⎜ ——— ⎟ f̃ = 0 dt ⎝ ⎠ dx ⎝ dx ⎠
https://www.math.arizona.edu/~kglasner/math456/fixedpointlin.pdf
shallow water wave equation
「淺水波方程式」。淺水方程組,實施線性化,退化成波動方程式。
∂²/∂t² h̃ - c² ∆h̃ = 0 where c² = gh₀
linearization: h = h₀ + h̃ v = v₀ + ṽ
密度連續方程式、速度平流方程式、流體靜力平衡,三式聯立,實施線性化。
1. continuity equation for mass conservation: ∂/∂t h + ∇∙(hv) = 0 ∂/∂t (h₀ + h̃) + ∇∙((h₀ + h̃)(v₀ + ṽ)) = 0 ∂/∂t h̃ + ∇∙(h₀ ṽ) = 0 2. continuity equation for momentum conservation: (advection of velocity) D/Dt v + g∇h = 0 ∂/∂t v + v∇∙v + g∇h = 0 ∂/∂t (v₀ + ṽ) + v∇∙v + g∇(h₀ + h̃) = 0 ∂/∂t ṽ + g∇h̃ = 0
第二式當中,假設水深變化極小,因而省略對流加速度。
let convective acceleration v∙∇v ≈ 0 when height perturbation h̃ << h₀
acoustic wave equation
「聲波方程式」。均勻流體,恰好讓壓力場振盪產生波。
∂²/∂t² p̃ - c² ∆p̃ = 0 where c² = ∂p/∂ρ = γp₀/ρ₀
linearization: p̃ = p - p₀ ρ̃ = ρ - ρ₀
p: total pressure p₀: static pressure (equilibrium pressure) p̃: acoustic pressure (pressure perturbation) ρ: total density ρ₀: static density (equilibrium density) ρ̃: density perturbation c: propagation speed in medium γ: ratio of specific heat capacity
密度連續方程式、速度平流方程式、理想氣體狀態方程式,三式聯立,實施線性化。
第二式省略重力、引入壓力、省略應力,針對速度實施線性化(省略對流加速度),稱作linearized Euler's equation。
第三式針對壓力實施線性化(一階泰勒近似),稱作acoustic equation of state。
major assumptions for medium of acoustic wave: (1) perfect elastic: σ = Eε (2) isotropic: σ = -pI + 2μD where D = ∇v + (∇v)ᵀ (3) homogeneous: ρ = constant (4) dissipationless: (4-1) inviscid: μ = 0 => σ = -pI => ∇∙σ = -∇p (4-2) adiabatic: p = p(ρ) (5) neglect gravitational force: g = 0 (6) neglect convective acceleration: v∙∇v = 0 (7) compressible: ∇∙v ≠ 0 (8) irrotational: ∇×v = 0
1. continuity equation for mass conservation: ∂/∂t ρ + ∇∙(ρv) = 0 ∂/∂t ρ + ρ ∇∙v = 0 homogeneous: ρ = constant ∂/∂t ρ̃ + ρ₀ ∇∙v = 0 perturbation ∂²/∂t² ρ̃ + ρ₀ ∂/∂t ∇∙v = 0 time derivative 2. continuity equation for momentum conservation: (advection of velocity) D/Dt v + g + ∇p/ρ = 0 advection of velocity ∂/∂t v + v∙∇v + g + ∇p/ρ = 0 material derivative ∂/∂t v + v∙∇v + ∇p/ρ = 0 neglect gravitational force ∂/∂t v + ∇p/ρ = 0 neglect convective acceleration ρ ∂/∂t v = -∇p ρ₀ ∂/∂t v = -∇p̃ perturbation ρ₀ ∂/∂t ∇∙v = -∆p̃ divergence 3. ideal gas equation of state: p = ρrT p = p(ρ) p is function of ρ p = p₀ + (∂p/∂ρ)(ρ-ρ₀) Taylor series + ½(∂²p/∂ρ²)(ρ-ρ₀)² + ... p-p₀ = (∂p/∂ρ)(ρ-ρ₀) first-order Taylor approximation p̃ = (∂p/∂ρ)ρ̃ perturbation p̃ = c²ρ̃ define c² = ∂p/∂ρ = γp₀/ρ₀
經典的微分方程式:quantization
Schrödinger's equation 波粒對偶
Schrödinger's equation
「薛丁格方程式」。我沒有學會。
phase rotation equation ḟ = 𝑖f fₜ = 𝑖f heat equation ḟ = ∆f fₜ = fₓₓ + f + f Schrödinger's equation ḟ = 𝑖∆f fₜ = 𝑖(fₓₓ + f + f)
可以移項變成空間梯散、負號、虛數單位、時間微分。
Schrödinger's equation ∆f = -𝑖ḟ
經典的微分方程式:soliton
符號解不動點。
Korteweg–de Vries equation 孤立波 Boussinesq's equation 孤立波
Korteweg–de Vries equation
uₜ + uₓₓₓ - 6u uₓ = 0
符號解是solitary wave與cnoidal wave。
https://data-ww3.ifremer.fr/BIB/Miles_JFM1981.pdf
記得介紹一下dispersion。
相速、群速。
angular frequency ω = 2π / period angular wave number k = 2π / wavelength phase velocity ω/k = vp group velocity ∂ω/∂k = vg
phase velocity / group velocity https://www.ess.uci.edu/~yu/class/ess228/lecture.5.waves.2017.pdf https://www.ess.uci.edu/~yu/ess228.html
Boussinesq's equation
逕自修改微分方程式,方便模擬波浪。大家發揮創意,製作一堆奇奇怪怪的微分方程式,通通叫做Boussinesq's equation。
uₜₜ - uₓₓ = uₓₓₓₓ + (u²)ₓₓ
https://en.wikipedia.org/wiki/Boussinesq_approximation_(water_waves) https://books.google.com.tw/books?id=UkIrDwAAQBAJ&pg=PA91 https://commons.wikimedia.org/wiki/File:Celeris_Wave_Model.gif
Boussinesq approximation是一些額外假設,用於簡化微分方程式。其中包括:
(1) incompressible 不可壓縮(速度場的散度為零) (2) irrotational 不可旋轉(速度場的旋度為零) (3) inviscid 無黏性(沒有二階偏微分項) (4) Taylor expansion of velocity potential of z-coordinate 速度位勢場針對Z軸求泰勒級數 (5) neglect higher-order terms 泰勒級數只保留低階項
經典的微分方程式:discontinuity
符號解不連續。
Burgers's equation 衝擊波 traffic-flow equation 衝擊波 Friedlander's equation 爆炸波
Burgers's equation
wave breaking time。
https://en.wikipedia.org/wiki/Breaking_wave
https://physics.stackexchange.com/questions/76852/
Euler–Poisson equation。組合拳。
traffic-flow equation
http://faculty.washington.edu/rjl/riemann_book/Traffic_flow.html
交通車流問題。車輛不會互相穿越,整個過程都是函數。
經典的微分方程式:equilibrium
符號解趨近穩態。萬物消長,走向平衡。
nodal equilibrium equations 建築結構 equation of motion of vibration 物理運動 Lotka–Volterra equations 生態消長 Hodgkin–Huxley model 生理機制
nodal equilibrium equations
「節點平衡方程組」。萬物靜止,保持平衡。
方程組清單請見課程講義:
土木工程之結構分析,已經發展一套分析靜態結構的方法。其中跟本文有關的方法是direct stiffness method:運用虎克定律F = kx計算位移量。
所有元件/所有取樣地點,皆滿足虎克定律。列出所有等式,化作線性方程組,得到大型稀疏矩陣。矩陣求解,得到每個元件/每個取樣地點的位移量。整件事情可以想成是:給定常微分方程式,求得數值解。這個方法最初稱作有限元素法,後來又稱作矩陣法。
土木工程之結構分析之有限元素法,應用數學之微分方程之有限元素法,後者源自前者,不過後者已經發展為完全不同的事物。
equation of motion of vibration
「振動運動方程式」。彈簧運動。
合力=運動力+阻尼力+彈簧力。
F(t) = m d²/dt² x(t) + c d/dt x(t) - k x(t) where m c k are constants
F = mẍ + cẋ + kx F: force ẍ: acceleration ẋ: velocity x: displacement (or position when x₀ = 0) m: mass c: damping coefficient k: spring constant
彈簧位置符號解:
Lotka–Volterra equations
「掠食者-獵物方程式」。掠食者與獵物的生態消長。
例如狐狸與兔子的生態消長。
一、兔子變多,狐狸容易捕食,導致狐狸容易生存繁殖。 二、狐狸變多,兔子容易被捕食,導致兔子不易生存繁殖。 三、兔子變少,狐狸不易捕食,導致狐狸不易生存繁殖。 四、狐狸變少,兔子不易被捕食,導致兔子容易生存繁殖。 一二三四,反覆循環。
未知函數是獵物x、掠食者y,處處極限環,不會產生混沌。
⎰ d/dt x(t) = a x(t) - b x(t) y(t) ⎱ d/dt y(t) = c x(t) y(t) - d y(t) where a b c d are constants
⎰ ẋ = ax - bxy ⎱ ẏ = cxy - dy x: population density of prey (e.g. rabbit) y: population density of predator (e.g. fox)
Hodgkin–Huxley model
Hodgkin–Huxley model:離子通道模型。利用電路學描述細胞膜的離子通道如何開啟關閉。
一、活化量模型:化學反應之可逆反應。
α ┌─────┐────→┌────┐ │close│ │open│ └─────┘←────└────┘ 1-n β n ṅ = α (1-n) - β n
n: ion channel subunit activation 離子通道的活化量(0到1) α: forward transport rate 正向傳輸率 β: backward transport rate 逆向傳輸率
二、離子通道模型:電位、電流。
考慮鉀離子通道、鈉離子通道、洩漏離子通道。
未知函數是電位Vₘ、活化量n,形成極限環。
⎧ I = Iₘ + Iᴋ + Iɴₐ + Iₗ ⎪ Iₘ = Cₘ V̇ₘ ⎪ Iᴋ = gᴋ n⁴ (Vₘ - Vᴋ) ⎨ Iɴₐ = gɴₐ m³ h (Vₘ - Vɴₐ) ⎪ Iₗ = gₗ (Vₘ - Vₗ) ⎪ ṅ = Vₘ (αₙ (1-nₙ) - βₙ nₙ) ⎪ ṁ = Vₘ (αₘ (1-nₘ) - βₘ nₘ) ⎩ ḣ = Vₘ (αₕ (1-nₕ) - βₕ nₕ)
ₘ: membrane 細胞膜 ᴋ: potassium ion channel 鉀離子通道 ɴₐ: sodium ion channel 鈉離子通道 ₗ: leakage ion channel 洩漏離子通道 I: electric current 電流 V: electric potential 電位 C: capacitance per unit area 電容率 g: conductance per unit area 電導率 n: potassium channel subunit activation 鉀離子通道活化量 m: sodium channel subunit activation 鈉離子通道活化量 h: sodium channel subunit inactivation 鈉離子通道不活化量 α: forward transport rate 正向傳輸率 β: backward transport rate 逆向傳輸率
FitzHugh–Nagumo model:簡化版本。未知函數是V與W。
⎰ V̇ = V - V³/3 - W - I ⎱ Ẇ = a(V + b - cW) where a = 0.08 b = 0.7 c = 0.8
V: membrane potential 細胞膜電位 W: recovery variable 活化量/不活化量 I: stimulus current 刺激電流
Van der Pol oscillator:再簡化版本。收斂至一個極限環。
經典的微分方程式:chaos
符號解沒有穩態。亂中有序。
Newton's law of universal gravitation 行星運動 Lorenz's equations 大氣對流 Mackey–Glass equation 細胞濃度 Rabinovich–Fabrikant equations 數學現象
Newton's law of universal gravitation
牛頓萬有引力定律:兩體相引,引力正比於質量相乘、反比於距離平方。
Gm₁m₂ F = ————— where r = x₂ - x₁ r²
下面第一式,以第一物作為基準,描述第二物作用力。相引導致位置靠近,導致第一物作用力帶正號、第二物作用力帶負號。
⎧ Gm₁m₂ ⎪ F₁₂ = - ————— where r₁₂ = x₂ - x₁ ⎨ r₁₂² ⎪ ⎩ F₂₁ = -F₁₂
位置x從純量改成向量。
⎧ Gm₁m₂ r₁₂ Gm₁m₂r₁₂ ⎪ F₁₂ = - —————— ————— = - ———————— where r₁₂ = x₂ - x₁ ⎨ ‖r₁₂‖² ‖r₁₂‖ ‖r₁₂‖³ ⎪ ⎩ F₂₁ = -F₁₂
Kepler problem:兩體相引,求得軌跡。
牛頓萬有引力定律、牛頓運動定律,兩者聯立,形成動態系統。
⎧ G m₁ m₂ (x₂ - x₁) Newton's law of ⎪ F₁₂ = - ————————————————— universal gravitation ⎪ ‖x₂ - x₁‖³ F = Gm₁m₂r/r³ ⎪ ⎪ G m₂ m₁ (x₁ - x₂) ⎪ F₂₁ = - ————————————————— = -F₁₂ ⎪ ‖x₁ - x₂‖³ ⎨ ⎪ d² ⎪ F₁₂ = m₂ ——— x₂ Newton's law of motion ⎪ dt² F = ma ⎪ ⎪ d² ⎪ F₂₁ = m₁ ——— x₁ ⎩ dt²
⎧ d² G m₂ (x₂ - x₁) ⎪ ——— x₂ = - —————————————— ⎪ dt² ‖x₂ - x₁‖³ ⎨ ⎪ d² G m₁ (x₁ - x₂) ⎪ ——— x₁ = - —————————————— ⎩ dt² ‖x₁ - x₂‖³
N-body problem:多體兩兩相引,求得軌跡。
N = 2有符號解。N ≥ 3形成混沌,無法寫成符號解。
⎧ d² G mᵢ (xᵢ - xⱼ) ⎨ ——— xᵢ = - sum —————————————— for all i ⎩ dt² ⁱ ‖xᵢ - xⱼ‖³
Jeans's equation可以用來估計位置是否塌陷。
virial theorem可以用來檢查能量是否守恆。
Lorenz's equations
亂繞圓圈的路線。
⎧ ẋ = σ(y - x) ⎨ ẏ = x(ρ - z) - y ⎩ ż = xy - βz
亂七八糟的路線。
Lorenz 96 model (Lorenz–Emanuel system) ẋᵢ = (xᵢ₊₁ - xᵢ₋₂)xᵢ₋₁ - xᵢ + F
經典的微分方程式:pattern
自然圖案,隱含規律。
Turing model Gray–Scott model
Turing model(Turing pattern)
各式各樣的參數,各式各樣的造型,造就大自然。
Gray–Scott model
經典的微分方程式:hydrodynamic instability
多種物質互動。天下大勢,分久必合,合久必分。
Ginzburg–Landau equation 剪力流 thin-film equation 摩擦流 Buckley–Leverett equation 二相流 Kuramoto–Sivashinsky equation 冷熱交融
Ginzburg–Landau equation
專著《Stability and Transition in Shear Flows》。
thin-film equation
Hele–Shaw equation https://www.nature.com/articles/ncomms1289
Kuramoto–Sivashinsky equation