當線性方程組的規模比較大時,採用高斯消元法需要太多時間。這時就要採用迭代法求解方程組了。高斯消元法是一個O(n^3)的浮點運算的有限序列,在經過有限步計算之後理論上得到的是精確解(無捨入誤差時)。而迭代法在經過有限步迭代之後一般不產生精確解,迭代法在計算過程中逐漸減小誤差,當誤差小於容許值時停止迭代計算。方程組的係數矩陣是嚴格對角佔優矩陣時,迭代總是收斂的。
●Jacobi迭代法
對於方程組3u+v=5,u+2v=5,將其改寫為如下的形式
由於方程組的係數矩陣是嚴格對角佔優矩陣時,迭代一定收斂。使用初值[u0,v0]=[0,0]開始迭代,以下是迭代過程:
繼續迭代過程最終會收斂到解[1,2].這個迭代過程就是Jacobi迭代。
對於方程組u+2v=5,3u+v=5,由於方程組的係數矩陣不是嚴格對角佔優矩陣時,因此迭代不收斂。來看迭代過程:
設D表示係數矩陣A 的主對角部分,L表示A的主對角線下方部分,U表示A的主對角線上方部分。則A=D+L+U,AX=b可改寫為
對於上面的方程組3u+v=5,u+2v=5,寫成矩陣形式
迭代格式為
這與之前的迭代格式是一致的。
Fortran原始碼
☆☆☆ 往期相關 ☆☆☆
嚴格對角佔優矩陣
高斯消去法解線性方程組及MATLAB實現
高斯消去法的算法改進