matlab 求解線性方程組之LU分解

2022-03-01 21:29:13 字數 1193 閱讀 1801

線性代數中的乙個核心思想就是矩陣分解,既將乙個複雜的矩陣分解為更簡單的矩陣的乘積。常見的有如下分解:

lu分解:a=lu,a是m×n矩陣,l是m×m下三角矩陣,u是m×n階梯形矩陣

qr分解:

秩分解:a=cd  ,  a是m×n矩陣,c是m×4矩陣,d是4×n矩陣。

奇異值分解:a=udvt

譜分解:

在求解線性方程組中,乙個核心的問題就是矩陣的lu分解,我們將乙個矩陣a分解為兩個更加簡單的矩陣的復合lu,其中l是下三角矩陣,u是階梯形矩陣。下三角矩陣和上三角矩陣具有非常良好的性質:lx=y 或者ux=y 很容易求解。

定理:如果a行等價於階梯形矩陣u,那麼(enen-1......e1)a=u,其中的ei,i=1,2,.....,n是高斯消去矩陣,他們都是下三角矩陣,並且都可逆。

這個定理告訴我們三件事:

1.並不是所有的矩陣都有lu分解的。

2.a=lu=(enen-1......e1)-1u=(e1-1

e2-1

.....en-1

)u。3.這個定理還給出了求解矩陣a-1的一種方法。

用gauss消去法將矩陣a行變換為u:

用gauss消去矩陣將a行變換為u:

過程和gauss-jardon基本一致,之不多在選擇完最大元之後,將其化為1,這樣就可以通過乘以乙個倍數來消去其他行了。

當對某一列進行gauss消去時,一般都是選擇這一列中絕對值最大的乙個元素作為主元,當然這會進行行交換。其好處有一下幾點:

1.在gauss會代的過程中,不會出現除數為0的情況。

2.減少誤差傳播,這主要是因為乘數小於等於1.

(為何乘數小於等於1,如果選擇這一列中絕對值最大的乙個元素作為主元,我們假設這個元素是a,那麼乘數等於-b/a,此時|b/a|<=1)。

為什麼不用絕對值最小的元素做主元?易知此時乘數的絕對值大於等於1,會增加誤差的傳播累計。

為什麼應該避免用接近於0的數做主元?此時乘數可能非常大,參加如下例子:

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

matlab線性方程組求解

線性方程組的求解主要有兩種方法,分別是直接法和迭代法,本節也將圍繞這兩種方法去講解一些matlab在求解線性方程組的相關知識。一 線性方程組的直接解法 主要可以分為以下三種方法 高斯 gauss 消去法 列主元消去法 矩陣的三角分解法 高斯 gauss 消去法是乙個經典的直接法,由它改進得到的列主元...