不少同學(xué)在初學(xué)線性代數(shù)時感到迷茫、痛苦,體會不到課程的實際意義。這很大程度上是因為,教材為了由淺入深、循序漸進,須從基礎(chǔ)的抽象概念講起,而真正直觀的部分,往往要等到后面的細(xì)分領(lǐng)域或具體應(yīng)用。于是初學(xué)者往往知其然,不知其所以然;只見樹木,不見森林。希望本文能讓你換個視角,以輕松有趣的日常眼光,看到一個不一樣的線性代數(shù)。
本文是系列文章《N文粗通線性代數(shù)》的第三篇。我們在上篇文章中通過矩陣初等變換來引入矩陣的逆及其性質(zhì),討論了線性方程組的求解過程。線性方程組解的結(jié)果只有三種可能:無解,有唯一解,有無窮多個解。那么,這其中又有什么規(guī)律呢?
撰文 | 吳進遠
上回書說到,某近視宅男,某日下樓到早點鋪買早餐。眼鏡忘在家里,看不清黑板上寫的價目。于是,宅男就一邊排隊,一邊聽著前邊顧客買早點的品種數(shù)量,和服務(wù)員小妹報的總價,據(jù)此計算各種早點品種的單價。
圖1
一通采集數(shù)據(jù),分析計算之后,近視宅男求出了線性方程組系數(shù)矩陣的逆矩陣,算出了食品單價,買了早餐。一邊吃,一邊陷入了沉思。
(1)幾筆買賣定乾坤?
我們知道,只有正方形的矩陣才可以求出逆矩陣。具體在我們這個買早餐的問題中,三個未知數(shù),需要正好三筆交易,或者說三個線性方程,才可以求出未知的食品單價。但在現(xiàn)實世界中,我們完全可能遇到不是正好三筆買賣的情況,這些情況下,我們的計算會遇到什么問題呢?
從直覺上我們知道,方程個數(shù)少于未知數(shù)的個數(shù),肯定無法求出唯一解??墒牵偃缍呦嗟?,就一定能求出唯一解嗎?更進一步,要是方程的個數(shù)比未知數(shù)的個數(shù)還多,情況又會怎么樣?我們下面一步步地分析一下:
為了直觀地討論這些問題,我們把三種食品的單價畫在一個三維的坐標(biāo)系中。下面的這些圖中:
水平方向是油餅單價x1,
豎直方向為茶葉蛋單價x2,
而豆腐腦的單價x3則指向紙面之外。
圖2
上面這個圖中畫出了一個平面(紅色),它是線性方程組中的第一個方程的圖像,也就是第一個顧客那筆買賣。
這位顧客買了一個油餅、一個茶葉蛋、一碗豆腐腦,總價14元。
僅僅根據(jù)第一筆買賣,我們顯然無法算出三種食品的單價,但我們多少還是獲得了一些信息。具體說,我們知道這三種食品的單價一定在這個平面的某一個點上。
比如這個平面和橫軸相交在x1=14這個點上,這個點對應(yīng)于油餅14元,茶葉蛋和豆腐腦免費。
盡管在現(xiàn)實中很少有老板這么定價,但這個點所對應(yīng)的這一組單價與這一個方程是沒有矛盾的。事實上,整個平面上所有的點都與這個方程沒有矛盾,而真實的單價也處于這個平面上,就是我們圖中標(biāo)出的藍色圓點。
的確,僅僅知道一筆交易,或者一個方程,我們沒有足夠的信息確定真實的單價?,F(xiàn)在我們引入第二筆買賣,這個方程在圖3中對應(yīng)另一個平面(綠色)。
圖3
這個平面與第一個平面在一條直線上相交。這就是說,同時滿足兩個方程的單價組合,只能處于這條直線上。盡管真實單價組合確實位于這條直線上,但我們?nèi)匀粺o法確認(rèn)其準(zhǔn)確位置。同時符合這兩個方程的,仍然有無窮多個解。
顯然,我們需要引入第三筆買賣。第三筆買賣對應(yīng)的線性方程,在下面圖中對應(yīng)紫色的平面。
圖4
這個新的平面與前面兩個平面相交在一個共同的空間點上,這就是這個問題中真實的單價組合。因此,如果有N個未知數(shù),至少要有N個方程才能求出唯一解。
那么,是不是方程數(shù)等于未知數(shù)個數(shù)就一定能求出唯一解呢?不一定。假設(shè)在買早餐這個例子中,宅男沒有聽清楚顧客3的交易數(shù)據(jù),只用顧客1、2、4的交易數(shù)據(jù)來求解,就無法得到唯一解。
為了讀者理解方便,我們把幾位顧客的購買數(shù)據(jù)重新列在下表:
大家仔細(xì)觀察,就會發(fā)現(xiàn)這位顧客4的交易數(shù)據(jù)是顧客1、2兩組數(shù)據(jù)的線性組合:5×(顧客1數(shù)據(jù))-(顧客2數(shù)據(jù))。
因此,顧客4的數(shù)據(jù)沒有提供任何新的信息,這一方程對應(yīng)著圖5中紫色的平面。而這個平面,與前面兩個平面相交于同一條直線,這條直線上的所有點都同時滿足三個方程。
圖5
不難想象,即使我們再增加若干方程,但如果新增加方程是原有方程的線性組合,則新增方程仍然不能提供新的信息,或者新的約束,所以仍然無法得到唯一解。這些方程畫在上面的圖中,是一組平面,而這些平面都相交于一條公共的直線。
(2)秩的那些事
線性方程組 Ax=y 解的性質(zhì),和矩陣A的秩(rank)關(guān)系密切。所謂秩,是指矩陣中線性獨立的行或列的最大個數(shù)。前面買早餐的例子中,顧客1、2、3的三筆交易互相線性獨立,因此這一個矩陣的秩rank(A)=3。而如果不包含顧客3,只考慮顧客1、2、4這三筆交易,則我們只能找到兩個線性獨立的行,第三行只是前兩行的線性組合。因此,這樣一個矩陣的秩 rank(A)=2。
一個矩陣的列數(shù)m對應(yīng)于方程組的未知數(shù)個數(shù),而它的秩rank(A)則是線性獨立的方程數(shù)的最大個數(shù),也可以看成是能夠提供獨立信息的約束的個數(shù)。當(dāng)rank(A) = m,我們管這種情況叫做列滿秩,這時方程組如果有解,則其解是唯一的。
如果rank(A)<m,我們管這種情況叫做欠秩,方程組如果有解,則其解不是唯一的,而是有無數(shù)個。
如果一個矩陣是“矮胖”的,或者說它的行數(shù)小于列數(shù),顯然它不可能是列滿秩的?!鞍帧本仃噷?yīng)的方程組沒有唯一解,如果有解也是無窮多個解。
當(dāng)行數(shù)大于列數(shù),矩陣變成“瘦高”的,對應(yīng)的方程組才可能有唯一解(如果有解的話)。但在有解的前提下,具體什么情況還要看它是不是列滿秩。
這兩種情況通過前面的例子很容易理解。
(3)什么叫無解?
讀者可能會問,為什么要強調(diào)方程組“如果有解”呢?難道還有方程組無解的情況嗎?的確如此。
一個方程組里,每添加一個方程,就可能增加一個約束。這樣,在理想的情況下,有效的約束夠了,就可以幫助我們找到方程組的解。
繼續(xù)增加方程,則可以幫助我們驗算,檢查前面算得對不對。
可是,在我們往方程組里添加方程時候,完全可能添亂,加進去自相矛盾的方程。這種情況下,這個方程組是沒有解的。
比如買早餐的例子中,第一個顧客買了一個油餅、一個茶葉蛋、一碗豆腐腦,服務(wù)員小妹報價14元。假設(shè)另一個顧客買了兩個油餅、兩個茶葉蛋、兩碗豆腐腦,這時報價應(yīng)該是28元。假定顧客是位廣東人,服務(wù)員小妹貼心地按照廣東話來發(fā)音,于是我們的宅男就完全可能把“二十八”誤聽為“一三八”。這樣一來,我們就遇到了一個自相矛盾的方程組。
在現(xiàn)實世界,數(shù)據(jù)采集傳輸中出現(xiàn)錯誤的情況非常普遍,因此方程組自相矛盾的情況也會非常普遍,而且自相矛盾的花樣可能會非常復(fù)雜。為了搞清楚方程組有沒有解,就需要用到另一個矩陣的秩:就是增廣矩陣(A|y)的秩rank(A|y)。這里說的增廣矩陣,就是把方程組Ax=y當(dāng)中的y與A拼在一起。這里,y是縱向的一列數(shù)字,它可以看成是一個向量。而A當(dāng)中各個列,也分別是同樣維數(shù)的向量。
不難看出,如果方程組Ax=y有解,則y就一定是A當(dāng)中各個列向量的線性組合。我們把y添加到A當(dāng)中,新增加的這一列,與其他各個列是線性相關(guān)的。這樣一來,增廣矩陣(A|y)的秩rank(A|y)就不會比原矩陣A的秩rank(A)大。因此,方程組有解就等價于rank(A|y)=rank(A)。
反之,如果添了一列之后,秩增加了,即rank(A|y)=rank(A)+1,則方程組必然是自相矛盾的,沒有解。
我們把前面談到的這些情況列個表出來,就一目了然了。
這里需要指出,當(dāng)矩陣A不是滿秩的時候,如果方程有解就會有無窮多個解,但不同情況下的“無窮多個”是不一樣的。具體說,就是解空間的維數(shù)等于m-rank(A)。
比如我們買早餐的例子中,m=3。當(dāng)只有第一個顧客數(shù)據(jù)時,rank(A)=1,這時解空間是一個平面,解空間的維數(shù)等于(m-rank(A))= 3-1 = 2。
在第二個顧客,乃至第四個顧客的數(shù)據(jù)加進來后,rank(A)=2,這時解空間的維數(shù)等于 3-2 = 1,解空間是一條直線。
當(dāng)?shù)谌齻€顧客的數(shù)據(jù)加進來后,rank(A)=3,這時解空間的維數(shù)等于 3-3 = 0,于是解空間成為一個點,解的個數(shù)從無窮多變成了1,方程存在唯一解。
(4)零元購與齊次線性方程組
我們有時候會遇到齊次線性方程組,也就是Ax=0?!褒R次”的意思說的是方程中只有未知數(shù)x的一次方項,沒有常數(shù)項,或曰沒有未知數(shù)x的0次方項,因此各個項中的方次是“齊”的。
由于方程組右邊等于0,因而它的增廣矩陣的秩顯然不會增加。因此齊次線性方程組肯定是有解的,我們用肉眼就可以看出x=0顯然是方程的解。
可是問題來了,除了x=0這樣一個平凡解,齊次線性方程組Ax=0還會不會有不等于0的解呢?從前面討論我們知道:rank(A)<m的情況下,方程組有無窮多個解,因此,齊次線性方程組確實會有非0解。
為了便于理解,我們畫出下面這個圖,圖中的每個平面相當(dāng)于一個線性方程,這三個平面對應(yīng)的方程是線性無關(guān)的。每個方程的右端常數(shù)項都等于0,其幾何意義是每個平面都經(jīng)過原點。
圖6
上面圖中,三個平面只存在唯一一個公共交點,也就是原點。因此,當(dāng)rank(A)=m的時候,方程組有唯一解,也就是說,只有x=0這樣一個平凡解。
如果三個平面對應(yīng)的方程存在線性相關(guān)(比如秩等于2),它們之間的空間關(guān)系就可能看起來像這樣:
圖7
由于每個方程右邊也都等于0,因此每個平面也都經(jīng)過原點。不過由于三個方程是線性相關(guān)的,這三個平面有無窮多個公共點。
在秩等于2的情況下,這些公共點構(gòu)成一條直線,這條直線也通過原點。這樣,除了x=0這一個平凡解,這條直線上其他地方也是方程組的解,或者說,這個齊次線性方程組存在非0解。
在實數(shù)中,只有0乘以一個數(shù)其乘積才會是0。因此對于非零解,我們有時不容易想象。實際上,一堆不完全是0的數(shù)和另一堆不完全是0的數(shù)相乘,它們的乘積相加,確實可能得出一個0。這種情況并不難發(fā)生,比如只要兩組數(shù)相乘之后,乘積有正有負(fù),它們就完全可能相互抵消為0。再比如所有不等于0的數(shù)在矩陣相乘時都完美錯過,都與0相乘,則結(jié)果也是0。
在線性代數(shù)中,所有元素都為0的矩陣叫零矩陣。零矩陣與任何矩陣相乘自然會得到零矩陣,但反過來卻不一定。事實上,兩個非零矩陣相乘,也完全有可能得到零矩陣。一個存在非零解的齊次線性方程組,實際上就是兩個非零矩陣相乘得到零矩陣的例子。
齊次線性方程組在我們買早餐的例子中會是什么情形呢?首先,我們的宅男聽到前面的所有交易的結(jié)果都是0,可以想象這種“零元購”是個非常歡樂的情況。過去學(xué)?;蛘邌挝坏氖程茫械臅r候因為管理員經(jīng)營有方,經(jīng)常能到菜市場采購到便宜的食材,一年下來會結(jié)余很多,于是到年底就會有一天“吃結(jié)余”。顯然,如果所有食品的單價都為0,就會出現(xiàn)吃結(jié)余或者零元購的結(jié)果。
但是反過來卻不一定。比如,僅僅根據(jù)下面兩個顧客的購買數(shù)據(jù),我們并不能確認(rèn)所有食品單價都是0:
第一個顧客買了一個油餅、一個茶葉蛋、一碗豆腐腦,0元;
第二個顧客買了兩個油餅、四個茶葉蛋、四碗豆腐腦,0元。
因為除了所有食品都不要錢的情況,我們完全可能找到使這兩個方程成立的非零解。比如設(shè)想:
油餅、茶葉蛋、豆腐腦的單價0元、X元、-X元,上面兩個方程就可以成立。
這一組單價表示油餅不要錢,茶葉蛋一顆X元,而買一碗豆腐腦不但不收錢,還會倒送X元的禮品券。這種情況在做買賣上聽著不很合理,但在理論中,卻是齊次線性方程組理論上存在的非零解。
現(xiàn)在,如果把第三位顧客的數(shù)據(jù)加進去:
假定他買了一個油餅、三個茶葉蛋、三碗豆腐腦,0元;
我們?nèi)匀徊荒艽_認(rèn)所有食品單價都是0。因為他的購買數(shù)量向量是前兩位的線性組合(第二位購買數(shù)量向量 - 第一位購買數(shù)量向量)。
只有再來顧客,他的購買數(shù)量向量與前幾位的線性無關(guān),整個矩陣變成了列滿秩的,我們才能得到新方程組的唯一解,即所有單價都為0。(未完待續(xù))
特 別 提 示
1. 進入『返樸』微信公眾號底部菜單“精品專欄“,可查閱不同主題系列科普文章。
2. 『返樸』提供按月檢索文章功能。關(guān)注公眾號,回復(fù)四位數(shù)組成的年份+月份,如“1903”,可獲取2019年3月的文章索引,以此類推。
版權(quán)說明:歡迎個人轉(zhuǎn)發(fā),任何形式的媒體或機構(gòu)未經(jīng)授權(quán),不得轉(zhuǎn)載和摘編。轉(zhuǎn)載授權(quán)請在「返樸」微信公眾號內(nèi)聯(lián)系后臺。