線性代數(三)行列式的來歷

線性代數(三)行列式的來歷

來自專欄 馬同學高等數學

行列式是線性變換的伸縮因子,在這篇文章裡面已經介紹過了。

本文想談的是行列式在歷史中是怎麼演變出來的,主要以下幾個問題:

  • 定義行列式的目的是什麼?
  • 行列式出現的思路是什麼?
  • 為什麼用「全排列」、「逆序數」這麼晦澀的名詞來定義行列式?

1 定義行列式的目的

歷史上,定義行列式的目的就是為了解線性方程組。

下面這個方程組:

egin{cases}1x_1+2x_2=3\3x_1+4x_2=5end{cases}

從幾何上來講,兩個方程都是直線,解就是它們的交點:

通過高斯消元法可以得到唯一解:

egin{cases}x_1=-1\ x_2=2end{cases}

一般的,對於二元一次線性方程組:

egin{cases}a_{11}x_1+a_{12}x_2=b_1\ a_{21}x_1+a_{22}x_2=b_2end{cases}

如果它有唯一解,那麼通過高斯消元法容易得到:

egin{cases}x_1=displaystyle frac{b_1a_{22}-a_{12}b_2}{a_{11}a_{22}-a_{12}a_{21}}\quad \ x_2=displaystyle frac{b_2a_{11}-a_{21}b_1}{a_{11}a_{22}-a_{12}a_{21}}end{cases}

對於三元一次線性方程組:

egin{cases}a_{11}x_1+a_{12}x_2+a_{13}x_3=b_1\a_{21}x_1+a_{22}x_2+a_{23}x_3=b_2\ a_{31}x_1+a_{32}x_2+a_{33}x_3=b_3end{cases}

如果它有唯一解,同樣可以通過高斯消元法得到:

egin{cases} x_1=displaystylefrac {b_1a_{22}a_{33}-b_1a_{32}a_{23}-b_2a_{12}a_{33}+b_2a_{32}a_{13}+b_3a_{12}a_{23}-b_3a_{22}a_{13}}{a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}\quad\ x_2=displaystylefrac {a_{11}b_2a_{33}-a_{11}b_3a_{23}-a_{21}b_1a_{33}+a_{21}b_3a_{13}+a_{31}b_1a_{23}-a_{31}b_2a_{13}} {a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}\ quad\x_3=displaystylefrac {a_{11}a_{21}b_3-a_{11}a_{32}b_2-a_{21}a_{12}b_3+a_{21}a_{32}b_1+a_{31}a_{12}b_2-a_{31}a_{22}b_1} {a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}end{cases}

n 元一次線性方程組的解可想而知,會更加複雜。

簡化n 元一次線性方程組的解,找出其中的規律,在這個過程中產生了行列式。

2 定義行列式的思路

大家可能習慣了這樣的數學:

歐氏幾何五大公理implies 三角形的內角和為180^circ

或者矩陣乘法的定義(可以參考這篇文章):

高斯消元法 	o 簡化標記 	o 矩陣及其乘法

以上數學的劇情都是直線發展的。但是行列式的定義思路要曲折些:

想解方程組 	o 構造行列式 	o 證明行列式可解方程組	o 構造成功

有點像經常說的,大膽假設、小心求證。下面我們來看看這一過程。

3 低階行列式

3.1 二階行列式

3.1.1 定義

二階行列式是這麼定義的,交叉相乘,之後相減:

3.1.2 驗證

再看看剛才的二元一次方程組的解:

egin{cases} x_1=displaystyle frac{b_1a_{22}-a_{12}b_2}{a_{11}a_{22}-a_{12}a_{21}}\ quad \x_2=displaystyle frac{b_2a_{11}-a_{21}b_1}{a_{11}a_{22}-a_{12}a_{21}}end{cases}

它的解的分母都是:

a_{11}a_{22}-a_{12}a_{21}

套用剛才定義的二階行列式的符合和規則可以得到:

egin{vmatrix}a_{11}&a_{12}\a_{21}&a_{22}end{vmatrix}=a_{11}a_{22}-a_{12}a_{21}

分子可以分別表示為:

b_1a_{22}-a_{12}b_2=egin{vmatrix}b_1&a_{12}\b_2&a_{22}end{vmatrix}

b_2a_{11}-a_{21}b_1=egin{vmatrix}a_{11}&b_1\a_{21}&b_2end{vmatrix}

則線性方程的解表示為:

egin{cases} x_1=displaystyle frac{b_1a_{22}-a_{12}b_2}{a_{11}a_{22}-a_{12}a_{21}}\ quad \ x_2=displaystyle frac{b_2a_{11}-a_{21}b_1}{a_{11}a_{22}-a_{12}a_{21}}end{cases}Longleftrightarrowegin{cases} x_1=displaystyle frac{egin{vmatrix}b_1&a_{12}\b_2&a_{22}end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}\a_{21}&a_{22}end{vmatrix}}\ quad\ x_2=displaystyle frac{egin{vmatrix}a_{11}&b_1\a_{21}&b_2end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}\a_{21}&a_{22}end{vmatrix}}end{cases}

經過驗證,這樣定義二階行列式是合理的,可以達到我們預設的解線性方程組的目的。

3.2 三階行列式

3.2.1 定義

underbrace{egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}_{三階行列式} =underbrace{a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{11}a_{23}a_{32}-a_{12}a_{21}a_{33}-a_{13}a_{22}a_{31}}_{運算規則}

比較複雜,可以靠對角線法則進行記憶:

3.2.2 驗證

有了三階行列式的定義,則三元方程組的解:

displaystyleegin{cases}x_1=displaystylefrac {b_1a_{22}a_{33}-b_1a_{32}a_{23}-b_2a_{12}a_{33}+b_2a_{32}a_{13}+b_3a_{12}a_{23}-b_3a_{22}a_{13}}{a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}\quad\ x_2=displaystylefrac{a_{11}b_2a_{33}-a_{11}b_3a_{23}-a_{21}b_1a_{33}+a_{21}b_3a_{13}+a_{31}b_1a_{23}-a_{31}b_2a_{13}} {a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}\quad\ x_3=displaystylefrac {a_{11}a_{21}b_3-a_{11}a_{32}b_2-a_{21}a_{12}b_3+a_{21}a_{32}b_1+a_{31}a_{12}b_2-a_{31}a_{22}b_1}{a_{11}a_{22}a_{33}-a_{11}a_{32}a_{23}-a_{21}a_{12}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{31}a_{22}a_{13}}end{cases}

可以通過三階行列式來表示:

 x_1=frac{egin{vmatrix}b_1&a_{12}&a_{13}\ b_2&a_{22}&a_{23}\b_3&a_{32}&a_{33}end{vmatrix}} {egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}quad x_2=frac{egin{vmatrix}a_{11}&b_1&a_{13}\a_{21}&b_2&a_{32}\a_{31}&b_3&a_{33}end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}quad x_3=frac{egin{vmatrix}a_{11}&a_{12}&b_1\ a_{21}&a_{22}&b_2\a_{31}&a_{32}&b_3end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}

經過驗證,這樣定義三階行列式也是合理的。

4 行列式的定義

n 階行列式應該怎麼定義?

具體的過程肯定是,數學家們(應該是凱萊、范德蒙這些先驅)廢了無數草稿紙,反覆驗算各階線性方程組,從中總結出來的。

為了介紹行列式的定義,先引入兩個概念。

4.1 全排列

有如下三個數字:

1,2,3

總共有以下6種不重複的排列方式:

 1,2,3quad 1,3,2quad 2,1,3\2,3,1quad 3,1,2quad 3,2,1

這就是全排列。

n 個不同的元素排成一列,叫做這n 個元素的全排列(簡稱排列)。

再舉個例子,如下四個數字:

1,2,3,4

總共有以下24種不重複的排列方式,可以自行驗算。

4.2 逆序數

比如有這麼一個數列:

3,2,5,4,1

規定:

  • 從小到大為正序
  • 否則為逆序

比如:

上圖中可以看出,沒有一個逆序的,因為5是第三個數字,所以用下列的負號來表示沒有逆序:

t_3=0

再比如:

數列內所有的逆序數為:

逆序數定義為:

