線性代數入門 4 解方程

2021-05-27 10:06:50 字數 4035 閱讀 3078

上一部分我們扯了一些幾何上的問題,只是讓大家對向量的幾何意義有乙個直觀的概念。現在讓我們回到解方程的問題上來。

我們還是拿第一講裡面的那個二元一次方程組來說。{2

x1+3

x2=7

4x1+

5x2=

13

我們首先拿加減消元法來對付它。何為加減消元法?很簡單,就是方程之間加加減減,用於減少未知數的個數。所以,第一步,把第乙個方程的兩邊乘以-2,然後和第二個方程相加。這個步驟基於兩個假設:

(1)方程兩邊同乘乙個不為零的數,方程仍然成立

(2)方程兩邊各加上乙個相等的數,方程仍然成立

第乙個假設用公式表示就是:

如果a=

b ,那麼ac=

bc第二個假設用公式表示就是:

如果a=b,

c=d ,那麼a+c

=b+d

這兩個假設顯而易見是成立的,所以,我們把第乙個方程的兩邊乘以-2,然後和第二個方程相加,就可以得到這樣的結果:−2

(2x1

+3x2

)+(4

x1+5

x2)=

−2(7

)+13 −x

2=−1

於是,x2=

1 很容易得到,x1=

2 這是很簡單,但這和我們的線性代數有什麼關係呢?當然有關係,現在是只有兩個未知數,很容易搞清楚,但是如果有10個未知數呢?相信用這種方式來求解一定會暈頭轉向,半天都未必能求解清楚。但是如果我們用更好的表達方式和規範來做,就會發現這其實是乙個很機械的過程,而且是很容易用計算機來進行求解的方法。

首先,我們先把這個方程用矩陣的方式表達:[2

435]

[x1x

2]=[

713]

然後我們暫且把那些未知數拿走,把方程的係數矩陣和表示方程右邊的向量寫在一起:[2

435]

[713]

然後,我們要對矩陣做一些神奇的變化,類似於加減消元法,我們定義三種操作:

1. 交換矩陣的兩行 (對應於把兩個方程交換一下,顯然,不會影響方程的解)

2. 對矩陣某一行的元素同乘以乙個不為零的數(對應於把某個方程的兩邊同乘乙個不為零的數,顯然,也不會影響方程的解)

3. 將矩陣的某一行的元素乘以乙個不為零的數加到另一行上(對應加減消元法裡把乙個方程兩邊同乘不為零的數加到另乙個方程上,並進行同類項的合併,也不會改變方程的解)

於是,這三種操作對方程的解沒有影響。注意,操作時要對豎線左邊的矩陣和豎線右邊的矩陣同時進行,因為這兩部分對應的是方程的左右兩邊。

那我們的目標是把矩陣變成什麼樣呢?如果說我們的解是:{x

1=2x

2=1

我們同樣可以把它看作乙個方程,只是恰好這個方程已經直接告訴了我們這些未知數的值而已。讓我們用矩陣來寫一下這個方程:[1

001]

[x1x

2]=[

21]

所以,我們剛才希望的變化目標是:[1

001]

[??]

變化完成之後,這裡的問號自然也就得到了值,而這些值也恰恰就是方程的解。

那我們就來實地做一次變化:[2

435]

[713]

把第一行乘以-2加到第二行上:[2

03−1

][7−

1]

第二行每個元素乘以-1:[2

031]

[71]

把第二行乘以-3加到第一行上:[2

001]

[41]

第一行每個元素乘以0.5:[1

001]

[21]

於是我們就解出了:{x

1=2x

2=1

是不是很簡單?這個例子還不夠強大,我們來找乙個複雜的例子來證明一下這個方法的強大。這裡是乙個4元的方程組:⎧⎩

⎨⎪⎪⎪

⎪x1+

2x2+

3x3+

4x4=

202x1

+3x2

+5x3

+3x4

=303x

1+5x

2+2x

3+x4

=324x

1+4x

2+2x

3+7x

4=39

先用剛才的矩陣形式寫一下:⎡⎣

⎢⎢12

3423

5435

2243

17⎤⎦

⎥⎥⎡⎣

⎢⎢2030

3239⎤⎦

⎥⎥

第一步,把第一行乘以-2加到第二行,乘以-3加到第三行,乘以-4加到第四行,把第一列中除第一行外的元素都變成0:⎡⎣

⎢⎢10

002−

1−1−

43−1

−7−10

4−5−

11−9⎤

⎦⎥⎥⎡

⎣⎢⎢20

−10−28

−41⎤⎦

⎥⎥

然後,第二行所有元素乘以-1,把第二行第二個元素變成1:⎡⎣

⎢⎢10

0021

−1−4

31−7

−1045

−11−9

⎤⎦⎥⎥

⎡⎣⎢⎢

2010−28

−41⎤⎦

⎥⎥

然後用第二行乘以-2,1,4,分別加到一,三,四行上,使得第二列中除了第二行以外的元素都變成0:⎡⎣

⎢⎢10

0001

0011

−6−6

−65−

611⎤⎦

⎥⎥⎡⎣

⎢⎢010

−18−1

⎤⎦⎥⎥

然後,第三行所有元素乘以-1/6,把第三行第三個元素變成1:⎡⎣

⎢⎢10

0001

0011

1−6−

65111

⎤⎦⎥⎥

⎡⎣⎢⎢

0103−

1⎤⎦⎥

⎥ 然後用第三行乘以-1,-1,6,分別加到一,二,四行上,使得第三列中除了第三行以外的元素都變成0:⎡⎣

⎢⎢10

0001

0000

10−7

4117⎤

⎦⎥⎥⎡

⎣⎢⎢−

37317

⎤⎦⎥⎥

然後,第4行所有元素乘以1/17,把第四行第四個元素變成1:⎡⎣

⎢⎢10

0001

0000

10−7

411⎤

⎦⎥⎥⎡

⎣⎢⎢−

3731

⎤⎦⎥⎥

然後用第四行乘以7,-4,-1,分別加到一,二,三行上,使得第四列中除了第四行以外的元素都變成0:⎡⎣

⎢⎢10

0001

0000

1000

01⎤⎦

⎥⎥⎡⎣

⎢⎢43

21⎤⎦

⎥⎥

到此,我們已經把左邊的那個矩陣變成了希望變成的形式:主對角線(第i行第i列,即左上到右下的對角線)元素為1,其他元素為0。於是,我們就得到了這個方程的解:⎧⎩

⎨⎪⎪⎪

⎪x1=

4x2=

3x3=

2x4=

1 有沒有覺得每一步都非常類似?從上至下,先把對角線元素變成1,然後把這一列上其他元素變成0,然後從下一列開始做同樣的操作,直至最後一列完成後,就變成了這種豬對角線為1,其餘為0的形態了。

細心的朋友現在會有問題了,如果在做某一步的時候,這個主對角線元素恰好是0怎麼辦?就沒有辦法通過乘以乙個數把這個元素變成1了啊?這確實是乙個問題,所以我們需要三個變換中的第乙個,交換兩行。在這一行的下方找乙個這列不為0的行,和當前行交換一下,就可以繼續啦!

那這時,還有問題,如果說在這一行下方的所有行,這列的值都是0,怎麼辦呢?這確實是乙個很好的問題,答案是,這個方程將沒有唯一解。所以我們現在就先不用關心這個啦,將來我們會專門討論沒有唯一解的方程。

這裡我們用到的三種變換,有乙個名字,叫做矩陣的初等行變換。

差點忘了,這種解方程的方法有乙個很牛的名字,是以一位眾所周知的數學家命名的:高斯消去法。

線性代數入門 1 什麼是線性代數?

線性代數幾乎是每個學理工科的大學生都會學的一門課,然而我感覺大家對這門課的感覺都不怎麼好,很多人都覺得不知道線性代數是做什麼的,或者為了應付考試學會了一些計算和解題的方法。但在其他課程學習中卻常常看到那些矩陣 向量等等,便頭疼萬分,對線性代數更是深惡痛絕。最後乙個大學學下來,還是沒明白線性代數是什麼...

線性代數入門 1 什麼是線性代數?

線性代數幾乎是每個學理工科的大學生都會學的一門課,然而我感覺大家對這門課的感覺都不怎麼好,很多人都覺得不知道線性代數是做什麼的,或者為了應付考試學會了一些計算和解題的方法。但在其他課程學習中卻常常看到那些矩陣 向量等等,便頭疼萬分,對線性代數更是深惡痛絕。最後乙個大學學下來,還是沒明白線性代數是什麼...

python與線性代數 向量方程

r2 r 2所有兩個元素的向量的集記為r2 r 2,r r 表示向量中的元素是實數,而指數2表示每個向量包含兩個元素.元素用w1 w2 role presentation style position relative w1,w2w1 w2表示,代表任意實數.r2 r 2中兩個向量相等,當且僅當對應...