談談線性代數這門課程有什麼用

談談線性代數這門課程有什麼用

對於初學者來說,記住線性代數的作用就是六個字,解線性方程組,就很好。當然許多人會反對,認為不只是解線性方程組。這樣的反對有效。但是,一開始可以認為是為的解線性方程組。

但是學生會問,在中學不是已經學過了解線性方程組嗎?什麼消元法加減法最後得出解。因此還要補充一句,線性代數這門課程是為的用計算機來解線性方程組而存在的。

就是說,不是人作筆算,或者通過某種技巧或者思考上的妙想來解出線性方程組,而是通過編寫一個程序,讓程序自動地做。

或者說,如果不是存在著計算機這種東西,那麼學線性代數的用處真的不是很大。

此外,中學學的解線性方程組,通常只有兩個未知變數,或者三個,當然有的老師虐待狂,會給四個甚至五個變數。但是如果為的應付高考,通常也就是二到四個變數撐死了。

但是大學學的是準備用計算機來解線性方程組的技術,那就需要編寫程序,那有可能線性方程組的個數是成千上萬個。會不會是無限多個?抽象的思維是會想到無限的。但是,真正用計算機來解,倒是不會,因為計算機只會處理有限個數據,無限多個,它就死機了。但是無限的想法還是重要的,不過就是想法,有的時候,抽象的思考很有用處,會減輕思考的負擔。當然,如果抽象地思維到了無限個,反而讓自己的思考更為困難,那還是沒有必要搞虐待狂。

當然,線性代數這門課並不教你具體編寫程序,而且它舉的例子經常仍然是三個數啊五個數什麼的,但是你在學習的時候,一個好的思考方式就是雖然只有三到五個數,但是想像有成千上萬個數,成千上萬個變數。

下面還是來從一個具體的例子說起。這是我小時候山東民間流傳的一個數學題,是一個二元一次線性方程組的題目。

題目是這樣:一個廟裡有大和尚也有小和尚,大和尚一個人一頓吃3個饅頭,小和尚一頓3個人吃一個饅頭。這個廟裡共一百個和尚,一頓恰好吃一百個饅頭,問有多少個大和尚多少個小和尚?當然,我在這裡直接給出答案就是有25個大和尚75個小和尚。

在中學是這樣列出方程組的,假設大和尚的人數為x個,小和尚的人數為y個,大和尚每頓共吃3x個饅頭,小和尚每頓吃x/3個饅頭。吃的饅頭總數和和尚的總數都是100個,因此而列出方程組為

