LU分解和轉置

2022-06-09 03:51:07 字數 2954 閱讀 2788

我們通過消元法解出\(ax=b\),在消元過程中,我們要把a化成上三角形式,我們稱之為\(u\)。而\(e\)就是描述\(a\)與\(u\)關係的矩陣,我們有\(ea=u\)。

這是之前學過的內容,再熟悉不過了,但是我們的行交換矩陣\(e\)並不是乙個漂亮的形式,為啥這麼說呢!?看個例幾~

\[a=\left[

\begin

2&4&2\\

4&10&5\\

0&2&9

\end

\right]

\]\[e_\left[

\begin

1&0&0\\

-2&1&0\\

0&0&1

\end

\right] \times a\left[

\begin

2&4&2\\

4&10&5\\

0&2&9

\end

\right]=

u_1\left[

\begin

2&4&2\\

0&2&1\\

0&2&9

\end

\right]

\]這裡我們對a第二行進行消元,我們使用矩陣\(e_\)來表示上面左乘矩陣a的矩陣,這個矩陣反應了我們對a的消元操作,這就不用我說了。

我們把這一步得出的矩陣暫且命名為\(u_1\)

\[e_\left[

\begin

1&0&0\\

0&1&0\\

0&-1&1

\end

\right] \times

u_1\left[

\begin

2&4&2\\

0&2&1\\

0&2&9

\end

\right]

=u\left[

\begin

2&4&2\\

0&2&1\\

0&0&8

\end

\right]

\]繼續消元,這回就得到最後的u了。

\[e= \left[

\begin

1&0&0\\

0&1&0\\

0&-1&1

\end

\right] \times \left[

\begin

1&0&0\\

-2&1&0\\

0&0&1

\end

\right]= \left[

\begin

1&0&0\\

-2&1&0\\

2&-1&1

\end

\right]

\]得出了e,\(e\)反應了我們對\(a\)所進行的消元操作,\(e_\)說明該行從原矩陣取了-2倍行一,\(e_\)說明該行從原矩陣取了1倍行二,這也就是我們對第二行進行的消元操作——減去2倍行一。

但是第三行就有問題了,我們對第三行進行消元時,並沒有從第三行中減去任何倍的行一,我們直接減去了1倍的行2,但是這個位置卻有個2,這是因為上一步消元中我們對行2減去了2倍行一,而這次消元我們直接用行3減去了已經處理完的行2,所以之前的操作就體現在這裡了。

但是,這個資料是多餘的,因為矩陣\(e\)中的第二行已經足夠說明這個操作了,我們不想要它。這就有了\(a=lu\)這一形式。

我們先看看\(l\)是啥,因為之前我們知道的式子是\(ea=u\),兩邊分別左乘\(e^\),則得到\(a=e^u\),所以\(l\)即\(e\)的逆。

然後再看看\(e\)的逆是啥:

\[e^=l=\left[

\begin

1&0&0\\

2&1&0\\

0&1&1

\end

\right]

\]對於e這種消元矩陣,逆的本質其實是把消元所做的操作復原,所以那些關鍵的部分的負號都變成了正號。所以它的你很容易得到。

不過隨便你用什麼求逆,高斯若爾當法、matlab??反正你會得到這個,令人驚奇的是這個矩陣個沒用的數字沒了只剩下這些我們關注的,對消元有用的資訊。

呦呦呦,不知道你發沒發現,上面我們舉得例子都是沒有行互換的,而現實場景恰恰都要行互換,所以我們要得到下乙個形式。

我們先來定義一些置換矩陣,它是單位矩陣的行互換形式,對於這種矩陣,它的逆等於它本身,它們相乘,結果也依然在這些矩陣中。

我們看看\(2 \times 2\)形式下的所有置換矩陣:

\[\left[

\begin

1&0\\

0&1\end

\right],

\left[

\begin

0&1\\

1&0\end

\right]

\]第乙個就是單位陣,它啥都不做,第二個把第一行和第二行互換。

對於\(3 \times 3\)我就不說了,它有6個,對於\(n \times n\)有\(n!\)個置換矩陣。

所以完整的形式應該是\(a=plu\),p代表所作的行互換。

轉置放在這裡實在有點不搭,但是gilbert strang老爺子就是這麼講的哈哈哈,我好喜歡這老爺子~~

轉置即把矩陣放倒或立起來:

\[a = \left[

\begin

1&3\\

2&3\\

4&1\end

\right],

a^ = \left[

\begin

1&2&4\\

3&3&1

\end

\right]

\]對稱矩陣的轉置等於本身:

\[a = a^t \left[

\begin

1&3&5\\

3&2&7\\

5&7&4

\end

\right]

\]對於轉置有如下運算性質:

\[(ab)^t = b^ta^t

\]乙個矩陣乘它的轉置必定得到乙個對稱矩陣:

\[(aa^t)^t = a^a^t =aa^t

\]

cusolver庫使用(LU分解)

由於網上關於使用cusolver庫的介紹比較少,今天就簡單地根據samples寫了乙個lu分解,來解決稠密矩陣ax b的例子 需要安裝cuda 首先使用vs建立工程 1.導入庫 第一步 右鍵專案 新增依賴性 生成自定義 第二步 專案屬性 鏈結器 輸入 新增三個依賴項cudart.lib,cusolv...

稀疏矩陣的轉置(矩陣轉置和快速轉置)

實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...

轉置矩陣,逆矩陣和倒轉置矩陣

單位矩陣 轉置矩陣 transpose matrix 性代數中,矩陣 a的轉置是另乙個矩陣a t 也寫做a tr,t a或a 由下列等價動作建立 形式上說,m n矩陣a的轉置是n m矩陣 對於矩陣a,b和標量c轉置有下列性質 轉置是從 m n矩陣的 向量空間到所有 n m矩陣的向量空間的 線性對映。...