1. 問題描述
本算例來自B站Up主“Red-Green鯉魚”的系列教程佩谣。本文主要介紹計算代數(shù)方程組的三種點迭代方法。
1.1. 泊松方程
含有二階偏導(dǎo)數(shù)的偏微分方程:
當時,上述方程被稱為拉普拉斯方程窄绒。許多物理過程都可以用泊松方程來描述,如熱傳導(dǎo)方程
在求解不可壓縮流動的NS方程時鹃愤,通常將已知壓力場代入動量方程來預(yù)估速度場抄瑟,然后將預(yù)估的速度場代入連續(xù)性方程中,由于預(yù)估的速度場中包含壓力梯度項藏鹊,因此代入連續(xù)性方程后會得到,即壓力泊松方程
1.2. 算例
令上述泊松方程的源項為如下形式:
其解析解為
比較數(shù)值解與解析解在定義域上的差別转锈。邊界條件為Dirichlet盘寡,邊界上的值由解析解求出。
2. 區(qū)域離散和方程離散
方向設(shè)置
個結(jié)點撮慨,編號從
竿痰,
方向上設(shè)置
個結(jié)點脆粥,編號從
,結(jié)點間距分別為
和
影涉,將
號結(jié)點記為
变隔,該結(jié)點上下左右四個結(jié)點分別記為
采用有限差分法計算泊松方程,二階偏導(dǎo)數(shù)項采用二階中心差分離散蟹倾,
令匣缘,則上式化為
2.1. 邊界條件
左邊界
右邊界
下邊界
上邊界
3. 代數(shù)方程組求解
上一篇文章介紹了代數(shù)方程組求解方法中的直接解法TDMA,本文介紹另一大類求解方法:迭代法喊式。迭代法的思想也可以概況為“預(yù)測-校正”孵户,給出初始值,通過不斷迭代逐步改進岔留,直到達到一定精度要求為止夏哭。
該方法需要首先構(gòu)造迭代方式;其次是所構(gòu)造的迭代序列是否收斂献联,如果收斂則要進一步提高收斂速度竖配。
迭代法可分為點迭代、塊迭代里逆、交替方向迭代法以及強隱迭代法进胯。在點迭代法中,每一步計算只能改進求解區(qū)域中一個結(jié)點的值原押,且該值是由一個顯函數(shù)形式由其余各點的已知值來確定胁镐,因而點迭代法又稱為顯式迭代法。
下面將討論點迭代法的三種實施方式诸衔。
3.1. 雅可比迭代
上式中上標為當前預(yù)測值盯漂,
為代入迭代方程后的校正值
3.2. 高斯-賽德爾迭代
在逐點計算過程中,和
點的值在本次迭代過程中已知笨农,因此將已知值代入迭代方程中
3.3. SOR迭代
Successive Over Relaxation就缆,逐次超松弛。SOR迭代法收斂的充要條件是松弛因子谒亦,當
時能夠起到加速收斂的效果竭宰。
當,SOR迭代退化為Gauss-Seidel. 在《Computational Methods for Fluid Dynamics》第四版5.3.3節(jié)給出了一些關(guān)于SOR的討論份招。
上述方程變換形式可得
其中為Gauss-Seidel法求出的值切揭。進一步移項,
用其他幾項表示锁摔,可以得出
能夠加速迭代伴箩,即縮小初始值變化到最終值所需時間。
3.4. 迭代收斂標準
本文使用如下標準來定義收斂標準
此處為全局結(jié)點個數(shù)鄙漏,上式表示結(jié)點平均相對偏差小于
時嗤谚,認為達到收斂。
為極小值怔蚌,防止分母為0
除此之外巩步,《數(shù)值傳熱學(xué)》還介紹了其他收斂標準。
3.5. 迭代法收斂的分析
《數(shù)值傳熱學(xué)》第二版7.4節(jié)寫道桦踊,對于如下形式的方程:
Jacobi與Gauss-Seidel迭代法收斂的一個充分條件是:系數(shù)矩陣不可約且按行或按列弱對角占優(yōu)椅野。其中“弱對角占優(yōu)”需滿足:
對各行成立,且其中至少對一行不等號成立籍胯。在本文的算例中竟闪,系數(shù)矩陣的第一行和最后一行對應(yīng)為不等號,其他各行均是等號成立杖狼,即
3.6. 上述迭代方法的計算結(jié)果
兩個方向各自的結(jié)點數(shù)
Method | Iteration number |
---|---|
Jacobi | 9141 |
GS | 5121 |
SOR, |
2065 |
SOR, |
403 |
Jacobi
Gauss-Seidel
SOR,
SOR,
Analytical solution