數學家最初發明行列式和矩陣是為了解決什麼問題?

怎麼從本質上去理解矩陣和行列式?它們之間有什麼聯繫?它們有什麼實際應用?尤其是在計算機方面有哪些應用?


下面是我們《馬同學線性代數基礎班》的節選,正好回答這個問題的一部分:「矩陣、矩陣乘法的由來是什麼?「

矩陣、矩陣乘法最初的目的是為了解線性方程組。

在現實生活中有很多線性方程組,比如:

1 YC_ rC_ b 色彩空間

電視機成像的原理大概是,通過一把電子槍,把電子打到屏幕上:

不過對於這樣的彩色圖片:

根據之前對色彩空間的介紹,我們以 RGB 為基,可張成整個色彩空間。

所以,我們可以使用三把電子槍,分別是 RGB ,來呈現出彩色的畫面:

但是,電視台那邊過來的信號不是 RGB ,而是 YC_ rC_ b ,其中 YC_ rC_ b 是對色彩空間的另外一種分解方式。

這點從我們電視背後的介面就可以看出,在下圖中標註的色差介面,即 YP_ rP_ b ,其實就是 YC_ rC_ b (兩者的區別不是在色彩分解上,而是電視成像技術中的「逐行掃描」以及「隔行掃描」。也有資料說,一個是數字信號,一個是模擬信號,僅供參考):

下面是之前彩圖的 YC_ rC_ b 分解,第二幅圖就是灰度圖,也就是 Y

這是有原因的,因為最早的電視是黑白電視,升級到彩色電視,但是依然要保持對黑白電視的兼容, YC_ rC_ b 中的 Y 正好是灰度圖,可以讓黑白電視成像。

假如你是黑白電視,背後應該就只有一個視頻輸入介面,只需插入電視台過來的 Y 信號就可以觀看了。

但是,如果是彩色電視,那麼得到電視台傳過來的 YC_ rC_ b 信號,就需要解如下方程組得到 RGB ,給三把電子槍使用:

 egin{cases} 0.299R+0.587G+0.114B=Y\ 0.500R-0.419G-0.081B+128=C_ r\ -0.169R-0.331G+0.500B+128=C_ b end{cases}

這個方程組怎麼解呢?

2 高斯消元法

已知 YC_ rC_ bRGB 實際是一個線性方程組,解這種方程組有一個通用的辦法,高斯消元法。

2.1 高斯消元法的目標

之前的方程不好計算了,我們舉一個簡單的例子:

 egin{cases} 1x+2y=3\ 3x+4y=5 end{cases}

從幾何上來講,兩個方程都是直線,求解方程組就是找到兩根直線的交點:

因為都是直線,所以我們稱為線性方程組。

求解的思路幾乎是句廢話,即找到交點的 x,y 坐標:

也就是把方程化成這個樣子:

 egin{cases} x=?\ y=? end{cases}

這就是高斯消元法的目標。

2.2 高斯消元法的思路

要達到這個目標,高斯消元法的思路是,第一行把這些給消了:

第二行把這些給消了:

第三行反過來,把這些給消了:

第二行,把這些給消了:

最後,達到目標:

2.3 例子

下面我們看看怎麼用高斯消元法來解。

先標註一下方程組, r_1 表示第一行, r_2 表示第二行:

 egin{cases} 1x+2y=3 (r_1)\ 3x+4y=5 (r_2) end{cases}

r_1 表示新的第一行, r_2 表示新的第二行,我們進行以下操作:

r_1

其中, r_2 的意思就是:

我們得到新的方程組:

 egin{cases} 1x+2y=3 (r_1)\ -2y=-4 (r_2) end{cases}

按照這個思路,完整的解題過程如下:

 displaystyle egin{align*} egin{cases} 1x+2y=3\ 3x+4y=5 end{cases} qquad xrightarrow {r_2

至此,解出答案:

3 標記法

英國數學家,阿瑟·凱萊(1821-1895)

阿瑟·凱萊對於看似簡單的高斯消元法進行了研究,得出了驚人的結果。

他當時研究矩陣的動機出於對線性方程組計算的簡化。

比如,下面是一個線性方程組:

egin{cases} a_{11}x+a_{12}y=b_1\ a_{21}x+a_{22}y=b_2 end{cases}

對於這樣一個線性方程組,在固定未知數的順序( x 出現在第一個位置, y 出現在第二個位置,常數在等號右邊)後,且保證每個未知數都出現(不出現時,係數為0),方程組就只需要係數來表示了。

按照上面的規定,方程組可以簡寫為如下數塊:

egin{pmatrix} a_{11}  a_{12}  b_1 \ a_{21}  a_{22}  b_2 end{pmatrix}

3.1 練習題

Q :將

egin{cases} 2x+z=2\ 2y+3x-z=1\ 4x+y=0 end{cases}

用數塊來表示。

A :

在保證順序且每個未知數都出現的原則下,原方程組可改寫為:

egin{cases} 2x+0y+1z=2\ 3x+2y-1z=1\ 4x+1y+0z=0 end{cases}

因此,方程組寫成數塊形式為:

egin{pmatrix} 2  0  1  2 \ 3  2  -1  1 \ 4  1  0  0 end{pmatrix}

4 凱萊的高斯消元法

我們開始用凱萊的方法進行高斯消元法。

4.1 方程簡化

還是解之前的方程組:

 egin{cases} 1x+2y=3\ 3x+4y=5 end{cases}

將方程組簡化為數塊:

egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix}

之前說過,高斯消元法的目標是:

 egin{cases} x=?\ y=?\ end{cases}

寫完整點就是:

 egin{cases} x+0y=?\ 0x+y=?\ end{cases}

因此我們的目標就是要把數塊變成下面這個樣子:

egin{pmatrix} 1  0  ? \ 0  1  ? end{pmatrix}

對應之前的高斯消元法:

 displaystyle egin{align*} egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix} qquad xrightarrow {r_2

得到結果:

egin{pmatrix} 1  0  -1 \ 0  1  2 end{pmatrix}implies egin{cases} x=-1\ y=2end{cases}

正如你看到的,解起來並不複雜,但是要將過程描述清楚卻很繁瑣,這很不數學。

能不能更優雅的展現這個過程呢?

4.2 數塊乘法

數學家發明了一種數塊的乘法,簡潔地進行高斯消元法。

4.2.1 單行乘法

對於:

 egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix} qquad xrightarrow {r_1

用數塊乘法表示為:

4.2.2 多行乘法

對於:

 egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix} qquad xrightarrow [r_2

之前的式子都忽略了 r_1 ,這裡為了更清晰一些,標註了出來。

它表達了兩個過程。

r_1

將此定義為:

egin{pmatrix} 1  0 \ -3  1 end{pmatrix}egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix}=egin{pmatrix} 1  2  3 \ 0  -2  -4 end{pmatrix}

其中第一行運算的結果放在第一行,第二行運算的結果放在第二行:

4.3 過程簡化

有了這個運算規則後,整個高斯消元法就可以表示如下:

 displaystyle egin{align*} egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix} implies egin{pmatrix} 1  0 \ -3  1 end{pmatrix}egin{pmatrix} 1  2  3 \ 3  4  5 end{pmatrix}=egin{pmatrix} 1  2  3 \ 0  -2  -4 end{pmatrix}\ qquad \  implies egin{pmatrix} 1  0 \ 0  -frac{1}{2} end{pmatrix}egin{pmatrix} 1  2  3 \ 0  -2  -4 end{pmatrix}= egin{pmatrix} 1  2  3 \ 0  1  2 end{pmatrix}\ qquad \  implies egin{pmatrix} 1  -2 \ 0  1 end{pmatrix}egin{pmatrix} 1  2  3 \ 0  1  2 end{pmatrix}= egin{pmatrix} 1  0  -1 \ 0  1  2 end{pmatrix}end{align*}

至此,得到答案:

egin{pmatrix} 1  0  -1 \ 0  1  2 end{pmatrix}implies egin{cases} x=-1\ y=2end{cases}

還可以簡寫如下:

egin{pmatrix}1-2\01end{pmatrix}egin{pmatrix}10\0-frac{1}{2}end{pmatrix}egin{pmatrix}10\-31end{pmatrix}egin{pmatrix}123\345end{pmatrix}=egin{pmatrix}10-1\012end{pmatrix}

可見,數塊以及對應的乘法,在高斯消元法的過程中,非常簡潔清楚易用。

5 總結

阿瑟·凱萊在1858年的《矩陣理論紀要》的論文中,給這個數塊以合法的數學地位,取了一個名字:矩陣。剛才的數塊乘法自然也被稱為了矩陣乘法

後面,又發現了現實中有很多線性方程、線性問題(比如微積分),所以又扯出了一大串內容出來。但不管怎麼,都是從這裡開始的。

