Numerical Methods
對於數值分析領域的研究者來說,線性代數是一個非常好的工具。它不僅可以協助我們將繁雜的數學式進行化簡(例如方程組轉換成矩陣的形式,並利用 Cramer's Rule 求解),同時也能夠利用線性代數的各種性質推廣數值分析上重要的內涵。
Symbolics
套件與變數設定在安裝完套件後,我們可以先對符號進行定義,也就是將其令為變數(variables)。
不過,為什麼要進行上面的步驟呢?我們來做個實驗,如果在 kernel 上面打上 p
會出現什麼呢?
很明顯的,因為我們還未定義 p
在這個程式裡面的意義,因此 不會知道這個 p
是一個變數。設定完成之後,我們可以隨意打上我們剛剛設定的那些符號,它就會顯示為數學符號(也就是 )的形式了。
它就會跑出
給定兩個欄向量(column vector) 與 ,
若將兩向量進行內積,就會得到一個純量,即
上述的結果也可以透過逐元的方式計算:
如果說兩個向量的內積為 ,則我們說這兩個向量相互垂直(orthogonal),或稱為正交的。
而向量的範數是一個計算向量長度的方式,其計算方式為
會得到
若其長度為 ,則我們稱該向量為標準化向量。
會得到標準化過後的向量為
其長度為
經過化簡可得其長度為
而在計量經濟學中,我們最常使用的性質是標準正交(orthonormal):若兩個向量相互垂直且均經過標準化,則稱這兩個向量具有標準正交的性質。
若將兩向量進行外積,就會得到一個張量(tensor),即
根據維基百科的定義,數學上,一個的矩陣是一個由列(row)行(column)元素排列成的矩形陣列,如果用英文表達,就是一個 by 的矩陣。矩陣裡的元素可以是數字、符號或數學式。[1]我們來看看下面的例子:
它便會顯示
我們會以大寫(或粗體)的字母表示矩陣,例如 ;利用小寫的字母代表矩陣內的元素,例如 。注意到,在矩陣中為了清楚定義是哪一個元素,我們會利用以下的方式進行註記。
其中下標(subscript) 代表行, 代表列。如果我們要找到上面設定的矩陣 中第二列第三個元素,也就是 ,要怎麼輸入呢?
顯示
如果我們要將兩個矩陣進行相加,我們可寫成:
其計算結果很直觀地可以猜想到是
而有趣地是,在 中,我們可以將兩個不同維度(dimension)的矩陣進行相加總,不過必須利用**逐元(element-wise)**的方式進行運算。[2]例如
結果會是
接著我們來看一下乘積。首先定義兩個矩陣, 與 。
如果我們要計算兩個矩陣相乘,即 ;或是在矩陣前方乘上一個純量(scalar),也就是 ,我們可以這麼做:
結果就是
同樣地,我們也可以運用 中逐元的性質對矩陣進行乘積。例如
則 會等於
注意到,如果我們對 與 的乘積進行交換,其結果在數學上與在 上均是不成立的,這部分就留給讀者自行證明。
會得到
值得一提的是,給定兩個矩陣,其中 為一個 的矩陣, 則是一個 的矩陣。而只有在 時,兩個矩陣才能進行乘積,並得到一個新的矩陣 ,且為一 的矩陣。
行列式(determinant),記作 或 ,是一個在方陣上計算得到的純量。[3]如果要進行計算的話,首先要引入套件 LinearAlgebra
,接著利用指令 det()
計算行列式。
結果會是
如果考慮以下矩陣
則其行列式為
其實到了高維的矩陣,可以看到行列式的計算變得複雜,因此我們可以利用 expand.()
的指令,將計算過程展開,了解其背後的運作、計算過程與原理。
有關乘法,我們要注意一件事: 並不隱含 。
另外給定 、 與 三個矩陣,如果 ,那麼我們就稱其符合結合律。
輸出的結果如下:
但基本上由上面的結果我們很難看出兩者到底是不是相同的,因此我們可利用 simplify.()
的指令,配合上面使用過的 expand.()
,將其進行展開後化簡成最易讀的形式。
單位矩陣就是一個 的方陣,其主對角線(main diagonal)上的元素均為 ,其餘元素為 。以一個 的單位矩陣 為例,其可寫作
注意到,如果我們將單位矩陣與其他矩陣相乘,其是具有交換律的,且結果會等於被乘矩陣,即 。
若一個矩陣主對角線之外的元素皆為 ,那麼我們就稱其為對角矩陣。例如
如果兩個對角矩陣相乘,其結果也會是一個對角矩陣。
結果會是
其分為上三角與下三角矩陣,前者的對角線左下方元素為 ,後者則是對角線右上方元素為 。
得到上三角矩陣
與下三角矩陣
同樣地,我們將三角矩陣相乘的結果仍會是三角矩陣。
簡單來說,轉置矩陣就是將行、列進行交換。下面定義 與 兩個矩陣,並對 取轉置矩陣,在數學上我們記做 或 。
而轉置矩陣有下列的性質。如果將矩陣進行轉置,再對其進行一次轉置,我們會得到原本的矩陣:
如果我們將兩個矩陣相加再轉置,可以寫成兩個矩陣先進行轉置後再進行相加
而兩個矩陣先進行相乘再轉至,其結果為
道理很簡單,我們令 為一個 的矩陣, 為一個 的矩陣,兩者相乘的結果會是 的結果。而如果將 轉置,會得到一個 的矩陣,將 進行轉置則會得到一個 的矩陣,故若為 ,其結果會是一個 的矩陣;如果是 ,則會是 的矩陣。
若一個矩陣之轉置矩陣仍是其自己本身,那麼其便符合對稱矩陣的性質,即 。
而反對稱矩陣則是其轉置矩陣與自身的加法反元素相等,即
注意到,如果一個矩陣的轉置矩陣乘上該矩陣,結果會是一個對稱矩陣,即
給定一個 階方陣 ,若存在一 階方陣 ,使得 ,其中 為 階單位矩陣,則稱 是可逆的,且 是 的逆矩陣,記作 。但並非所有矩陣都可以取反矩陣,如果其行列式等於 時,便不能取反矩陣。原因是因為如果矩陣 可逆,則 ,其中 為矩陣 的伴隨矩陣(adjugate matrix),故若行列式的值為 ,此等式就會無意義。根據上述性質,可得出以下小結論:若矩陣 可逆,則
得到
經過化簡可以得到
兩者結果均是
而反矩陣有以下性質:
輸出結果均為
那我們要怎麼手刻反矩陣呢?根據上面的定義,
其實可以把反矩陣令為一個未知矩陣 ,因此可以寫成
而利用反斜線(backslash)的運算符,我們可以計算出反矩陣,即
結果會是
經過化簡與檢查,確定該算法可得出反矩陣: