天天看點

關于線性代數的一點點心得

大學的時候上過線性代數,研究所學生的時候上過矩陣論,但是現在用起相關的知識來還是很不順手,感覺是還沒有入門。因為矩陣是到大學才學的東西,以前沒有接觸過,我覺得思考矩陣的方式和以前的數學有很大的差別。我也一直在想為什麼對矩陣總不能開竅,我想了想,可能是我這矩陣的自學的。因為實在是不喜歡大學的矩陣老師,是以基本上沒有上,等到考研的時候才重新自學,而且到考研前幾天還一片茫然,不知所雲,但是我考研數學得分最多就是矩陣部分。世界上有些東西就是很出人意料,不過意料之外,情理之中,因為考試那幾個題我以前都做過,我貌似也就會這些題(

偷笑~),這得感謝考研數學的那本神書啊,寫矩陣部分的人貌似叫李永樂,不知道他現在還神不神啊,嘻嘻。。。

言歸正傳,最近在看麻省理工的線性代數課程。剛看到第二節課程,但是我已經發現了我思考矩陣問題上的一個局限,那就是我從來沒有從全局的方式來思考,也就是隻注重每個數字,而沒有将矩陣看成一個整體。或許這就是我矩陣總不靈光的根源吧。

下面就記錄一下我的點點收獲,關于矩陣乘法。

首先,線性代數課從是從我們最熟悉的線性方程組開始:

a11*x+a12*y+a13*z=b1

a21*x+a22*y+a23*z=b2

a31*x+a32*y+a33*z=b3

然後這個方程組可以這樣表示:

Ax=b

然後是矩陣乘法。學過矩陣的人都知道矩陣乘法的公式,一行和一列對應的元素相乘得到一個結果加入結果矩陣的特定位置,這個就不說了。但是在MIT的現代課上,教授提出另外一種思路。比如,Ax=b 可以從線性組合的角度來思考。

A=[a1,a2,a3,...] a1,a2,a3都是列向量。那麼Ax其實是A的列向量的線性組合:Ax=x1*a1+x2*a2+x3*a3...注意,x1,x2,x3是數字,a1,a2是列向量。

照此思路:

xA=[x1,x2,x3,...][a1;a2;a3...]=x1*a1+x2*a2+x3*a3+...

其中a1,a2是行向量,也就是說把A按照行來分塊

想AB=C這種矩陣乘法也可以按照這種思路,一行一行的算或是一列一列的算,而不是一個一個算。

方法一:将B按照列來分塊

AB=A[b1,b2,b3]=[Ab1,Ab2,Ab3],然後又到了上面Ax=b的模式了。

這種解法給了我們一種新的了解C 的方式,那就是,C中的某列是A中的列向量的線性組合,系數就是B中相應的列。

方法二:将A按照行來分塊

AB=[a1;a2;a3]B=[a1B;a2B;a3B],然後又到了xA的模式了。

上面已經講到了三種矩陣乘法的方法,A列*B行,A列的線性組合,B行的線性組合,下面還有兩種求矩陣乘積。

A的列向量*B的行向量,然後所有的矩陣求和

求矩陣的成績的最經典的算法是A的第i行向量乘以B的第j列向量得到結果矩陣中的Cij。麻省理工的那個線性代數提出了一個新的方法,就是用A的列乘以B的行。其實,可以相出來m-by-n的矩陣A的列向量是m-by-1的,n-by-p的B矩陣的行向量是1-by-p的,兩個向量相成的結果是m-by-p維的矩陣,次元和C的相等。是以,C應該可以通過A的各個列與B的對應行相乘得到的結果矩陣相加。的确是這樣的。

A=[1 2 

     3 4]

B=[5 6

     7 8]

A*B=[1;3]*[5 6]+[2;4]*[7 8]=[5 6;15 18]+[14 16;28 32]=[19 22;43 50]

其實一個n-by-1向量乘以一個1-by-m的向量是很好求的,因為得到的這些矩陣的的秩都是為1的。

如[1;3]*[5 6]=[5 6;3*5 3*6] 或是這麼寫

[1*5 1*6

3*5 3*6]

還有一個求矩陣乘法的方法是先分塊,再相乘。