正交矩陣的運算法則
若方陣m是正交的,則當且僅當m與它轉置矩陣mt的乘積等於單位矩陣,見公式9.8:
矩陣乘以它的逆等於單位矩陣:m m-1=i
所以,如果乙個矩陣是正交的,那麼它的轉置等於它的逆:
這是一條非常有用的性質,因為在實際應用中經常需要計算矩陣的逆,而3d圖形計算中正交矩陣出現又是如此頻繁。比如旋轉和映象矩陣是正交的,如果知道矩陣是正交的,就可以完全避免計算逆矩陣了,這也將大大減少計算量。
正交矩陣的幾何解釋
正交矩陣對我們非常有用,因為很容易計算它的逆矩陣。但怎樣知道乙個矩陣是否正交,以利用它的性質呢?
很多情況下,我們可以提前知道矩陣是如何建立的,甚至了解矩陣是僅包含旋轉、映象呢,還是二者皆有(記住:旋轉和映象矩陣是正交的)。這種情況非常普遍。
如果無法提前清楚矩陣的某些情況呢?換句話說,對於任意矩陣m,怎樣檢測它是否正交?為了做到這一點,讓我們從正交矩陣的定義開始,以3x3階矩陣為例。設m是3x3矩陣,根據定義,當且僅當m mt=i時m是正交的。它的確切含義如下:
現在做一些解釋:
(1)當且僅當乙個向量是單位向量時,它與自身的點積結果是1。因此,僅當r1、r2、r3是單位向量時,第1、5、9式才能成立。
(2)當且僅當兩個向量是互相垂直時,它們的點積為0。因此,僅當r1、r2、r3互相垂直時其他等式才成立。
所以,若乙個矩陣是正交的,它必須滿足下列條件:
矩陣的每一行都是單位向量,矩陣的所有行互相垂直。
對矩陣的列也能得到類似的條件,這使得以下結論非常清楚:如果m是正交的,則mt也是正交的。
計算逆矩陣時,僅在預先知道矩陣是正交的情況下才能利用正交性的優點。如果預先不知道,那麼檢查正交性經常是浪費時間。即使在最好的情況下,先檢查正交性以確定矩陣是否正交再進行轉置,和一開始就進行求逆運算也將耗費同樣多的時間。而如果矩陣不是正交,那麼這種檢查完全是浪費時間。
注意,有乙個術語上的差別可能會導致輕微的混淆。線性代數中,如果一組向量互相垂直,這組向量就被認為是正交基(orthogonal basis)。它只要求所有向量互相垂直,並不要求所有向量都是單位向量。如果它們都是單位向量,則稱它們為標準正交基(orthogonal basis)。這裡所講的正交矩陣的行或列向量都是指標準正交基向量(orthogonal basis vectors),所以由一組正交基向量構造的矩陣並不一定是正交矩陣(除非基向量是標準正交的)。
矩陣正交化
有時可能會遇到略微違反了正交性的矩陣。例如,可能從外部得到了壞資料,或者是浮點運算的累積錯誤(稱作」矩陣爬行「)。這些情況下,需要做矩陣正交化,得到乙個正交矩陣,這個矩陣要盡可能地和原矩陣相同(至少希望是這樣)。
構造一組正交基向量(矩陣的行)的標準演算法是施密特正交化。它的基本思想是,對每一行,從中減去它平行於已處理過的行的部分,最後得到垂直向量。
以3x3矩陣為例,和以前一樣,用r1、r2、r3代表3x3階矩陣m的行。正交向量組r1'、r2'、r3'的計算如公式9.9所示:
現在r1'、r2'、r3'互相垂直了,它們是一組正交基。當然,它們不一定是單位向量。構造正交矩陣需要使用標準正交基,所以必須標準化這些向量。注意,如果一開始就進行標準化,而不是在第2步中做,就能避免所有除法了。
施密特正交化是有偏差的,這取決於基向量列出的順序。乙個明顯的例子是,r1總不用改變。該演算法的乙個改進是不在一次正交化過程中將整個矩陣完全正交化。而是選擇乙個小的因子k,每次只減去投影的k倍,而不是一次將投影全部減去。改進還體現在,在最初的軸上也減去投影。這種方法避免了因為運算順序不同帶來的誤差。演算法總結如下:
該演算法的每次迭代都會使這些基向量比原來的基向量更為正交化,但可能不是完全正交的,多次重複這個過程,最終將得到一組正交基。要得到完美的結果,就得選擇乙個適當的因子k並迭代足夠多次(如:10次)。接著,進行標準化,最後就會得到一組正交基。
3D數學 矩陣的更多知識(2)
矩陣的逆 另外一種重要的矩陣運算是矩陣的求逆,這個運算只能用於方陣。運算法則 方陣m的逆,記作m 1,也是乙個矩陣。當m與m 1相乘時,結果是單位矩陣。表示為公式9.6的形式 並非所有的矩陣都有逆。乙個明顯的例子是若矩陣的某一行或列上的元素都為0,用任何矩陣乘以該矩陣,結果都是乙個零矩陣。如果乙個矩...
3D數學 矩陣的更多知識(1)
矩陣的行列式 在任意方陣中都存在乙個標量,稱作該方陣的行列式。線性運算法則 方陣m的行列式記作 m 或 detm 非方陣矩陣的行列式是未定義的。n x n階矩陣的行列式定義非常複雜,讓我們先從2 x 2,3 x 3矩陣開始。公式9.1給出了2 x 2階矩陣行列式的定義 注意,在書寫行列式時,兩邊用豎...
3D數學 矩陣的更多知識(1)
矩陣的行列式 在任意方陣中都存在乙個標量,稱作該方陣的行列式。線性運算法則 方陣m的行列式記作 m 或 detm 非方陣矩陣的行列式是未定義的。n x n階矩陣的行列式定義非常複雜,讓我們先從2 x 2,3 x 3矩陣開始。公式9.1給出了2 x 2階矩陣行列式的定義 注意,在書寫行列式時,兩邊用豎...