
102
|
第六章
問題介紹
這一節主要是為了讓我們更深入理解本章即將解決的方程式,然而,就探索本
章其餘部分而言,瞭解這一節嚴格來說並非必要。如果你希望略過這一節,請
務必檢視過範例 6-1 和 6-2 的演算法,確實瞭解我們即將最佳化的程式碼。
另一方面,如果你讀過這一節,並且想要瞭解更多資訊,請參閱《
Numerical
Recipes
》( 第 3 版,William Press 等著,劍橋大學出版社)的第 17 章。
為了探索本章的矩陣與向量計算,我們將反覆地使用流體擴散的範例。擴散
(diffusion)是移動流體,並試圖讓它們均勻混合的機制之一。
在這一節裡,我們將探索擴散方程式(diffusion equation)背後的數學問題,看起來可
能有些複雜,但是別擔心!我們會迅速簡化這個問題,讓它更容易被理解。此外,務必
注意,雖然對我們正在解決的方程式具有基本的認識有助於本章的閱讀,但並非必要;
後續章節主要聚焦於程式碼的各種規劃,而不是方程式本身。不過,理解方程式將有助
於你洞悉如何最佳化你的程式碼。這基本上是真實的—瞭解程式碼背後的動機以及演算
法的錯綜複雜,將讓你深入洞察可能的最佳化方法。
一個簡單的擴散範例就是水裡頭的染料︰如果你在室溫下把幾滴染料放進水中,它將慢
慢擴散,直到完全與水融合。因為我們沒有攪動,水的溫度不會提高到足以產生對流,
擴散將是混合二種液體的主要過程。在以數值方法解決這些方程式時,我們挑選想要
的初始條件,並且能夠隨著時間持續演進,看看一段時間過後會是什麼模樣(參閱圖