1. 程式人生 > >有關線性方程組求解的理解

有關線性方程組求解的理解

線性方程粗求解無非是把增廣矩陣變成上三角矩陣、對角矩陣或階梯矩陣。其求解過程大致相同,略有不同,對角矩陣少了回代過程,時間複雜度略高 , 但都是O(n^3) .  

利用到矩陣的性質是: 將其中一行的任意K倍加到另一行上去後,矩陣與原矩陣等價(解方程時是不是也可以將一個方程的任意倍加到另一個方程上去。。)

用(i , j ) 表示當前正在處理第 i 個方程的第 j 個變數。

上三角矩陣和對角處理過程是(1,1) ->  (2 , 2)  - > ...... -> (n , n) , 而階梯矩陣處理過程是:處理( i ,j )  ,然後若係數m[ i ][ j ]=0 , 則下一步處理( i , j+1) 否則處理(i+1 , j+1) ,迴圈該過程。。

上三角矩陣處理後的理想狀態是:主對角線以下的係數全為零 , 分解到每一步的目標是(當前正處理(i ,i )):將第i列,行數大於i的係數全變成零,方法是將的j(j>i)行減去第i行的k( k = m[ j ][ i ] / m[ i ][ i ])倍。。處理過程有些很重要的細節需要注意,分母m[ i ][ i ]不能為零 , 可以先將第abs( m[ u ][ i ]) 最大的第 u 行換到 第 i行,若max( m[ u][ i ])  = 0 , 則Xi沒有唯一解。

回代過程是將Xj( j > i , Xj已經求出來了) 全部移到方程的等號右邊。。其實就是類似對角矩陣的狀態。。

對角矩陣處理目標是將第i列,行數不等於 i 的係數全變成零,並省略回代過程。

對於特殊情況的處理:以對角矩陣為例說明

(1) 若 m[ i ] [ i ] = 0  , m[ i ][ n ] > 0  , 則 Xi = inf

(2)若 m[ i ][ i ] = m[ i ][ n ] = 0 , 則 Xi不能確定

(3)否則Xi = m[ i ][ n ] / m[ i ][ i ].