第一次發文!
初入csdn,本人哈工大大一船舶與海洋工程專業,因為想學計算機相關專業再加上爹是搞開發的程式猿🐒,為大二輔修計算機做好準備,準備開始著手進行系統的計算機學習啦~
文章目錄
- 前言
- 一、計算矩陣——行列式
- 行列式的定義
- 二、行列式的演算法
- 1.按照定義進行計算
- 2.簡單行列式計算——三角矩陣行列式
- 3.矩陣行列式的基本行變換
- 三、計算量的差別
前言
最近在準備線性代數的期末考試,發現一個很有啟發性的小問題和大家分享,
提示:以下是本篇文章正文內容,下面案例可供參考
一、計算矩陣——行列式
行列式的定義
行列式的定義在這里:

先來一個三階行列式的定義,我們的教材是英文版哦~對我來講,更有助于深入地理解概念以及本質,
可以看出行列式的定義比較簡單(analogous to 2 by 2 matrix),對矩陣的第一行進行展開到2 * 2的矩陣,即可得到3 * 3矩陣的行列式,
對于一般的矩陣來說,定義如下:
也是很簡單的,類比三階行列式即可得到高階行列式的定義——按照第一行展開就可以了,
二、行列式的演算法
1.按照定義進行計算
由高階行列式一級一級展開到低階行列式……一直展開到二階行列式,然后用公式算出得到這個高階行列式的value,
但是這么運算會導致計算量極其龐大,具體表現在下面的圖片:

上面的NOTE表明了計算一個行列式如果運用定義展開進行直接計算的話,雖然演算法結構簡單明了,但是給計算機可造成了不小的麻煩,
例如,以后在學習特征值、特征向量(Eigenvalue Eigenvector)時,計算特征多項式(Characteristic polynomial)時,對行列式的計算是必須的,但是計算機的算力假如僅僅運用定義逐級展開,在處理一個較大的矩陣時是極其有限的,note中的例子表明這種演算法效率極其低下,如何去解決這個問題呢?
2.簡單行列式計算——三角矩陣行列式
三角矩陣的例子如下
這是一個看起來長得很“整齊”的矩陣,可以發現,矩陣的主對角線(Main diagonal)下方的位置全都是0,上方的數字是隨機的,
而如何計算這個“三角矩陣”的行列式呢?
先引入一個定理——Laplace Expansion Theorem

這個定理就是告訴我們,可以不用像定義一樣只用第一行來進行行列式展開,完全可以用任意的一行或者一列進行展開,使我們更進一步運用定義來處理矩陣的行列式,把問題變得更加簡單,

提示:不要忘記每一個子式的符號哦
接下來,運用這個Laplace Expansion Theorem我們可以更加簡單地計算三角矩陣的行列式了!

對第一列進行展開(第一列只有第一項不是0,其他全都可以消掉):

照葫蘆畫瓢,依次可以得到最終的三角矩陣A行列式:

可以得到一個驚人的結論:三角矩陣的行列式是主對角線的乘積!
(看定理:)

這個定理是非常有用的,對于簡化行列式計算起到了至關重要的作用,
3.矩陣行列式的基本行變換
眾所周知,矩陣可以進行那個比較經典的高斯消元(Gauss Elimination) 或者高斯-喬丹消元(Gauss-Jordan Elimination)來解線性方程組,那行列式可以這么玩嘛?如果能化簡成一個類似于行階梯形(Row echelon form)的東東,是不是就可以化成類似三角矩陣進行計算了,這樣子一般行列式的計算,化簡完畢后就可以依照三角矩陣行列式的計算來進行計算了!問題來了,可以嗎?
經過一番推導,給出了幾個行列式的性質,表明這樣是可行的!

運用這些性質,完全可以對行列式進行行變換(當然規則有點不同,看不懂英文的童鞋可以自行問度娘),具體如何變換不再贅述,
進行完行變換后,如果矩陣可逆,一定會得到一個規規矩矩的三角矩陣(參見可逆矩陣基本定理),如果不可逆,行列式肯定為0(有一行是0,展開后一定全是0),接下來,就可以舒舒服服地用三角矩陣計算行列式的 方法來計算行列式了!
三、計算量的差別
對于一個n階行列式來說,如果,運用計算機計算行列式應用定義或者是Laplace Expansion Theorem,計算量將會是這個數:

這個數比n的階乘(n!)要大,
如果運用行變換,再運用三角矩陣計算行列式的方法來計算行列式,可以得到這個計算量:
只有:n的三次方!
相比于定義展開來進行計算,此方法會簡單很多,省去很多不必要的計算,使計算機作業的負擔減輕許多,
當然,計算矩陣行列式的方法還有很多種,但是優先選擇哪一種方法能帶來計算量的減少是我們一定要注意的事情,
在處理二維陣列時,尤其是對圖進行變換以及資料存盤等等問題時,一定有著很廣泛的應用,
碼字不易,感謝觀看!
以后會持續更新學習心得!
不局限但主要為:數學類、計算機類、工程類,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244782.html
標籤:AI