egin{aligned}t&=sum_{i=1}^{5}t_i\&=t_1+t_2+t_3+t_4+t_5\ &=6end{aligned}

在一個排列中,如果一對數的前後位置與大小順序相反,即前面的數大於後面的數,那麼它們就稱為一個逆序。一個排列中逆序的總數就稱為這個排列的逆序數。

再比如數列:

3,1,4,5,2

數列的逆序數為4,可以自行驗證。

4.3 通過全排列和逆序數定義三階行列式

有了全排列和逆序數,就可以來定義行列式了。

以三階行列式為例:

 egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix} =a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{11}a_{23}a_{32}-a_{12}a_{21}a_{33}-a_{13}a_{22}a_{31}

來觀察每一項的腳標,腳標第一項都是按照「1,2,3 」排列的:

a_{{color{red}1}1}a_{{color{red}2}2}a_{{color{red}3}3}quad a_{{color{red}1}2}a_{{color{red}2}3}a_{{color{red}3}1}quad a_{{color{red}1}3}a_{{color{red}2}1}a_{{color{red}3}2}\ -a_{{color{red}1}1}a_{{color{red}2}3}a_{{color{red}3}2}quad -a_{{color{red}1}2}a_{{color{red}2}1}a_{{color{red}3}3}quad -a_{{color{red}1}3}a_{{color{red}2}2}a_{{color{red}3}1}

而腳標的第二項是「1,2,3 」的全排列:

egin{aligned} a_{1{color{red}1}}a_{2{color{red}2}}a_{3{color{red}3}}&&1,2,3\ -a_{1{color{red}1}}a_{2{color{red}3}}a_{3{color{red}2}}&&1,3,2\-a_{1{color{red}2}}a_{2{color{red}1}}a_{3{color{red}3}}&&2,1,3\a_{1{color{red}2}}a_{2{color{red}3}}a_{3{color{red}1}}&&2,3,1\ a_{1{color{red}3}}a_{2{color{red}1}}a_{3{color{red}2}}&&3,1,2\-a_{1{color{red}3}}a_{2{color{red}2}}a_{3{color{red}1}}&&3,2,1end{aligned}

正負號怎麼來的呢?是由逆序數決定的:

egin{aligned}a_{1{color{red}1}}a_{2{color{red}2}}a_{3{color{red}3}}&&1,2,3implies t=0&&(-1)^t=+1\ -a_{1{color{red}1}}a_{2{color{red}3}}a_{3{color{red}2}}&&1,3,2implies t=1&&(-1)^t=-1\ -a_{1{color{red}2}}a_{2{color{red}1}}a_{3{color{red}3}}&&2,1,3implies t=1&&(-1)^t=-1\ a_{1{color{red}2}}a_{2{color{red}3}}a_{3{color{red}1}}&&2,3,1implies t=2&&(-1)^t=+1\ a_{1{color{red}3}}a_{2{color{red}1}}a_{3{color{red}2}}&&3,1,2implies t=2&&(-1)^t=+1\ -a_{1{color{red}3}}a_{2{color{red}2}}a_{3{color{red}1}}&&3,2,1implies t=3&&(-1)^t=-1end{aligned}

整個過程為:

left.egin{aligned}三個數字:1,2,3\quad\全排列\quad\逆序數\end{aligned}
ight}implies 三階行列式

三階行列式可以定義為:

egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}=sum (-1)^t a_{1p_1}a_{2p_2}a_{3p_3}

其中,t 為排列p_1p_2p_3 的逆序數,sum 表示對「1,2,3 」的所有排列「p_1p_2p_3 」求和。

這種定義方式和之前的對角線定義方式得到的結果是一樣的,但是可以推廣到n 階。

4.4 定義

n 階行列式定義為:

D=egin{vmatrix}a_{11}&a_{12}&cdots&a_{1n}\ a_{21}&a_{22}&cdots&a_{2n}\vdots&vdots&quad&vdots\ a_{n1}&a_{n2}&cdots&a_{nn} end{vmatrix}

其值為:

 D=sum(-1)^ta_{1p_1}a_{2p_2}cdots a_{np_n}

