將矩陣轉為一行 Lecture 2 矩陣消元

2021-10-16 01:49:55 字數 2076 閱讀 1351

01

elimination

消元高斯消元法是求解方程組最有效的途徑之一,也是我們中學裡使用最多的一種方法。以上述ax=b為例,我們可以在消元時不去考慮xyz,因為消元中實際發生變化的是它們的係數

接著從主元二開始,要將2下面的4消成0,最後得到了乙個矩陣u,這個u矩陣是乙個上三角矩陣

消元的基本方法是將主元下方數字消成0,通過這樣的消元我們得到了3個主元。這裡需要強調的是主元不能是0,因為0x任何數都是0,無法使得下面的數字消成0。

如果主元的位置出現了0,那我們只需要做行交換即可擺脫困境。有的時候消元得不到全部主元,即行交換也無法解決主元是0的情況,這樣的消元實際上是失效的。

02

back substitution

回代實際上通過剛剛的消元我們還是沒有辦法得出方程組的解,原因在於剛剛的方法沒有考慮到方程組右邊b的變化。這裡我們引入右側向量,將其加入a矩陣中一起消元。

這裡很有趣的是我們發現ax=b,ux=c同解,所以實際上我們通過elimination得到了乙個ux=c,這個方程實際上十分簡單,通過back substitution可以快速得出一組解。

ux=c

03

elimination matrices

矩陣消元

下面我們將通過matrices operations矩陣變換來表示這個過程。這裡我們要引入矩陣乘法的概念,見下圖。這裡是比較難理解的,因為分左乘和右乘,這兩種方式是有區別的,實際上是列(右乘)和行(左乘)的線性組合的區別。

step 1 :subtract 3x row1 from row2

第二行減去3倍第一行

實際上可以通過整行整列的角度思考,從行角度出發:

a的第一行不變,所以需要

1倍row1 + 0倍row2 + 0倍row3

第二行需要減去3倍的第一行,所以需要

-3倍row1 + 1倍row2 + 0倍row3

第三行不變

1倍row1 + 0倍row2 + 0倍row3

這些係數就是我們需要的左乘e21矩陣(e21:將第二行第一列元素消成0to get 21 position to be 0)

當然我們也可以從單一元素角度出發,比如第2行第3列元素需要變為-2,所以是e21的第2行與a的第3列的點乘積,這顯然不便於理解

step 2 :subtract 2x row1 from row3

第3行減去2倍第2行

這裡elimination matrices使用的方法是用矩陣的乘法,左乘乙個矩陣完成消元

04

permutation

置換矩陣

如何將乙個矩陣行列交換的矩陣,這裡2x2矩陣為例,對於同樣的乙個置換矩陣p,左乘完成了行交換,右乘完成了列交換。

Lecture 2 矩陣消元

高斯消元的矩陣變換理解 現在有矩陣 a begin 1 2 1 3 8 1 0 4 1 end 需要將其變換為階梯形矩陣 u 首先,第二行減去第一行的三倍。begin 1 0 0 3 1 0 0 0 1 end begin 1 2 1 3 8 1 0 4 1 end begin 1 2 1 0 2 ...

oracle 將多行合併成一行

使用者id 使用者名稱 角色 001 admin 管理員 002 betty 教師 001 admin 教師 003 cole 學生 可以看到使用者admin有兩個角色 管理員和教師 也就是使用者和角色是多對多的關係 我們現在的需求是,將這兩個合併在一塊,由兩行資料變成一行資料 也就是在形式上將多對...

將多行合併成一行(awk sed)

mysql dump的時候,需要忽略檢視以免出現definer與本地不一致從而導致失敗。因此寫了如下指令碼把檢視查詢出來 root bdd3c0ee821f rds autorestore mysql e select concat table schema,table name as tablen...