在線性代數中,線性系統能夠解決很多的問題。
理論上講,等式可以帶有實數,複數,事實上可以是任意域。
2.4.1 線性方程
變量和常量寫成的等式
一個未知數 直接移項
兩個未知數 得到代入法
得到多組解
這張圖是從geometric角度 繪製出
線性方程的定義
The set of all solutions to a linear equation of two unknowns consists of a line;hence the name “linear equation.”
2.4.2 兩個未知數的線性方程
得到相交,平行,重合三種情況
2,3兩種情況發生的條件如下:
2,3的區別在於:
消元法求解(ps:跟中學裏學的沒差)
作者給出了一個例子
這裏還是中學裏的知識
2.4.3 一般線性系統
下面把直線方程上升到矩陣
c1 = c2 = .. = cm = 0的被稱爲 均質系統(homogeneous system)
根據矩陣相乘的特性,把係數放在一個矩陣中,把變量放在一個單列矩陣中,得到的值也是一個單列矩陣
解一般線性系統的方法有很多,廣泛使用的是 高斯消元法(Gaussian elimination )
我在附錄A中找到了這個方法。
在高斯消元法之前,先講解三角形方程組(Triangular System):
用回代法(back substitution)解
後面有該算法的實現
高斯消元法(Gaussian elimination )
用回代法技巧,首先將該系統一步一步的轉化成三角型,然後代入計算。
- 交換兩行
- 對其中一行乘一個非零的係數
- 用他們的和替換兩行(合併兩行)
其中 exchanging two rows 的要點是什麼?
在無限精度的算法中,這個要點沒有意義。但是在計算機實現時候,這是相當有意義的一部轉換。
下面是Johnson and Riess 在1982所提出的例子,一個簡單的兩個未知數,兩個方程的連列。
在沒有誤差的算法中,得到正確的結果如上。
但是在有誤差的計算機中,假設6位數,只能夠存儲3位的情況下:
得到錯誤的結果。
上面這段有兩層意思
- 誤差會隨着back-substitution 不斷累計
- 誤差有受到分母和分子的相對大小的影響
(後面這一點沒有很好的理解,希望得到解答~)
這裏重新排列的標準是 取x1得到係數絕對值最大(ps:是否這樣能通過增大分母而減小誤差呢?)
(ps:最後答案應是 (1, -3, 2))
作者給出了僞代碼如下:
抱歉,我暫時還無法用python實現這段僞代碼,下面是我的疑惑
- pivot step中,爲什麼不是對行循環而是列?以爲前面的例子中,排序最高的-3是針對同一列中的x1來說的。
- 不是很能理解,這個跟三角方程的關係
接下來從附錄回到 Linear Systems
2.4.4 高斯消去法,梯陣和階級(Row Reductions, Echelon Form, and Rank)
通過上述例子,得到的結論:
對一行乘一個係數,以及用一行和另外一行的和替換該行,不影響結果。
(今後用矩陣代表,線性方程系統)另外一個結論是,用交換行不影響結果。
把上述兩點結合起來,可以得到:
通過消去行的主要元素,我們通過回代法解得一個矩陣。得到倒三角形
upper triangular形狀。
這裏可以觀察到, r <= m,因爲部分被消去
有的時候也會出現下面這樣的特殊情況:
ci=0,完全消去
ci != 0, 解不存在。
以上這些操作都能讓系統變得更小
r=n時,矩陣有唯一解
r != n時,矩陣多個解
初等行變換(elementary row operations):
- 交換兩行
- 行乘一個非0常數
- 用一行和其他行的和能代替該行
消行( row reductions):合併造成至少一個非0行消去
消行的結果是得到,梯形(echelon form)。最終的矩陣是,完全消除(“completely reduced”)矩陣。他的size表示這他的階數(rank)。也就是說,階數是一個矩陣固有的屬性,只有在他完全消行之後能顯示出來。
一個矩陣的階數,關係到他的基礎層面(concepts of basis),維度,獨立線性在下面幾個方面:階數表示在矩陣行(列)方向上的線性獨立;如果階數=維度,行可以被看作定義了矩陣的基本空間。
如果兩行方向上不是線性獨立的,有以下規則:
(最後一個section不是很懂)