打一個硬廣,對《馬同學線性代數基礎班》感興趣的可以到公眾號:「馬同學高等數學「去報名參加。


行列式最初發明的時候就是用於解線性方程,矩陣很明顯,就是用來表示線性方程的係數。根據維基百科(行列式)「行列式的概念最初是伴隨著方程組的求解而發展起來的。最初的雛形由日本數學家關孝和與德國數學家戈特弗里德·萊布尼茨各自獨立得出,時間大致相同。」

如果你說要理解,我可以很簡單地說說看。其實匿名用戶說得很好,我願意說得再具體些:

(1)行列式是一個函數,但是這是個廢話——我們要知道它對應的值究竟是什麼——具體的說,這個函數的返回值是一個體積。例如:2 x 2 的行列式明顯就是一個平行四邊形的有向面積,具體怎麼理解,還是看維基百科。這樣,你就可以理解,為什麼行列式如果有兩行相等,得到的值等於零了,因為根本張不開,體積當然為 0。

(2)矩陣用來表示線性變換。一個矩陣,右乘一個向量 v,得到一個向量 u,這個矩陣就完成了從 v 到 u 的變換。

在計算機方面有很多應用,且不說計算幾何中幾乎處處都是於此有關的問題,矩陣的分析對於圖論問題也是很重要的,例如一個圖的鄰接矩陣稍加修改,則頭幾個本徵向量就可以對應稱對圖的 Community Detection。

關於這些理解,隨意看看參考書應該都能找到,我說個大概,你再多想想,自然也就明白了。

好的線性代數參考書,推薦《線性代數應該這樣學》。


歡迎看看中文維基的相關條目:

行列式

http://zh.wikipedia.org/wiki/%E8%A1%8C%E5%88%97%E5%BC%8F

矩陣

http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%98%B5


最近看到了幾篇非常經典的博客,加深了我對矩陣和行列式的理解。如果想要對線性代數有更進一步理解的朋友不妨去看看。下面貼出博客的地址:

矩陣的理解(一):http://blog.csdn.net/myan/article/details/647511

矩陣的理解(二): http://blog.csdn.net/myan/article/details/649018

矩陣的理解(三): http://blog.csdn.net/myan/article/details/1865397


可以簡單的認為矩陣最初是為了簡記方程組並求解,後來通過改變觀察角度例如分塊解讀出了巨量信息。


先講個不相關的故事。英國作家Lewis Carroll的愛麗絲夢遊仙境大受歡迎後,聽說女王下令讓他把他寫的所有書都寄給女王一本。於是女王收到了An Elementary Treatise on Determinants, With Their Application to Simultaneous Linear Equations and Algebraic Equations(淺論行列式,及其在線性和代數方程組中的應用),大家可以帶著這個故事再去讀愛麗絲。

下面回答:

行列式是一個函數。他取一個方矩陣為變數,得到一個數。

矩陣和行列式從發明以來,就用來處理兩個問題:方程組,空間變換

這兩個問題何處不在?所以矩陣和行列式何處派不上用場?


常見的一元函數y=f(x)是研究兩個數x,y 的關係。當研究多元參數的關係時,可把它們看高維空間里的多元向量 (x1,x2....) (y1,y2....)之間的關係

矩陣是對多元向量的線性操作,如 (x1,x2....)經過矩陣M的變化可變為 (y1,y2....)


矩陣的行列式代表操作的強度,感覺像是"我這個操作要把這個向量拉長N倍"

行列式為0代表矩陣M做的是降維操作,即矩形M把可把向量 (x1,x2....)拍扁成向量 (y1,y2....),但 (y1,y2....)無法通過逆操作恢復到原來的向量 (x1,x2....),有些信息已丟失。


怎麼講呢,矩陣的作用有很多,單純從矩陣的定義來看,只是一個二維數組而已。

但是,從數學標準教科書上來講,矩陣的引入來自求解線性方程組,對於一個線性方程組,可以把其表示成AX=B的形式,其中A為n×m矩陣,這是通過研究這幾個矩陣來研究方程組解的關係,我猜測這大概是最初的引用(僅僅是猜測)

對於計算機來講,一個是影響是二維數組,這僅僅是一種數據結構;二是在數學方面上的影響,這個有很多,矩陣在數學中表示的含義會衍生出一種種在計算機中的應用,如矩陣在研究方程組的解(不僅僅是線性)、圖論、幾何(方陣可以表示旋轉)、以及很多數值計算(很多非線性的東西用線性來逼近精確解,線性就用到矩陣)。

