向量空間
向量空間又稱線性空間,是線性代數的中心内容和基本概念之一。在解析幾何裡引入向量概念後,使許多問題的處理變得更為簡潔和清晰,在此基礎上的進一步抽象化,形成了與域相聯系的向量空間概念。譬如,實系數多項式的集合在定義适當的運算後構成向量空間,在代數上處理是友善的。單變元實函數的集合在定義适當的運算後,也構成向量空間,研究此類函數向量空間的數學分支稱為泛函分析。
向量空間它的理論和方法在科學技術的各個領域都有廣泛的應用。
設f是一個域。一個f上的向量空間是一個集合v和兩個運算:
向量加法:+ : v × v → v 記作 v + w, ∃ v, w ∈ v
标量乘法:· : f × v → v 記作 a v, ∃a ∈ f 及 v ∈ v
符合下列公理 (∀ a, b ∈ f 及 u, v, w ∈ v):
向量加法結合律:u + (v + w) = (u + v) + w;
向量加法交換律:v + w = w + v;
向量加法的機關元:v 裡有一個叫做零向量的 0,∀ v ∈ v , v + 0 = v;
向量加法的逆元素:∀v∈v, ∃w∈v,使得 v + w = 0;
标量乘法配置設定于向量加法上:a(v + w) = a v + a w;
标量乘法配置設定于域加法上: (a + b)v = a v + b v;
标量乘法一緻于标量的域乘法: a(b v) = (ab)v;
标量乘法有機關元: 1 v = v, 這裡 1 是指域 f 的乘法機關元。
有些教科書還強調以下兩個公理:
v 閉合在向量加法下:v + w ∈ v
v 閉合在标量乘法下:a v ∈ v
子空間的直和
簡單了解就是兩兩相交的一組基,都互相垂直,并且相交等于0。
線性變換
這部分直接引用一段其它人寫的資訊吧,原連結位址在:
http://blog.csdn.net/jane617_min/article/details/7044479
一般來說,方陣能描述任意線性變換。線性變換保留了直線和平行線,但原點沒有移動。線性變換保留直線的同時,其他的幾何性質如長度、角度、面積和體積可能被變換改變了。從非技術意義上說,線性變換可能“拉伸”坐标系,但不會“彎曲”或“卷折”坐标系。
矩陣是怎樣變換向量的
向量在幾何上能被解釋成一系列與軸平行的位移,一般來說,任意向量v都能寫成“擴充”形式:
另一種略有差别的形式為:
注意右邊的機關向量就是x,y,z軸,這裡隻是将概念數學化,向量的每個坐标都表明了平行于相應坐标軸的有向位移。
讓我們将上面的向量和重寫一遍,這次分别将p、q、r定義為指向+x,+y和+z方向的機關向量,如下所示:
v = xp + yq + zr
現在,向量v就被表示成向量p,q,r的線性變換了,向量p,q,r稱作基向量。這裡基向量是笛卡爾坐标軸,但事實上,一個坐标系能用任意3個基向量定義,當然這三個基向量要線性無關(也就是不在同一平面上)。以p、q、r為行建構一個3 x 3矩陣m,可得到如下矩陣:
用一個向量乘以該矩陣,得到:
如果把矩陣的行解釋為坐标系的基向量,那麼乘以該矩陣就相當于執行了一次坐标轉換,如果am=b,我們就可以說,m将a轉換到b。
從這點看,術語“轉換”和“乘法”是等價的。
坦率地說,矩陣并不神秘,它隻是用一種緊湊的方式來表達坐标轉換所需的數學運算。進一步,用線性代數操作矩陣,是一種進行簡單轉換或導出更複雜轉換的簡便方法。
矩陣的形式:
基向量[1, 0, 0], [0, 1, 0], [0, 0, 1]乘以任意矩陣m:
用基向量[1, 0, 0]乘以m時,結果是m的第1行。其他兩行也有同樣的結果,這是一個關鍵的發現:矩陣的每一行都能解釋為轉換後的基向量。
這個強有力的概念有兩條重要性質:
1、有了一種簡單的方法來形象化解釋矩陣所代表的變換。
2、有了反向建立矩陣的可能 —- 給出一個期望的變換(如旋轉、縮放等),能夠構造一個矩陣代表此變換。我們所要做的一切就是計算基向量的變換,然後将變換後的基向量填入矩陣。
首先來看看2d例子,一個2 x 2矩陣:
這個矩陣代表的變換是什麼?首先,從矩陣中抽出基向量p和q:
p = [2 1]
q = [-1 2]
圖7.1以“原”基向量(x軸,y軸)為參考,在笛卡爾平面中展示了這些向量。
、
如圖7.1所示,x基向量變換至上面的p向量,y基向量變換至q向量。是以2d中想象矩陣的方法就是想象由行向量構成的“l”形狀。這個例子中,能夠很清楚的看到,m代表的部分變換是逆時針旋轉26度。
當然,所有向量都被線性變換所影響,不隻是基向量,從“l”形狀能夠得到變換最直覺的印象,把基向量構成的整個2d平行四邊形畫完整有助于進一步看到變換對其他向量的影響,如圖7.2所示:
平行四邊形稱作“偏轉盒”,在盒子中畫一個物體有助于了解,如圖 7.3 所示:
很明顯,矩陣m不僅旋轉坐标系,還會拉伸它。
這種技術也能應用到3d轉換中。2d中有兩個基向量,構成”l”型;3d中有三個基向量,它們形成一個”三腳架“。首先,讓我們展示出一個轉換前的物品。圖7.4展示了一個茶壺,一個立方體。基向量在”機關“向量處。
(為了不使圖形混亂,沒有标出z軸基向量[0, 0, 1],它被茶壺和立方體擋住了。)
現在,考慮以下3d變換矩陣:
從矩陣的行中抽出基向量,能想象出該矩陣所代表的變換。變換後的基向量、立方體、茶壺如圖7.5所示:
這個變換包含z軸順時針旋轉45度和不規則縮放,使得茶壺比以前”高“。注意,變換并沒有影響到z軸,因為矩陣的第三行是[0, 0 , 1]。
我們可以通過讓比例因子k按比例放大或縮小來縮放物體。如果在各方向應用同比例的縮放,并且沿原點“膨脹”物體,那麼就是均勻縮放。均勻縮放可以保持物體的角度和比例不變。如果長度增加或減小因子k,則面積增加或減小k^2。在3d中,體積将增加或減小 k^3。
如果需要“擠壓”或”拉伸”物體,在不同的方向應用不同的因子即可,這稱作非均勻縮放。非均勻縮放時,物體角度将發生變化。視各方向縮放因子的不同,長度、面積、體積的變化因子也各不相同。
如果|k|<1,物體将“變短”;如果|k|>1,物體将“變長”,如果k = 0,就是正交投影,如果k < 0就是鏡像。
應用非均勻縮放的效果類似于切變,事實上,非均勻縮放和切變和很難區分的。
沿坐标軸的縮放
最簡單的縮放方法是沿着每個坐标軸應用單獨的縮放因子,縮放是沿着垂直的軸(2d中)或平面(3d中)進行的。如果每個軸的縮放因子相同,就是均勻縮放,否則是非均勻縮放。
2d中有兩個不同的縮放因子,kx和ky,圖8.13展示了應用不同縮放因子後的情況。
憑直覺就可知道,基向量p,q由相應的縮放因子單獨影響:
p‘ = kxp = kx [1 0] = [kx 0]
q‘ = kyq = ky [0 1] = [0 ky]
用基向量構造矩陣,結果如公式8.6所示:
對于3d,需要增加第三個縮放因子kz,3d縮放矩陣如公式8.7所示:
沿任意方向縮放
我們可以不依賴于坐标系而沿任意方向進行縮放,設n為平行于縮放方向的機關向量,k為縮放因子,縮放沿穿過原點并平行于n的直線(2d中)或平面(3d中)進行。
我們需要推導出一個表達式,給定向量v,可以通過v,n和k來計算v’。為了做到這一點,将v分解為兩個分量,v||和v⊥,分别平行于n和垂直于n,并滿足v =v|| + v⊥。v||是v在n上的投影,由 (v . n)n 可以得到 v||。因為v⊥垂直于n,它不會被縮放操作影響。是以,v’ = v||’ + v⊥,剩下的問題就是怎樣得到v||’。由于v||平行于縮放方向,v||’可以由公式kv||得出,如圖8.14所示:
總結已知向量并進行代換,得到:
既然我們知道了怎樣對任意向量進行縮放,當然也就可以計算縮放後的基向量。這裡隻詳細列出2d中的一個基向量的求法,其餘的基向量依次類推。我們隻給出其結果(注意下面采用列向量形式隻是為了使等式的形式好看一些。)
通過基向量構造矩陣,得到以機關向量n為縮放方向,k為因子的縮放矩陣,如公式8.8所示:
3d中,基向量為:
以機關向量n為縮放方向,k為因子的3d縮放矩陣如公式8.9所示:
一般來說,投影意味着降維操作,有一種投影方法是在某個方向上用0作為縮放因子。這種情況下,所有點都被拉平至垂直的軸(2d)或平面(3d)上。這種類型的投影稱作正交投影(或者平行投影),因為從原來的點到投影點的直線互相平行。
向坐标軸或平面投影
最簡單的投影方式是向坐标軸(2d)或平面(3d)投影,如圖8.15所示:
向坐标軸或平面投影在實際變換中不常發生,大多數情況是向低維的變換指派,且要抛棄維數時。例如,将3d點指派給2d點,抛棄z分量,隻複制x和y。
通過使垂直方向上的縮放因子為零,就能向坐标軸或平面投影。考慮到完整性,下面列出這些變換矩陣,見公式8.10 – 8.14。
向任意直線或平面投影
也能向任意直線或平面投影,像往常一樣,由于不考慮平移,這些直線或平面必須通過原點。投影由垂直于直線或平面的機關向量n定義。
通過使該方向的縮放因子為0能夠導出向任意方向投影的矩陣,2d中的情況如公式8.15所示:
記住這裡n垂直于投影直線,而不是平行。3d中,向垂直于n的平面投影的矩陣如公式8.16所示:
鏡像
鏡像(也叫做反射)是一種變換,其作用是将物體沿直線(2d中)或平面(3d中)“翻折”,圖8.16展示了鏡像的效果。
使縮放因子為-1能夠很容易地實作鏡像變換,設n為2d機關向量,公式8.17所示的矩陣将沿通過原點且垂直于n的反射軸來進行鏡像變換。
3d中,用反射平面代替直線。公式8.18中的矩陣将沿通過原點且垂直于n的平面來進行鏡像變換:
注意一個物體隻能“鏡像”一次,如果再次鏡像(當沿不同的軸或平面的時候),物體将翻回“正面”(用一張紙來想象),這和在原位置旋轉物體的效果一樣。
切變
切變是一種坐标系“扭曲”變換,非均勻地拉伸它。切變的時候角度會發生變化,但令人驚奇的是面積和體積卻保持不變。基本思想是将某一坐标的乘積加到另一個上。例如,2d中将y乘以某個因子然後加到x上,得到 x’ = x + sy,如圖8.17所示:
實作這個切變變換的矩陣為:
變換的組合
設想世界中有一個任意方向、任意位置的物體,我們要把它渲染到任意方向、任意位置的錄影機中。為了做到這一點,必須将物體的所有頂點從物體坐标系變換到世界坐标系,接着再從世界坐标系變換到錄影機坐标系。其中的數學變換總結如下:
矩陣乘法滿足結合律,是以我們能用一個矩陣直接從物體坐标系變換到錄影機坐标系:
這樣就能在渲染的循環外先将所有矩陣組合起來,使循環内作矩陣乘法的時候隻需要和一個矩陣相乘即可(物體有很多頂點,省一次矩陣乘法就會提高不少效率),如下:
是以矩陣組合從代數角度看是利用了矩陣乘法的結合律。矩陣的行向量就是變換後的基向量,這在多個變換的情況下也是成立的。考慮矩陣乘法ab,結果中的每一行都是a中相應的行與矩陣b相乘的結果。換言之,設a1, a2, a3為a的行,矩陣乘法能夠寫為:
這使得結論更加清晰,ab結果中的行向量确實是對a的基向量進行b變換的結果。
變換分類
變換的類别并不是互斥的,也不存在一定的“次序”或“層次”使得某一類比另一類多或少一些限制。
當讨論一般意義上的變換時,我們将使用類似的術語:映射或函數。在最一般的意義上,映射就是一種簡單的規則,接受輸入,産生輸出。我們把從a到b的f映射記作f(a) = b。
在數學上,如果滿足下式,那麼映射f(a)就是線性的:
f(a + b) = f(a) + f(b) 以及 f(ka) = kf(a)
如果映射f保持了基本運算:加法和數量乘,那麼就可以稱該映射為線性的。在這種情況下,将兩個向量相加然後再進行變換得到的結果和先分别進行變換再将變換後的向量相加得到的結果相同。同樣,将一個向量數量乘再進行變換和先進行變換再數量乘的結果也是一樣的。
這個線性變換的定義有兩條重要的引理:
(1) 映射f(a) = am,當m為任意方陣時,說映是一個線性變換,這是因為:
f(a + b) = (a + b)m = am + bm = f(a) + f(b)
和
f(ka) = (ka)m = k(am) = kf(a)
(2) 零向量的任意線性變換的結果仍然是零向量。(如果f(0) = a,a ≠ 0。那麼f不可能是線性變換。因為f(k0) =a,但f(k0) ≠ kf(0)),是以線性變換不會導緻平移(原點位置上不會變化)。
在某些文獻中,線性變換的定義是平行線變換後仍然是平行線。大多數情況下它是對的,但有一個小小的例外:投影(當一條直線投影後變成一個點,能認為這個點 平行于什麼?)除了這點理論上的例外,這種定義是正确的。線性變換可能造成“拉伸”,但直線不會”彎折“,是以平行線仍然保持平行。
仿射變換
仿射變換是指線性變換後接着平移。是以仿射變換的集合是線性變換的超集,任何線性變換都是仿射變換,但不是所有仿射變換都是線性變換。
任何具有形式 v’ = vm + b 的變換都是仿射變換。
可逆變換
如果存在一個逆變換可以”撤銷“原變換,那麼該變換是可逆的。換句話說,如果存在逆變換g,使得g(f(a)) = a,對于任意a,映射f(a)是可逆的。
存在非仿射變換的可逆變換,但暫不考慮它們。現在,我們集中精力于檢測一個仿射變換是否可逆。一個仿射變換就是一個線性變換加上平移,顯然,可以用相反的量”撤銷“平移部分,是以問題變為一個線性變換是否可逆。
顯然,除了投影以外,其他變換都能”撤銷“。當物體被投影時,某一維有用的資訊被抛棄了,而這些資訊時不可能恢複的。是以,所有基本變換除了投影都是可逆的。
因為任意線性變換都能表達為矩陣,是以求逆變換等價于求矩陣的逆。如果矩陣是奇異的,則變換不可逆;可逆矩陣的行列式不為0。
等角變換
如果變換前後兩向量夾角的大小和方向都不改變,該變換是等角的。隻有平移,旋轉和均勻縮放是等角變換。等角變換将會保持比例不變,鏡像并不是等角變換,因為盡管兩向量夾角的大小不變,但夾角的方向改變了。所有等角變換都是仿射和可逆的。
正交變換
術語“正交”用來描述具有某種性質的矩陣。正交變換的基本思想是軸保持互相垂直,而且不進行縮放變換。
平移、旋轉和鏡像是僅有的正交變換。長度、角度、面積和體積都保持不變。(盡管如此,但因為鏡像變換被認為是正交變換,是以一定要密切注意角度、面積和體積的準确定義)。
正交矩陣的行列式為1或者負1,所有正交矩陣都是仿射和可逆的。
剛體變換
剛體變換隻改變物體的位置和方向,不包括形狀。所有長度、角度、面積和體積都不變。平移和旋轉是僅有的剛體變換,鏡像并不被認為是剛體變換。剛體變換也被稱作正規變換,所有剛體變換都是正交、等角、可逆和仿射的,某些剛體變換旋轉矩陣的行列式為1。