我們以線性代數的中心問題開啟我們的航程:解決線性方程。最重要並且也是最簡單的情況就是位置函式的數目等於方程的數目。現在我們有包含
n 個未知變數的
n個方程,首先從n=
2 開始: 1x
+2y=
34x+
5y=6
(1)
未知變數是x,
y 。我打算用消元和行列式兩種方式來求解方程。當然x,
y 由1,
2,3,
4,5,
6 這些數確定,問題就是如何利用這六個數求解出方程。
消元第二個方程減去第乙個方程的四倍。從而消去第二個方程中的
x ,只留下了關於
y的方程:
(方程2
)−4(
方程1)
−3y=
−6(2)
這樣就得到y=
2 。然後
x 從第乙個方程1x
+2y=
3計算出來: 1x
+2(2
)=3x
=−1(3)
計算出來後,x,
y 也應該滿足第二個方程。代入得:4×
(−1)
+5×2
=6行列式y=
2 完全依賴於方程中的六個數。對於
y 存在乙個公式(當然
x也有),是兩個行列式的比值:
y=∣∣
∣143
6∣∣∣
∣∣∣1
425∣
∣∣=1
⋅6−3
⋅41⋅
5−2⋅
4=−6
−3=2
(4)
如果你知道2×
2 方陣的行列式,那麼它就沒有那麼神秘了。它同樣給出了解y=
2 。同樣利用行列式,我們可以求出
x : x=
∣∣∣3
625∣
∣∣∣∣
∣142
5∣∣∣
=3⋅5
−2⋅6
1⋅5−
2⋅4=
3−3=
−1(5)我們來比較這兩種方法,考慮
n 非常大(在科學計算中n=
1000
是非常適中的大小)。事實就是直接對1000個方程使用行列式將是乙個大災難。左邊將會有百萬級別的數目,既然是正確的,但是效率很低。之後會提到該公式如何得到(克萊姆法則),但是目前我們需要乙個很好的辦法來解決這1000個方程。
最好的辦法是高斯消元法。這個演算法一直被用於解決大型的方程組。以後的大部分例子都是n=
3 ,這是看不出太大區別。方程(2
)(4)
基本使用相同的步驟得到y=
2 。之後通過回帶到方程(3)中很快得出
x 。對於更大的
n值,依然有效。消去法比計算行列式要好。
消去法的想法看起來很簡單,通過幾個例子就能掌握它。它是非常基礎的內容,通過簡化矩陣我們就能理解它。在此我想講四點更深層次的內容:
線性代數帶來了平面幾何。在十維空間中視覺化九維平面不太容易。而理解相交於十個方程解的那些平面更難。但是不見得是不可能的。在圖1 中有兩條直線,相交於點(x
,y)=
(−1,
2)。線性代數將影象放到十維空間裡,在這個空間裡,我們的直覺不得不去想象其幾何形狀。
圖1:左邊是例子的單個解,中間和右邊是奇異情況,分別是無解和多個解
現在考慮矩陣符號,將
n 個未知量表示成向量x,
n 個方程表示成ax
=b。我們用消去矩陣乘以
a 得到上三角矩陣
u。這些步驟將矩陣
a 分解為l×
u,其中
l 是下三角矩陣: a=
∣∣∣1
425∣
∣∣=∣
∣∣14
01∣∣
∣∣∣∣
102−
3∣∣∣
=l×u
(6)首先我們需要介紹矩陣和向量以及乘法規則。每個矩陣都存在轉置at
。這個矩陣還存在逆矩陣a−
1 大部分情況下,消去法不會存在問題。矩陣可逆的話,方程ax
=b還有乙個解。但是在特殊的情況下這種方法就被打破了,既可能是方程組的順序出錯(通過交換一笑就能產生),也可能是方程沒有唯一解。如果將例子中的5換成8,就出現了奇異的情況:
1x+2
y=34
x+8y
=6(7)
消去法依然用第二個減去第乙個的四倍,那麼結果是: (方
程2)−
4(方程
1)0=
−6對於n
個方程組,我們希望粗略算出需要多少步消去運算。計算代價經常決定著模型的精度。一百個方程需要一百萬步(乘法和減法)的三分之一。計算機可以很快地計算出來。在一百步之後,捨入誤差就已經很明顯了。(有些問題敏感,而有些不敏感)在不知道全部細節的情況下,我們想明白實際中出現的大型系統以及他們是如何被解決的。
之後我會盡可能有效的介紹消去演算法。這個演算法用於各種各樣的應用中,同時,用矩陣的方式(係數矩陣
a,消去矩陣
e ,行交換矩陣
p以及因子l,
u
初識Rust(一) 引言
rust 是乙個全新的程式語言,專注於效能,並行和記憶體安全。rust的創始人通過從零開始並結合現代程式語言的設計元素來建立乙個語言,避免了很多傳統語言需要應對的很多 baggage 向後相容需求 相反,rust可以融合有表現力的語法和高層語言的靈活性與前所未有的控制和底層語言的效能。選擇一款程式語...
AOP之一 引言
本文 自 軟體設計因為引入物件導向思想而逐漸變得豐富起來。一切皆為物件 的精義,使得程式世界所要處理的邏輯簡化,開發者可以用一組物件以及這些物件之間的關係將軟體系統形象地表示出來。而從物件的定義,進而到模組,到元件的定義,利用物件導向思想的封裝 繼承 多型的思想,使得軟體系統開發可以向搭建房屋那樣,...
Mycat學習筆記一(引言)
1.3 資料庫切分原則 2.什麼是mycat 前言 隨著網路的普及,網際網路技術的發展以及網路裝置和傳輸介質等硬體的更新換代,使得網際網路使用者迅速增長,網速大大提高,由此產生了海量的應用資料,很多網際網路業務,隨著資料量的逐步增加,資料庫逐漸成為系統的瓶頸,資料庫切分技術和分布式資料庫由此誕生。結...