|
最近找到了一個(gè)用于線性變化可視化的在線visualization,很好玩,分享給大家: https://visualize-it./linear_transformations/simulation.html 大家可以自己去玩玩,然后我也借助這個(gè)可視化工具做一期有關(guān)特征根和特征向量的教程。我接下來(lái)的教程內(nèi)容,在英文的線性代數(shù)教學(xué)內(nèi)容中屬于是司空見(jiàn)慣的東西,我可能只是通過(guò)我自己的理解整合了多個(gè)教程的內(nèi)容。但是,在中文的線代教程中,還尚未完全普及。 我并不打算系統(tǒng)地做線代教學(xué),但通過(guò)這期教程,是想讓更多讀者看到,線代可以教得十分直觀易懂! 1 換一種視角看待矩陣乘法與線性方程組求解 對(duì)線代有基本認(rèn)識(shí)的讀者都會(huì)知道,對(duì)于一個(gè)如下的線性方程組:
我們可以將其表達(dá)為Ax的形式,其中:
我們可以用多種不同的方式來(lái)理解Ax這個(gè)矩陣和向量的乘法運(yùn)算,最為大家所熟知的是行*列的算法:
也就是說(shuō)A中的第一行依次為兩個(gè)未知數(shù)x的系數(shù),所以我們將A中的第一行與兩個(gè)未知數(shù)依次相乘,形成第一個(gè)方程的左半部分(結(jié)果矩陣的第一行),第二行也類似……這種乘法方式被稱為“點(diǎn)積”運(yùn)算法,具體為何如此命名由于篇幅我們?cè)诖瞬毁樖觥?span> 我們還可以用一種不同的方式來(lái)理解這個(gè)乘法運(yùn)算,如下:
這種運(yùn)算的結(jié)果和上述是一樣的,但是運(yùn)算的過(guò)程不一樣。它代表了整個(gè)方程組的左半部分是通過(guò)x1倍的A的第一列和x2倍的A的第二列相加得來(lái)的——這個(gè)運(yùn)算也同樣十分直觀,符合我們對(duì)方程組構(gòu)建方式的認(rèn)識(shí)。通過(guò)這種理解視角,我們會(huì)發(fā)現(xiàn)一個(gè)矩陣乘以向量,就是根據(jù)向量中的元素大小,來(lái)對(duì)矩陣中的列進(jìn)行相應(yīng)比例的線性組合。 【練習(xí):到這里我們先停一下,請(qǐng)你自己嘗試著寫(xiě)一個(gè)3*3的矩陣A,與一個(gè)3*1的向量x,然后先用“點(diǎn)積”運(yùn)算法計(jì)算一下結(jié)果,然后再用新的“列的線性組合”的方式計(jì)算一下。希望你和我一樣獲得了相同的計(jì)算結(jié)果,但是會(huì)覺(jué)得,兩種計(jì)算帶給你的感覺(jué)是不一樣的!】 我自己做矩陣乘法的口算時(shí)很少會(huì)使用最基礎(chǔ)的“點(diǎn)積”算法,因?yàn)樗枰粋€(gè)個(gè)元素遍歷計(jì)算,這無(wú)疑是對(duì)我大腦計(jì)算資源的一種浪費(fèi)(學(xué)過(guò)“分布式計(jì)算”相關(guān)編程概念的同學(xué)會(huì)更理解我在說(shuō)什么)。 另一方面,“列的線性組合”的乘法算法能提供給我們一種新的視角來(lái)理解線性方程組。上述的“列的線性組合”,實(shí)際上就是在說(shuō)一組列向量(通過(guò)一列數(shù)字表示的向量)的線性組合,它在視覺(jué)上意味著什么呢? 我們可以把兩條向量先在坐標(biāo)系中描繪出來(lái):
讓我們將這兩條向量命名為a1和a2。依據(jù)高中學(xué)的向量“平行四邊形加法法則”,可知我們能夠通過(guò)對(duì)兩條向量進(jìn)行一定比例的“加和”,也就是x1 a1+x2 a2,來(lái)獲得相對(duì)應(yīng)的任意二維平面上的向量:
現(xiàn)在,再回過(guò)頭來(lái)看我們用來(lái)舉例的二元一次方程組,我們已經(jīng)知道它可以被如此簡(jiǎn)寫(xiě):
所以這個(gè)求解這個(gè)線性方程組,實(shí)際上在視覺(jué)上,就是在求解:我們?cè)撊绾螌?duì)a1和a2進(jìn)行配比加和(找到對(duì)應(yīng)的x1和x2),才能獲得目標(biāo)向量b=(8, 5)。 【練習(xí)1:請(qǐng)通過(guò)你既有的解二元一次方程組的知識(shí),解出這個(gè)線性方程組,然后根據(jù)方程組的解x1和x2,在坐標(biāo)系中畫(huà)出相應(yīng)的平行四邊形加法的可視化,驗(yàn)證加法結(jié)果,也就是平行四邊形的對(duì)角線,是不是就是方程組中的b】 【練習(xí)2(選做):將你在最初一個(gè)練習(xí)中找的矩陣和向量寫(xiě)成一個(gè)三元一次方程組,然后通過(guò)“列的線性組合”的方式來(lái)理解這個(gè)方程組,并在三維坐標(biāo)系中描繪出對(duì)應(yīng)的列向量。接下來(lái),請(qǐng)你自行求解出該方程組的解,依據(jù)解的值,我們可以對(duì)剛才可視化出來(lái)的三條列向量進(jìn)行線性加和。請(qǐng)觀察,加和得到的目標(biāo)向量,是否對(duì)應(yīng)于方程組中的b】 2 換一種情境理解Ax 我們剛剛已經(jīng)介紹了通過(guò)“列的線性組合”的方式來(lái)理解Ax,在這種視角下,假如A是一個(gè)m*n的矩陣,我們可以將其看作一個(gè)蘊(yùn)含了n個(gè)m*1向量的矩陣,而Ax這一乘法就是對(duì)這n個(gè)向量進(jìn)行線性組合,來(lái)獲得1個(gè)m*1的向量。 需要注意的是,在上述求解線性方程組的情境下,我們其實(shí)默認(rèn)地將A看作某個(gè)特定的矩陣,其所包含的列向量也都是給定的。而x是可以變動(dòng)的,我們嘗試將A中的列向量通過(guò)任意x中的元素組合,來(lái)獲得目標(biāo)向量b。 如果我們從烹調(diào)料理的角度來(lái)理解這個(gè)乘法,我們可以將A理解為某種食材,x理解為不同的調(diào)味料,我們嘗試向食材中加入的調(diào)味料,從而將食材烹調(diào)成我們期待的料理。 現(xiàn)在,讓我們?cè)賮?lái)引入另一種情境:假如現(xiàn)在有一個(gè)Ax的乘法,其中x是固定的,而A是變動(dòng)的呢?這時(shí),我們的“烹調(diào)方式”有所轉(zhuǎn)換:x變成了某種食材,而A變成了不同的調(diào)味料。但這其實(shí)只是一種情境上的切換,我們?nèi)耘f可以通過(guò)“列的線性組合”來(lái)理解Ax背后的含義。 我們先來(lái)看一種最簡(jiǎn)單的情況,當(dāng)A=I,也就是單位矩陣的時(shí)候。我們可以把Ax看作:
而它實(shí)際上就是x本身(這時(shí)候我們就是在對(duì)一個(gè)長(zhǎng)度為1的x軸上的向量和一個(gè)長(zhǎng)度為1的y軸上的向量進(jìn)行線性組合,這也是我們構(gòu)建任意標(biāo)準(zhǔn)二維坐標(biāo)系中向量的方式)!但是假如我們將A中的第一個(gè)元素改為2:
這時(shí),通過(guò)“列的線性組合”,Ax現(xiàn)在變成了:
可以看到,x的第一個(gè)維度被拉伸了兩倍,現(xiàn)在讓我們將x想象為一個(gè)二維坐標(biāo)系中的向量,Ax乘法的過(guò)程其實(shí)可以被可視化為下述的過(guò)程:
在有了如此精美的可視化后,讓我們?cè)賮?lái)回憶一下我們剛才做了什么!當(dāng)A=I的時(shí)候,Ax就是x本身,它就好好“躺”在一個(gè)標(biāo)準(zhǔn)的二維坐標(biāo)系上。當(dāng)A中的第一個(gè)元素變換時(shí),整個(gè)坐標(biāo)系也發(fā)生了變換,我們可以將其理解為一個(gè)空間扭曲的過(guò)程,而在這個(gè)扭曲的過(guò)程中,處于這個(gè)空間內(nèi)的x也被連帶著扭曲了! 我們將這個(gè)扭曲的過(guò)程稱為“線性變換”,任何矩陣都可以是一道“扭曲射線”,當(dāng)它打在x上(也就是Ax)時(shí),x所處的整個(gè)空間會(huì)產(chǎn)生扭曲,導(dǎo)致x也跟著被扭曲。 我們還可以來(lái)做一個(gè)更有意思的線性變換,假如這時(shí)A為如下矩陣,x為如下向量:
我們來(lái)看看這個(gè)“空間扭曲”,或者正式地說(shuō),線性變換的可視化是怎么樣的:
【練習(xí):自己打開(kāi)文章開(kāi)頭的網(wǎng)址,嘗試不同的矩陣A,來(lái)觀察左乘矩陣A后對(duì)整個(gè)二維空間的影響】 3 真正理解特征根與特征向量 我們?cè)谇懊嫣岬剑仃?span>A可以被理解為某種線性變換,當(dāng)它左乘x時(shí),可以對(duì)x所處的空間施加某種“空間扭曲”,進(jìn)而促使x產(chǎn)生變化。那么顯而易見(jiàn)的是,在這個(gè)扭曲的過(guò)程中,不僅x變化了,該空間中其他的向量也由于空間的扭曲而產(chǎn)生了變化。 所有線代教材在講到特征根與特征向量時(shí),都會(huì)給出如下的公式:
其中x是特征向量,λ是特征根。結(jié)合上述“空間扭曲”/線性變化的知識(shí),這個(gè)公式到底意味著什么呢? 這個(gè)公式意味著,當(dāng)A這道“扭曲射線”降臨時(shí),存在某條向量x,在整體空間扭曲的情況下,雖然它的長(zhǎng)度被改變了,但它的方向沒(méi)有變化,仍舊能夠“保持本色”! 比如,給定如下的矩陣和其特征根與特征向量:
我們可以將Ax可視化為如下的過(guò)程:
我們可以看到,在A扭曲整個(gè)空間的過(guò)程中,x只是被拉伸了(剛好放大了兩倍),方向并沒(méi)有變化。 這條“堅(jiān)挺”的向量x就被我們稱為A的特征向量,特征向量的英文為“eigenvector”,而eigen為德語(yǔ),對(duì)應(yīng)“自身的”意思。所以x是A的eigenvector,實(shí)際上就是說(shuō)x在經(jīng)過(guò)A的線性變換后,仍舊能夠保持自身。而經(jīng)過(guò)變換后縮放的幅度,相對(duì)應(yīng)的就被我們稱為“特征根”,也就是eigenvalue。這里中文的翻譯實(shí)際上也存在一定誤導(dǎo),英文直譯應(yīng)為“特征值”,之所以翻譯為“特征根”,大概率是因?yàn)槲覀儗?shí)際求eigenvalue的過(guò)程中會(huì)涉及到方程根的求解。 【練習(xí):結(jié)合你手頭的線代教材,掌握求解一個(gè)矩陣A的特征根與特征向量的基本算法。然后自己給定一個(gè)矩陣A,求出它的特征向量與特征根,在文章開(kāi)頭給的可視化工具中,嘗試可視化出特征向量“保持自身”的過(guò)程】 如上,就是用可視化方式真正理解特征根和特征向量的全部?jī)?nèi)容,以下是我的個(gè)人吐槽,你可以選擇不讀,或是消化完知識(shí)以后再讀,對(duì)我的讀者來(lái)說(shuō),學(xué)習(xí)是第一的! 4 線代的教學(xué)真有那么難嗎? 我之前就提過(guò)國(guó)內(nèi)高校很多線代課很“拉胯”,實(shí)際上只要用心,配上一些教學(xué)能力,一個(gè)老師完全可以在多年授課經(jīng)驗(yàn)的幫助下,很清楚地教授很多知識(shí)點(diǎn)。本教程就是一個(gè)例子,在對(duì)比本教程與你所接受的高校線代教育時(shí),應(yīng)注意如下幾點(diǎn)區(qū)分: 1) 閱讀本教程的讀者大多已接受過(guò)基本的線代課程,對(duì)相關(guān)概念已有一定認(rèn)識(shí),此為本教程較高校線代課程占優(yōu); 2) 本教程只能夠通過(guò)文字和圖片,不能夠面對(duì)面教學(xué),此為本教程占劣; 3) 高校線代課程更加系統(tǒng),有更充足的時(shí)間鋪墊,本教程需要通過(guò)一篇3000字的文章講清楚課程行進(jìn)末段中的重難點(diǎn),此為本教程占劣; 以上僅僅簡(jiǎn)單羅列,實(shí)際上還有很多本教程的潛在劣勢(shì)。雖然本教程的劣勢(shì)在數(shù)量上占多,但并不見(jiàn)得實(shí)際上就占劣,只是希望讀者在對(duì)比時(shí)能夠注意到這些區(qū)分。 上篇文章評(píng)論區(qū)有人提到,線代課程沒(méi)有我說(shuō)的那么不堪,很多東西老師都講了,而是學(xué)生第一次學(xué)習(xí)不理解。我自己曾經(jīng)是學(xué)過(guò)線代課,所以在面對(duì)這種觀點(diǎn)時(shí),不僅不贊同,更感到憤怒。因?yàn)槲业木€代老師講得就是很爛,花了半個(gè)學(xué)期講行列式,講矩陣以后連坐標(biāo)系都沒(méi)畫(huà)過(guò),叫人怎么理解?而我聽(tīng)說(shuō)的有的老師可能會(huì)提,但并不會(huì)通過(guò)各種方式來(lái)幫助學(xué)生更好地理解。 我知道這里有個(gè)不能“以偏概全”的問(wèn)題,而我所知道的永遠(yuǎn)是“偏”。但是我相信我自己的經(jīng)歷,和我描述的現(xiàn)象是有代表性的——國(guó)內(nèi)很多學(xué)生都有過(guò)類似的經(jīng)歷,而關(guān)注我的粉絲可能絕大多數(shù)都遭遇過(guò)類似的老師。 所以,我也希望大家能夠更多地在評(píng)論區(qū)理性地交流自己的經(jīng)歷和觀點(diǎn),或許你們的發(fā)聲不能夠改變現(xiàn)實(shí)的情況,同時(shí)你們說(shuō)再多,或許也說(shuō)服不了那些看不清現(xiàn)實(shí)的人。但是不管你們支持還是反對(duì)我,這至少有兩個(gè)直接的好處:1)讓我知道我用心更新各種教程是有意義的,有一部分人也確實(shí)需要用心編排的教程,2)看到有意義的話題被討論和思考,能夠改善我的情緒和精神健康。 最后,我知道我上述的教程也仍有很多可以改進(jìn)的地方,我也會(huì)在未來(lái)的時(shí)光里不停地去改善,因?yàn)?strong>教程的修改和我對(duì)學(xué)科概念理解的深入是同步的。同時(shí),我的教程并不全面,并沒(méi)有涉及很多計(jì)算的細(xì)節(jié)。但是我一直堅(jiān)信,傳授知識(shí)沒(méi)有必要把所有知識(shí)都塞給學(xué)生,知識(shí)的理解是沒(méi)有辦法硬塞的,這種主動(dòng)權(quán)永遠(yuǎn)在學(xué)生自己身上。而好的教程應(yīng)該是啟發(fā)性的,它幫助學(xué)習(xí)者在抓住最本質(zhì)最核心的東西的同時(shí),促發(fā)學(xué)習(xí)者對(duì)相關(guān)議題的興趣,從而使其能夠自行探索和學(xué)習(xí)一些更簡(jiǎn)單和機(jī)械化的“周邊”內(nèi)容。 |
|
|
來(lái)自: imnobody2001 > 《Algebra》