c++求矩阵的秩_线性代数复习(被玩坏的矩阵)
最近, 老有同學問, (線性)代數應該怎樣復習呀. 本期就來談談我對這門課程的看法, 希望對大家有所幫助.?
線代故事梗概大家不妨回想一下之所以有這門課程的「罪魁禍首」是什么? 那當然是?線性方程組如果沒有線性方程組, 就沒有這門課程.?
當然有人會說, 中國人在上千年前的《九章算術》中已經解釋了怎么解線性方程組了, 為什么到近代才有線性代數呢??是的, 如果我們只想知道線性方程組的解是什么, 《九章算術》就已經告訴我們解法了, 就是我們課本里提到的Gauss消元法. 這個方法用的就是矩陣的方法.?從字面上講,感覺「方程」跟「矩陣」好像差不多是一個意思.?
但是, 如果僅僅是將一些數字整齊的排在一起做一些初等行列變換, 這個矩陣好像也沒有什么好玩的.?
下面我們就來看下矩陣(方程)是怎樣一步步被「玩壞」的.?
矩陣乘法???這是矩陣變得「好玩」的最「刻骨銘心」的時刻. 矩陣有了「乘法」后,一切都變得不同了.?初等行變換可以看成在矩陣左邊乘以相應的初等矩陣;?
可以玩可逆矩陣, 以及可逆矩陣的各種刻畫,如: 它們正好是初等矩陣的乘積; 方陣可逆當且僅且秩與階數相等.?
還可以利用初等變換求可逆矩陣的逆矩陣.?
行列式???方陣A的行列式是否為零可以用來判斷相應的線性方程組Ax?= 0是否只有只唯一解.?矩陣乘積的行列式等于它們行列式的乘積. 這使得矩陣乘法的問題和行列式的問題有時候可以相互轉化.?
比如: 可逆的矩陣行列式一定非零, 反過來也成立, 實際上, 如果A的行列式非零, 它的逆矩陣可以用它的伴隨矩陣寫出來?
系數矩陣可逆的線性方程組的克萊姆規則是用矩陣行列式描述的.?
向量空間???向量空間的出現進一步豐富的矩陣的玩法.?向量空間與矩陣的相互轉化關系是這樣的. 取n維向量空間V?的一組基, 對于V?中向量組?α1,???,αm, 分別取它們在這組基下的坐標A1,???,Am, 將它們拼在一起組成矩陣A.?
原向量組的問題可轉化為矩陣A的問題. 例如:?α1,???,αm線性無關, 當且僅當線性方程組Ax?= 0只有零解, 當且僅當A的秩是m.?
要尋找α1,???,αm的極大線性無關組也可以從矩陣A來考慮, 可對A進行初等行變換(就像Guass 消元法一樣), 將A變為A′?= [A′1,???,A′m]. 這時, 與A′的列向量的極大線性無關組對應的α1,???,αm中的向量就組成其極大線性無關組.?
由于最常見的向量空間是像?m這樣的空間, 它里面的每個向量都是m個實數的一個序列. 如果把n個這樣的向量排成n列, 我們就得到一個m行n列的矩陣.?
矩陣和向量空間的還有一個重要的聯系是: 假設A是一個n列的矩陣, 齊次線性方程組Ax?= 0的所有解組成一個向量空間, 稱為Ax?= 0的解空間, 記為Ker(A). 我們知道?
dim?Ker(A) =?n?rank(A)
一個矩陣的秩的看法也變得更加豐富: 假設A是一個m行n列的矩陣.?A的秩有下面幾種看法:?如果A可以通過初等變換變為(i,i),?i?= 1,???,r為1, 其余位置全為0 , 那么rank(A) =?r.?
如果A為非零矩陣,?A的秩等于A的非零子式的最大階數.?
A的秩可以看成其所有列(或者行)組成的向量組的最大線性無關組的向量個數.?
A的秩可以看成其所有列(或者行)生成的向量空間的維數.
當然這里取不同的基, 得到的矩陣不一樣(但它們彼此相似). 尋找那些相對簡單的矩陣, 即相似標準型的艱辛過程成了這一章的主要內容.?
用到的方法主要還是矩陣和線性方程組. 如: 方陣A的特征值和特征向量, 分別是求?
fA(x) =?|xI??A|的根λ和解線性方程組?(A?λI)x?= 0如果要完全讀懂這一部分的內容, 需要很花費一番功夫.?詳情參見:?相似標準型導讀
二次型???由于矩陣實在是「太好玩」了, 因此近代以來很多數學問題都試圖轉化為矩陣的問題來解決. 比如二次型就是這樣一個典型例子.?本來二次型的樣子是這樣的?
q(x1,x2) = 2x12?+ 3x22?+ 4x1x2但在那些「挖空心思」想玩矩陣的眼里是這樣的?這樣這個二次型的所有信息都包含在中間這個對稱矩陣里了.?用線性替換將二次型化為只有平方項的形式, 等價于將中間矩陣合同到一個對角矩陣.?
這里有個巨大的「坑」需要注意: 實對稱矩陣合同到對角矩陣歐氏空間中有別的辦法.?
對于一個實對稱矩陣A, 如果要求找一個正交矩陣U使得UTAU是對角矩陣,?不能用這里初等變換的方法.?
歐氏空間???歐氏空間V?是實數?上的向量空間,同時有一個內積?(?,?) :?V?×V?→??它是雙線性, 對稱, 正定的.?有了這個內積, 我們在初等數學中學到的向量的內容都可以在歐氏空間中實現:?向量長度, 兩個向量夾角, 垂直等等.?
歐氏空間上保持向量長度的線性變換無疑是我們最感興趣的. 這樣的線性變換稱為正交變換.?
我們同樣希望將正交變換的問題轉化為矩陣的問題. 但由于正交變換是一種「來之不易」的變換, 它配得一上種「漂亮」的矩陣. 如果我們隨便找一組基, 再考慮正交變換在這組基下的矩陣的話, 會有「暴殄天物」的風險.?
最終,我們發現,如果為歐氏空間找一組像直角坐標系那樣的基:?相互正交且都是單位向量, 稱為規范正交基, 那么正交變換在規范正交基下的矩陣就是正交矩陣, 即滿足UTU?=?I的實數矩陣.?
沿著這個方向,你會問: 怎樣找一組規范正交基? 答案就是 Schmidt 正交化方法.?
怎樣找出或者判斷正交矩陣? 只要矩陣的列向量組成規范正交基即可.?
歐氏空間中, 還有一種重要的線性變換是對稱變換. 它在規范正交基下的矩陣是實對稱矩陣.?
對稱實矩陣A有個很重要的特點是, 存在一個正交矩陣U, 使得UTAU??= Λ是一個對角矩陣. 注意到此時UT?=?U?1, 因此A與Λ既是相似, 又是合同.?
怎樣尋找這樣的U? 從書中找找答案吧.?
要注意和實二次型那里的方法對比, 看看這兩者的區別.?
線代「硬核科技」如果要評選線性代數中最「基本」, 最「硬核」的技術, 我想應該選下面兩個, 這兩個基本知識不掌握熟練, 線性代數不可能學得好.?
1.?Gauss 消元(加減消元)法.?
2.?線性方程組Ax?=?b的解的結構.?
特別是齊次線性方程組Ax?= 0的基礎解系.?
從上面的梗概可以看出, 幾乎所有的問題都與這兩個知識相關.?
「矩陣」的看法假設A是一個m行n列的實數矩陣, 在不同的場景下,我們通常需要以不同的視角來看待A.?1. 在解線性方程組Ax?=?b時,我們把A和b拼在一起形成線性方程組的增廣矩陣(A,b), 然后對這個增廣矩陣做初等行變換. 這是我們看A最普通的視角:?mn個數字排在一起.?
2. 有時候我們需要把A看成是列(或者行)向量拼在一起.?A的列向量都是?m中的向量, 它們的所有線性組合組成?m的一個子空間, 稱為A的列空間, 記為Col(A);?
類似的,?A的行都可以看成?n中的向量, 它們的所有線性組合組成?n的一個子空間, 記為Row(A).?
這時A的秩rank(A)與其列空間和行空間的維數相同. 這樣就可以把向量空間的方法用來解決與矩陣秩相關的問題.?
比如: 如果B是另外一個矩陣且BA?=?O, 要求證明?
rank(A) + rank(B)?≤?m這時, 如果將A看成若干個列向量拼起來的, 我們就很容易看出A的列向量都是齊次線性方程組Bx?= 0的解, 從而Col(A)包含在Bx?= 0的解空間Ker(B)中. 因此?伙伴們, 如果B也是m?×?n的矩陣,說明下?或者B是一個m行的矩陣, 證明下?
(提示: 矩陣的秩等于其列向量組的最大線性無關組的向量個數)?3. 當然, 還有的時候我們要將方陣A看作線性變換, 它將α映為Aα.?
最后幾點tips線性代數的特點是:?概念多, 概念之間關系復雜. 任何試圖在幾分鐘之內掌握所有知識點都是徒勞的. 如果想要比較好的掌握這些知識, 比較有效的辦法是.?分章節列出各個知識點, 以及這些知識點之間的關系圖.?
針對每個知識點, 舉1-2個例子或者例題來理解這個知識點.?
做適當的練習題,特別是證明題, 增加對知識點的應用能力.?
最后, 記得我們的宗旨:?盡量把問題轉化為矩陣和線性方程組的問題.
總結
以上是生活随笔為你收集整理的c++求矩阵的秩_线性代数复习(被玩坏的矩阵)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python numpy 子数组_Pyt
- 下一篇: 用V C++检测和隔离内存泄漏