至於行列式,只是一個函數而已,從方陣到方陣中元素所在集合的一個映射。行列式的值和矩陣的性質有些關係。


只說說矩陣和計算機相關的部分吧,我記不了太多,大家幫著補充。

1、用矩陣配合lup分解,可以求解線性方程,類似的方法可以用來解決線性規劃的問題(單純形法),線性規劃在工業領域運用還是比較廣的,比如鋼材原料是10米,需要切成4.7米、3.2米、1.3米各多少多少根......怎麼切最省材料。

2、最小二乘需要用到矩陣,該方法主要用作從一組(包含x,y兩個值)存在一定誤差的實驗結果,反推函數。

3、配合矩陣,有種匈牙利方法,用於解決指派問題(也可轉為二分圖的最大匹配)

4、有種叫做楊氏矩陣的數據結構

5、矩陣乘法可以用來解決最短路徑問題,也可以用來求聯通圖裡面2點間指定長度的路徑數量。

6、矩陣乘法或矩陣的冪可以用來求斐波那契數列的第n項(可以推廣到廣義斐波那契數列)。

7、用於計算一組向量之間的距離。

8、矩陣運算本身就涉及眾多演算法。


b站有個不錯的視頻 從幾何角度可以很容易理解

線性代數的本質

降維打擊


拿自然語言處理裡面文章分類來舉例,行列式和矩陣可以加快分類的速度。省去買1000萬設備的錢。

根據2016年8月今日頭條給出的官方數據,他們的「頭條號」平台的賬號數量已經超越19萬個,假設平均每人每天發布一篇,那麼保守估計一周就能產生100萬的文章。

今日頭條是屬於你喜歡什麼就給你更多類型的平台,那麼當他知道你喜歡看帶雞血的雞湯文時,怎麼知道新產生的這100篇文章哪些是雞湯文要推薦給你呢?

首先要做的是分類

怎麼分類來著?可以回顧我之前總結的三步 如何把一堆文章分類

在確定了辭彙表,並且計算出各文章的辭彙向量後,就要兩兩對比了。這是一道小學數學題:

100萬文章,兩兩對比,一共要比幾次?

答案是:[100萬*(100萬-1)]/2 = 5000億

此處附帶一條基礎信息:一台計算機每秒可以比對1000次。

那麼求要多少年?

答案是15年。

卧槽.... 這是不是太慢了... 這才一周的文章啊

能不能加個速?

方法有兩個,

第一是用一些並行計算的工具,比如像google的MapReduce之類的工具,用多台計算機並行處理,比如買上個1000台,那麼計算就只要0.015年,5.5天了。

第二是把大學線性代數裡面的矩陣挖出來,把大矩陣拆成三個小矩陣相乘,時間可以直接減少到0.015年。所以... 矩陣相關的運算有時候還是有實際價值的,比如幫你節約1000台電腦的錢,按macbook1萬一台來算,大概值個1000萬RMB。


線性方程組的公式解問題


線性代數是用來描述運動的,矩陣是運動方向,向量就是對象。這是建立在多維空間上的運動的計算。矩陣相乘是新的矩陣代表新的方向,矩陣乘向量就是對象新的位置。


最近在上線性代數習題課,所謂矩陣的產生我覺得是由於解多元線性方程組的解,然後消元的過程發現未知量沒什麼用直接去掉,單獨拿出來的一個數學工具。


在高等代數裡面,引入行列式和矩陣都是通過方程組引入的,以及初等變換都是通過方程來解釋的,所以可能因為方程書寫太麻煩,就用行列式和矩陣來表示吧


把複雜的空間概念,甚至四維,五維的概念,可以用平面的二維結構進行整理和計算,這難道不神奇嗎?


現在的推薦演算法所要解決的問題,可以用矩陣準確的抽象出來和建模。把人和物的關係用矩陣的行和列分別對應,矩陣對應坐標為某人對某物的一個rating。所以推薦演算法就是由這些已經填充的值,通過某些transform來填充那些未知的值。這就是推薦演算法。


矩陣用於表達是R^n到R^m的線性映射,可以認為是方程組表達方式的一種語法糖。


推薦閱讀:

二階張量與矩陣的區別與聯繫是什麼?
矩陣行列式是如何求二階導數?
矩陣奇異值與矩陣範數之間有什麼聯繫?
如何直觀理解矩陣和線性代數?
hessian矩陣的特徵向量有什麼含義?

TAG:數學 | 線性代數 | 矩陣 | 行列式 |