其中,t 為排列a_{1p_1}a_{2p_2}cdots a_{np_n} 的逆序數,sum 表示對「1,2,cdots,n 」的所有排列「p_1p_2cdots p_n 」求和。

5 克拉默法則

那麼上面的n 階行列式的定義是否合適?我們用克拉默法則來驗收。

加百列·克萊姆(1704 - 1752),瑞士數學家,發現了可以通過行列式解線性方程組的克拉默法則(也稱之為克萊姆法則),讓行列式成為數學界的共識,是行列式的歷史源頭。

下面從具體的二元、三元一次方程組說起。

5.1 規律

觀察二元方程組的解:

 x_{color{red}1}=displaystyle frac{egin{vmatrix}color{red}{b_1}&a_{12}\color{red}{b_2}&a_{22}end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}\a_{21}&a_{22}end{vmatrix}} quad x_{color{red}2}=displaystyle frac{egin{vmatrix}a_{11}&{color{red}{b_1}}\a_{21}&{color{red}{b_2}}end{vmatrix}}{egin{vmatrix}a_{11}&a_{12}\a_{21}&a_{22}end{vmatrix}}

再觀察三元方程組的解:

x_{color{red}1}=frac{egin{vmatrix}{color{red}{b_1}}&a_{12}&a_{13}\ {color{red}{b_2}}&a_{22}&a_{23}\{color{red}{b_3}}&a_{32}&a_{33}end{vmatrix}} {egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}quad x_{color{red}2}=frac{egin{vmatrix}a_{11}&{color{red}{b_1}}&a_{13}\a_{21}&{color{red}{b_2}}&a_{32}\a_{31}&{color{red}{b_3}}&a_{33}end{vmatrix}} {egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}quad x_{color{red}3}=frac{egin{vmatrix}a_{11}&a_{12}&{color{red}{b_1}}\a_{21}&a_{22}&{color{red}{b_2}}\a_{31}&a_{32}&{color{red}{b_3}}end{vmatrix}} {egin{vmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\a_{31}&a_{32}&a_{33}end{vmatrix}}

可以看到如下規律:

  • 分母都是係數組成的行列式
  • 分子也是係數組成的行列式,只是對應於不同的x_i ,第i 列被替換為了常數項

推廣到n 元線性方程組的話,就是克拉默法則。

5.2 定義

如果有n 個未知數,n 個方程所組成的線性方程組,它的係數矩陣|A| 的行列式不等於零,即:

|A|=egin{vmatrix}a_{11}&cdots&a_{1n}\vdots&&vdots\ a_{n1}&cdots&a_{nn}end{vmatrix}
eq 0

則方程組有唯一解:

displaystyle x_1=frac{|A_1|}{|A|}quad x_2=frac{|A_2|}{|A|}quad...quad x_n=frac{|A_n|}{|A|}

其中A_j(j=1,2,...,n) 是把係數矩陣A 中第j 列的元素用方程組右端的常數項代替後所得到的n 階矩陣,即:

A_j=egin{pmatrix}a_{11}&cdots&a_{1,j-1}&{color{red}{b_1}}&a_{1,j+1}&cdots&a_{1n}\vdots&&vdots&{color{red}{vdots}}&vdots&&vdots\a_{n1}&cdots&a_{n,j-1}&{color{red}{b_n}}&a_{n,j+1}&cdots&a_{nn}end{pmatrix}

n 階行列式的定義出發可以證明:

n階行列式的定義implies 克拉默法則

這就說明行列式的定義是成功的(從行列式的定義出發,需要先證明幾個行列式的性質,然後證明克拉默法則,這裡就不引用了)。

為什麼要用「全排列」、「逆序數」這麼晦澀的名詞來定義行列式?完全是因為只有這樣定義,克拉默法則才成立。

廣告時間:

線性代數的各種概念都可以通過文中的形式進行講解,有興趣可以報名參加我們的「線代基礎課程」(報名方法:關注微信公眾號:馬同學高等數學,公眾號ID:matongxue314,點擊菜單欄的「線代課程」)。


推薦閱讀:

矩陣論筆記(2)
語料庫語言學基礎知識:矩陣(Haskell版)
gal2mat:將gal權重文件轉成n-by-n矩陣
矩陣和向量求導

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