[left{ {egin{array}{*{20}{c}}{x + y = 100}\{3x + frac{1}{3}y = 100}end{array}} 
ight.]

下面我要圍繞著這個線性方程組來進行現代科學和現代數學的思考。

從現代科學的角度看,一個廟是一個系統。其實不只是一個廟,世間每一事物都是一個系統,因此有電學系統力學系統導彈系統遊戲系統計算機系統等等,還有人體系統微生物系統,等等。

每一個系統都要用一組數字來描述它的狀態,叫狀態變數。比如說,你要研究人這個系統,要用一系列的數來描述人,比如他的身高,體重,血壓,等等,當然也可能有學歷,知識等等。當然狀態變數因為條件所限也不可能列出全部,只能夠列出你要研究的重要的那一部分。

在這個廟系統中,大和尚的數目x和小和尚的數目y就是重要的兩個狀態變數了,把這些變數列成一列,寫成left( {egin{array}{*{20}{c}}x\yend{array}} 
ight)然後用一個具體的黑體的字母x來表示它,就是{f{x}} = left( {egin{array}{*{20}{c}}x\yend{array}} 
ight)x就稱之為這個系統的狀態向量,但是經常現代數學也把向量叫變數的,因此也可以叫狀態變數,它描述了這個系統的狀態。

當然,在本例的廟系統中狀態向量x有兩個變數或者稱為兩個分量,這也稱x是一個2維向量。但是在更為複雜的系統中狀態向量會有更多個,比如說成千上萬個變數,通常記為

{f{x}} = left( {egin{array}{*{20}{c}}{{x_1}}\{{x_2}}\ vdots \{{x_n}}end{array}} 
ight)

有人要問那為什麼要這麼寫成一列啊?寫成一行不行么?其實也行的,無非是個規定。但是,在分析中,經常將向量寫成一列是一個好的習慣,因為它和線性代數的許多其它的記號相合。但是寫成一列也太費閱讀空間了,因此經常的寫法就是

[{f{x}} = {({x_1},{x_2}, ldots ,{x_n})^T}] 其中等號右邊的上標T代表轉置符號,就是將行變成列,列變成行。這樣寫省地方。

因此在這裡學習線性代數這門課程有一個重要之點,就是只用一個字母代表成千上萬個數,這件事情一個大學生的人生中,首次是在線性代數這門課中遇到的,而且狀態變數並不一定代表非要和解線性方程組有關係,也不一定非要和線性代數這個學科有關係,但是數學的記號,這種記法,首次在線性代數這門課中出現。

在現代數學的學習中,記號及表示的意思都是很重要的。一個科學技術的論文拿過來,有的人看不懂,是什麼地方看不懂?經常就是數學的記號看不懂。而一個人看到看不懂的東西,通常會產生崇敬感,會認為學問深。

人類使用一般人看不懂的記號來抬高自己的身價這一點是很重要的。在中國古代,主要是通過文言文來抬高身價,比如兩個文人坐在飯店裡吃飯,講的都是文言文,那旁邊的人就會表示崇敬,「聽不懂,學問深哪!」。而西方社會也是這樣,這時主要是靠懂得一些數學符號來表示學問深。

還是來說上面的例子,因為講好了必須由計算機來完成解方程組的任務,因此我們不關心方程組怎麼解,但是必須將問題抽象化,就是說,幾個變數或者常數都必須改用字母表示,這樣才可以進行一般化計算機編程,且能夠用計算機來解方程。

因此整個問題就描述為,一個廟裡共有n個和尚,其中x1個是大和尚,x2個是小和尚,一頓飯總共吃m個饅頭。大和尚每頓吃a個饅頭,小和尚每頓吃b個饅頭。因此方程組寫成:

[left{ {egin{array}{*{20}{c}}{{x_1} + {x_2} = n}\{a{x_1} + b{x_2} = m}end{array}} 
ight.]

但是這個數學模型仍然不好,沒有用到先進的數學記號,應當令

[{f{x}} = left( {egin{array}{*{20}{c}}{{x_1}}\{{x_2}}end{array}} 
ight),{f{A}} = left( {egin{array}{*{20}{c}}1&1\a&bend{array}} 
ight),{f{y}} = left( {egin{array}{*{20}{c}}n\mend{array}} 
ight)] 這樣整個線性方程組就可以寫成一種標準的形式是:

Ax=y

因此在科研論文中表示的線性方程組都是這個形式,只不過這裡的xy都有可能有成千上萬個數。

而這個模型還可以更加一般化,比如說,廟裡分大和尚和小和尚兩類和尚,其實,假設這是一個幾億人的超級大廟,裡面共有第1類,第2類,...,第k類和尚,照樣可以用Ax=y來表示一個線性方程組。只不過呢矩陣A只有兩行,這樣的方程組的解就有太多太多,這就不理想,在現實中就需要去尋找其它的信息來發現新的方程加到這個方程組中去。

其實,更一般的抽象的線性方程組,倒是經常寫成AX=Y,其中A,X,Y都是矩陣。

而在編寫解線性方程組的程序的時候,必須要解決理論問題,就是方程有沒有解,有唯一解嗎?這個理論問題是在線性代數這門課中解決的。通常是先解決最常用的情況,就是方程中係數矩陣A通常是方陣的情況,也是我這裡舉的這個例子的情況,這時候A只要可逆,方程組就有唯一解,但是如何判定A是否可逆呢?就需要求根據A算出來的一個數,叫行列式,只要A的行列式不等於0,它就是可逆的,方程組也就有唯一的解了。當然後來矩陣A可以不必是方陣,但是,仍然是通過從中間摳出一個方的子陣,計算它的行列式,來看看從A中能不能摳出一個有唯一解的線性方程組。

這裡面又有許多名堂。比如說線性相關的概念,象上面我們的例子是有唯一解的,就是大和尚有25人,小和尚有75人,但是其它的情況,比如說,萬一這個廟搞人人平等,大和尚與小和尚都是每人每頓一個饅頭,那麼方程組中的兩個方程將完全一樣,這被稱之為方程存在著線性相關的情況。這時候相當於方程組因為少了一個方程所以沒有唯一解,也可以稱之為方程組的秩不夠。當然,具體的細節我這裡並不多討論,大家去學習這門課程的時候自然會學到。

現在有人可能要問,在科學的各個學科中,為什麼線性方程組那麼重要呢?

在物理學的發展史中有兩個重要的發現,一個是牛頓三定律,描述一般的機械運動的原理,還有一個是麥克思韋方程組,描述電磁學的原理。而在科學的技術的研究中,主要還是機械運動和電磁運動。

但是牛頓第二定律是質點的加速度與力成正比,這就是一個線性微分方程組,而麥克思韋方程組則是線性偏微分方程組。

在計算機出現和普及之前,人類社會要求解力學系統或者電學系統的微分方程組,本來就理論上講,那就是要求積分,而求積分本來是要化整為零,比如一個積分要算幾百萬次加法,但是人是算不過來的,如果真要這麼算那人算到死也算不完。

因此計算定積分就成了一個困難的事情。但是後來牛頓和萊布尼茲發現了一個定理,究竟是誰先發現的二人還爭論不休,因此到現在就簡稱為牛萊定理,是講的只要找到被積函數的原函數,那麼就只需要將一些條件代入到原函數,就能夠找到微分方程的解了。

因此上世紀初的大學數學課程主要需要學微積分,而且一個重點難點就是尋找一個函數的原函數。

但是原函數不好找,例如上世紀我國搞核試驗的時候,有一個科學家總也找不到某個函數的原函數,一直頭疼著,後來在上廁所的時候突然想起來了,於是立即寫在草紙上。

因此當時的科研人員,能夠熟練地做積分就成了一件必須的功夫。

但是也不是所有的函數都有原函數的,甚至也可以認為實際應用中大多數函數,它們的原函數的解析形式都是不存在的,這個時候你也無法利用牛萊公式求解積分值。

而計算機出現及普及之後,原來的那種要求幾百萬次加法的笨辦法又可以用了,因為計算機不怕麻煩,且運算速度快,因此後來求解線性微分方程組的時候,又多用數值解法了。但是用數值解法,也就是將線性微分方程組變成線性方程組了。所以線性代數這門課就有越來越多的用處了。

什麼叫線性?通俗的說法就是兩個變數之間的一種「越...越...」的關係,且是成正比的關係,比如力越大,加速度越大,電流的變化率越大,磁場強度就越大,等等。其實在經濟學上也是這樣,例如價格越高,產值越大,等等。

因此筆者高度懷疑我們的大自然本來就是線性的。

當然立即會有人反駁,說是科學研究和系統中經常有非線性的方程組好不好?那筆者立即認輸。因此考慮非線性方程組,例如sin(x+ln y)=5這樣的方程,,但是這超出了線性代數的範圍。只不過,非線性方程組通常也不會是只有一個方程,而是也由多個方程組成。而且,科學家們在解決實際問題的時候,還是希望能夠得到一個具體的解。就是說,需要解是唯一的。

但是在實際中,經常是這樣的非線性方程組,並不是其中的每一個方程都是非線性方程,而是有一些方程是線性方程,另一些方程則是非線性方程。因此,就先將其中的線性方程都撈出來,構成一個子方程組,先解這個方程組,當然,通常就不是唯一解,因為方程數目不夠。但是,先通過解給出一個方程組的解集合,也就是說,知道方程的那個唯一解在什麼範圍里,然後再在這個解集合中加進其餘的非線性方程組,再通過數值解或者其它辦法,最後求出唯一解。

但是線性代數只負責線性這一塊,給出解空間後,線性代數的任務就完成了,至於下面怎麼根據新加進的非線性方程得到唯一解,已經不是它的任務了。

而線性代數在講完如何解一般線性方程組的通解之後,又有兩個有點莫名其妙的東西,一個是特徵向量和特徵值,還有一個是二次型,它們在實際中有何用處呢?

前面我們已經知道,把n個數排成一列,叫一個n維向量,可以寫成x=(x1,x2,...,xn)

T

, 而全體n維向量組成的集合,叫一個n維線性空間,它裡面有一些運算和相應的規律,就是相加和數乘。

但是,在實際應用中,經常需要評價一個向量有多大,還要評價向量之間的關係,通常夾角是一個關係,最重要的,還要找到向量之間相互垂直,也就是成九十度或者二百七十度的關係。因此就需要引入一個新的運算叫內積運算,就是兩個向量之間的分量對應相乘後再加起來,得到一個數。

有了內積運算後,就可以定義向量的長度,兩個向量之間的夾角,向量之間的垂直或者正交。在這種情況下可以發現,在n維空間中,許多幾何形狀也都是符合二維平面空間的性質的,可以認為全體當年的歐幾里得平面幾何學的東西都可以搬到n維空間中,照樣成立。因此將定義了內積運算的線性空間,稱之為歐幾里得空間,或者稱為歐氏空間。

但是大學的線性代數因為時間有限仍然必須將一些事情簡化,說的不那麼詳細。其實更為抽象的內積也不僅僅是兩個向量對應分量相乘再相加的。前面講到的線性方程組的一般形式是AX=Y,這裡面經常出現的情況就是A是一個nn列的方陣,因此XY也都是n維向量,這也有另一種說法,就是線性變換,就是X通過和一個方陣A相乘變換成了向量Y

因此經常在考慮兩個向量X1,X2之間的內積時,卻考慮到了Y1=AX1,Y2=AX2之間的對應分量的相乘再相加,但是把這如果再當成X1,X2之間的內積,並用這個內積來計算X的長度時,經常遇到的事情就是一個二次型。按說二次型不屬於線性代數,屬於二次代數才是,但是因為它經常要用到線性代數的成果,所以也歸到了線性代數的課程里。

二次型最多用到的地方倒是在概率統計學科中,就是說,當要研究許多隨機變數時,經常要考慮它們的協方差矩陣,這協方差矩陣是一個對稱矩陣,而且相當複雜。但是根據線性代數的二次型理論,認為任何一組隨機變數構成的隨機向量,只要經過恰當的線性變換,產生出來的一組新的隨機變數一定是相互無關的隨機變數,而且經常就是相互獨立的隨機變數或者至少接近相互獨立。而這個線性變換的求出,就需要求解特徵值與特徵向量。

注意在這裡遇到的二次型其實是一類特殊的二次型,叫正定二次型。其實二次型最有用的倒是正定二次型,但是你必須先了解一般二次型的概念,才能夠用到正定二次型。

但是支離破碎地講到這裡,真正的數學家們已經氣壞了,因為,主要還是因為時間不夠,所以才讓學生學最基礎的這些的,這導致了整個故事其實講的不對,真正來講線性代數,如果是打算學一年的那種,那必須從線性空間講起。

前面一開始就講向量是n個數的有序排列,其實不應當這樣講的。讓我們還是先回到原始社會來講整個故事。

在原始社會中,一個人是知道空間的一個點,這樣的概念的,比如說空中有一隻蚊子在飛,它佔據了一點,於是原始人伸出手去啪的一下打在那一點上,把蚊子打死了。

但是現代人,尤其是上過高中的學生,已經知道空中的任何一點是用三個數來表示,他們已經習慣了這一點,認為這是理所當然的。

但是,空中一個點用三個數表示,是具有一定人為因素的,因此就不是大自然客觀的情況。大自然的空間,我們生活的空間,其中的一個點也叫一個向量,是非常抽象的一個點,或者一個向量,是不允許用三個數來表示的。

所以線性空間一開始的公理化體系也是這樣講的,就是說,有那麼一個集合,集合里的元素也叫向量,在這個集合中定義有相加和數乘兩種運算,且滿足一定的性質。

然後這種抽象的,不是由一系列數來表示的向量,它們的集合也有線性相關和線性無關的概念,且每一個集合也都有最大線性無關組,而這個線性空間的任何一個最大線性無關組的個數,也稱之為這個線性空間的維數,然後才發現我們生活的空間,最大線性無關組的個數是3,就是說,只要設定了三個線性無關的向量作為坐標軸,那就可以線性表示空間中的任何向量,這才給出坐標的概念。那三個線性無關的向量也稱之為一個基,也叫坐標系。所以我們生活的空間才叫三維空間。

坐標系的選法是不唯一的,但是通常又要選相互垂直的三個向量作為坐標系,但是垂直這個概念來自於角度,而角度是用內積定義的,因此定義了內積的空間就叫歐幾里得空間了。

所以我才認為歐幾里得空間比一般的線性空間更有用。

此外,還有抽象的線性變換,但是所有的這些抽象,在用到了基,或者說坐標軸來表示向量的時候,這向量就又表示為本文一開始說的,一組有序的數字的排列了,而線性變換又可以表示為在此坐標軸下的,或者說在此基下的,一個方陣了。

所以搞來搞去,弄那麼抽象再說回來,還是一個向量可以視為一個列矩陣,正如我們生活的空間中的每一點可以用三個數表示那樣,反正計算機編寫有關程序的時候就是這樣的。因此那麼抽象的說法可能也沒有多大用處。

所以,一些從事數學工作的教師其實對這些抽象的事情也不那麼上心。比如說一個重要的定理是:如果一個數0,數乘任何一個向量,得到的必然是一個零向量,這個定理我曾經問過三個如假包換的數學副教授,他們都證錯了,你們要不信也用這個問題來問一問你們的數學老師啊?試試看?任何一個看到我的這篇東西的數學老師,自己試試看能不能不查任何資料就把這個定理給證明了?測試一下自己的數學水平嘛。

推薦閱讀:

雨沐田:數據分析從何處入手?
玩轉Pandas,讓數據處理更easy系列4
實現數據驅動的三道鴻溝
python入門第七課——日期和時間

TAG:物理學 | 數據分析 |