四元數預備知識


預備知識:

1,向量: 點乘也叫向量的內積,數量積,結果是一個數。

                  叉乘也叫向量的外積,向量積,結果是一個向量。

2,複數的幾何意義以及和向量的關係

       二十世紀,正是向量的出現搶了四元數的風頭,向量火了,但四元數仍有其不可代替的意義。

       四元數起源於尋找複數的三維對應物. 複數可以表達一個二維矢量,當處理不共面的多個矢量時,需要用新的數來表達一個三維矢量。

       建立平面直角座標系來表示複數的平面,叫做複平面(這個定義太不嚴謹了,反正就是那個意思),x和y軸分別是實軸和虛軸。複數z=a+bi與直角座標系中的點Z(a,b)一一對應。

       複數表示向量:我們知道向量是隻有方向和長度屬性,那麼在複平面中複數也可以清晰地表達這兩種屬性。所以不難得出,複數也和向量一一對應。以上表達都有個默認條件:在二維平面和二元複數(二元數)。

        綜上,複數的幾何意義主要是兩方面,一是與複平面內的點一一對應,二是,與平面向量一一對應。

        有人說,複數目前沒有發展出新的擴充,因爲數域拓展到複數後,已經能夠解決目前遇到的數學理論的問題。唉,數學學的不好,連評價的資格都沒有。

3,矩陣

      原本想讓這個標題是:旋轉矩陣,後來一狠心,就成了矩陣了,我都不好意思了。再一狠心的話,換成線性代數吧。算了,數學也不錯。

-------------------------------------------------國際慣例 割一下----------------------------------------

       那就讓回憶一下“美妙”的線性代數課吧,我很有興趣地做着逆序的筆記,然後迎來了行列式的概念。“把這一行加個係數加到哪一行,作爲新的一行…”,看不出有什麼用,機械地算着。老師說那樣計算就算吧,懶得算就抄別人的結果。如果這樣你就中計了,半睡半醒之間,矩陣突然來了,這下更熱鬧了。老師用箇中括號把一坨叫做數字的東西括起來,見證奇蹟的時刻到了,變矩陣。意識模模糊糊地就開始填充矩陣變換了,轉置,求逆,對角化,相似。。。除了算出來的那一坨,我能知道有毛線用嗎?就像還沒有搞定小嘍囉之前,大boss來了,讓我硬着頭皮上,那是一個水生火熱啊。

        一般工科學生初學線性代數,可能大概也許和我一樣一頭霧水,接受起來有困難。瑞典數學家Lars Garding說:“如果不熟悉線性代數的概念,要去學習自然科學,現在看來就和文盲差不多。”我不奇怪我就這樣成爲了文盲。

大部分工科學生,往往是在學習了一些後繼課程,如數值分析、數學規劃、矩陣論之後,才逐漸能夠理解和熟練運用線性代數。即便如此,不少人即使能夠很熟練地以線性代數爲工具進行科研和應用工作,但對於很多這門課程的初學者提出的、看上去是很基礎的問題卻並不清楚。比如,行列式是什麼?矩陣又是什麼?他們有什麼聯繫區別麼?相似矩陣相似的是什麼?你還敢說你學過線性代數嗎?

      首先說說空間,這個概念是現代數學的命根子之一,從拓撲空間(歐幾里德空間的推廣,定義了相鄰關係)開始,一步步往上加定義,可以形成很多空間。線形空間其實還是比較初級的,如果在裏面定義了範數,就成了賦範線性空間。賦範線性空間滿足完備性,就成了巴那赫空間;賦範線性空間中定義角度,就有了內積空間,內積空間再滿足完備性,就得到希爾伯特空間。

        總之,空間有很多種。你要是去看某種空間的數學定義,大致都是“存在一個集合,在這個集合上定義某某概念,然後滿足某些性質”,就可以被稱爲空間。這未免有點奇怪,爲什麼要用“空間”來稱呼一些這樣的集合呢?大家將會看到,其實這是很有道理的。

       我們一般人最熟悉的空間,毫無疑問就是我們生活在其中的(按照牛頓的絕對時空觀)的三維空間,從數學上說,這是一個三維的歐幾里德空間,我們先不管那麼多,先看看我們熟悉的這樣一個空間有些什麼最基本的特點。仔細想想我們就會知道,這個三維的空間:1. 由很多(實際上是無窮多個)位置點組成;2. 這些點之間存在相對的關係;3. 可以在空間中定義長度、角度;4. 這個空間可以容納運動(變換),這裏我們所說的運動是從一個點到另一個點的移動,而不是微積分意義上的“連續”性的運動。

       上面的這些性質中,最最關鍵的是第4條。第1、2條只能說是空間的基礎,不算是空間特有的性質,凡是討論數學問題,都得有一個集合,大多數還得在這個集合上定義一些結構(關係),並不是說有了這些就算是空間。而第3條太特殊,其他的空間不需要具備,更不是關鍵的性質。只有第4條是空間的本質,也就是說,容納運動是空間的本質特徵

       認識到了這些,我們就可以把我們關於三維空間的認識擴展到其他的空間。事實上,不管是什麼空間,都必須容納和支持在其中發生的符合規則的運動(變換)。你會發現,在某種空間中往往會存在一種相對應的變換,比如拓撲空間中有拓撲變換,線性空間中有線性變換,仿射空間中有仿射變換,其實這些變換都只不過是對應空間中允許的運動形式而已

       因此只要知道,“空間”是容納運動的一個對象集合,而變換則規定了對應空間的運動。

下面我們來看看線性空間。線性空間的定義任何一本書上都有,但是既然我們承認線性空間是個空間,那麼有兩個最基本的問題必須首先得到解決,那就是:

1. 空間是一個對象集合,線性空間也是空間,所以也是一個對象集合。那麼線性空間是什麼樣的對象的集合?或者說,線性空間中的對象有什麼共同點嗎?

2. 線性空間中的運動如何表述的?也就是,線性變換是如何表示的?

我們先來回答第一個問題,回答這個問題的時候其實是不用拐彎抹角的,可以直截了當的給出答案。線性空間中的任何一個對象,通過選取基和座標的辦法,都可以表達爲向量的形式。通常的向量空間我就不說了,舉兩個不那麼平凡的例子:

L1. 最高次項不大於n次的多項式的全體構成一個線性空間,也就是說,這個線性空間中的每一個對象是一個多項式。如果我們以x0, x1, ..., xn爲基,那麼任何一個這樣的多項式都可以表達爲一組n+1維向量,其中的每一個分量ai其實就是多項式中x(i-1)項的係數。值得說明的是,基的選取有多種辦法,只要所選取的那一組基線性無關就可以。這要用到後面提到的概念了,所以這裏先不說,提一下而已。

L2. 閉區間[a, b]上的n階連續可微函數的全體,構成一個線性空間。也就是說,這個線性空間的每一個對象是一個連續函數。對於其中任何一個連續函數,根據魏爾斯特拉斯定理,一定可以找到最高次項不大於n的多項式函數,使之與該連續函數的差爲0,也就是說,完全相等。這樣就把問題歸結爲L1了。後面就不用再重複了。

所以說,向量是很厲害的,只要你找到合適的基,用向量可以表示線性空間裏任何一個對象。這裏頭大有文章,因爲向量表面上只是一列數,但是其實由於它的有序性,所以除了這些數本身攜帶的信息之外,還可以在每個數的對應位置上攜帶信息。爲什麼在程序設計中數組最簡單,卻又威力無窮呢?根本原因就在於此。這是另一個問題了,這裏就不說了。

       下面來回答第二個問題,這個問題的回答會涉及到線性代數的一個最根本的問題。

       線性空間中的運動,被稱爲線性變換。也就是說,你從線性空間中的一個點運動到任意的另外一個點,都可以通過一個線性變化來完成。那麼,線性變換如何表示呢?很有意思,在線性空間中,當你選定一組基之後,不僅可以用一個向量來描述空間中的任何一個對象,而且可以用矩陣來描述該空間中的任何一個運動(變換)。而使某個對象發生對應運動的方法,就是用代表那個運動的矩陣,乘以代表那個對象的向量。

       簡而言之,在線性空間中選定基之後,向量刻畫對象,矩陣刻畫對象的運動,用矩陣與向量的乘法施加運動。

是的,矩陣的本質是運動的描述。如果以後有人問你矩陣是什麼,那麼你就可以響亮地告訴他,矩陣的本質是運動的描述。

       可是多麼有意思啊,向量本身不是也可以看成是n x 1矩陣嗎?這實在是很奇妙,一個空間中的對象和運動竟然可以用相類同的方式表示。能說這是巧合嗎?如果是巧合的話,那可真是幸運的巧合!可以說,線性代數中大多數奇妙的性質,均與這個巧合有直接的關係。

       運動這個概念,在數學和物理裏是跟微積分聯繫在一起的。我們學習微積分的時候,總會有人照本宣科地告訴你,初等數學是研究常量的數學,是研究靜態的數學,高 等數學是變量的數學,是研究運動的數學。大家口口相傳,差不多人人都知道這句話。但是真知道這句話說的是什麼意思的人,好像也不多。簡而言之,在我們人類的經驗裏,運動是一個連續過程,從A點到B點,就算走得最快的光,也是需要一個時間來逐點地經過AB之 間的路徑,這就帶來了連續性的概念。而連續這個事情,如果不定義極限的概念,根本就解釋不了。古希臘人的數學非常強,但就是缺乏極限觀念,所以解釋不了運動,被芝諾的那些著名悖論(飛箭不動、飛毛腿阿喀琉斯跑不過烏龜等四個悖論)搞得死去活來。

       在這裏,“運動”的概念不是微積分中的連續性的運動,而是瞬間發生的變化。比如這個時刻在A點,經過一個“運動”,一下子就“躍遷” 到了B點,其中不需要經過A點與B點之間的任何一個點。這樣的“運動”,或者說“躍遷”,是違反我們日常的經驗的。不過了解一點量子物理常識的人,就會立 刻指出,量子(例如電子)在不同的能量級軌道上跳躍,就是瞬間發生的,具有這樣一種躍遷行爲。所以說,自然界中並不是沒有這種運動現象,只不過宏觀上我們觀察不到。但是不管怎麼說,“運動”這個詞用在這裏,還是容易產生歧義的,說得更確切些,應該是“躍遷”。因此這句話可以改成:

“矩陣是線性空間裏躍遷的描述”。

       可是這樣說又太物理,也就是說太具體,而不夠數學,也就是說不夠抽象。因此我們最後換用一個正牌的數學術語——變換,來描述這個事情。這樣一說,大家就應該明白了,所謂變換,其實就是空間裏從一個點(元素/對象)到另一個點(元素/對象)的躍遷。 比如說,拓撲變換,就是在拓撲空間裏從一個點到另一個點的躍遷。再比如說,仿射變換,就是在仿射空間裏從一個點到另一個點的躍遷。附帶說一下,這個仿射空間跟向量空間是親兄弟。做計算機圖形學的朋友都知道,儘管描述一個三維對象只需要三維向量,但所有的計算機圖形學變換矩陣都是4 x 4的。說其原因,很多書上都寫着“爲了使用中方便”,這在我看來簡直就是企圖矇混過關。真正的原因,是因爲在計算機圖形學裏應用的圖形變換,實際上是在仿射空間而不是向量空間中進行的。想想看,在向量空間裏一個向量平行移動以後仍是相同的那個向量,而現實世界等長的兩個平行線段當然不能被認爲同一個東西,所以計算機圖形學的生存空間實際上是仿射空間。而仿射變換的矩陣表示根本就是4 x 4的。又扯遠了,有興趣的讀者可以去看《計算機圖形學——幾何工具算法詳解》。

       一旦我們理解了“變換”這個概念,矩陣的定義就變成:

矩陣是線性空間裏的變換的描述。”

       到這裏爲止,我們終於得到了一個看上去比較數學的定義。不過還要多說幾句。教材上一般是這麼說的,在一個線性空間V 裏的一個線性變換T,當選定一組基之後,就可以表示爲矩陣。因此我們還要說清楚到底什麼是線性變換,什麼是基,什麼叫選定一組基。線性變換的定義是很簡單的,設有一種變換T,使得對於線性空間V中間任何兩個不相同的對象x和y,以及任意實數a和b,有:
                                                 T(ax + by) = aT(x) + bT(y),
那麼就稱T爲線性變換。

       定義都是這麼寫的,但是光看定義還得不到直覺的理解。線性變換究竟是一種什麼樣的變換?我們剛纔說了,變換是從空間 的一個點躍遷到另一個點,而線性變換,就是從一個線性空間V的某一個點躍遷到另一個線性空間W的另一個點的運動。這句話裏蘊含着一層意思,就是說一個點不僅可以變換到同一個線性空間中的另一個點,而且可以變換到另一個線性空間中的另一個點去。不管你怎麼變,只要變換前後都是線性空間中的對象,這個變換就一 定是線性變換,也就一定可以用一個非奇異矩陣來描述。而你用一個非奇異矩陣去描述的一個變換,一定是一個線性變換。有的人可能要問,這裏爲什麼要強調非奇異矩陣?所謂非奇異,只對方陣有意義,那麼非方陣的情況怎麼樣?這個說起來就會比較冗長了,最後要把線性變換作爲一種映射,並且討論其映射性質,以及線性 變換的核與像等概念才能徹底講清楚。我覺得這個不算是重點,如果確實有時間的話,以後寫一點。以下我們只探討最常用、最有用的一種變換, 就是在同一個線性空間之內的線性變換。也就是說,下面所說的矩陣,不作說明的話,就是方陣,而且是非奇異方陣。學習一門學問,最重要的是把握主幹內容,迅速建立對於這門學問的整體概念,不必一開始就考慮所有的細枝末節和特殊情況,自亂陣腳。

       接着往下說,什麼是基呢?這個問題在後面還要大講一番,這裏只要把基看成是線性空間裏的座標系就可以了。注意是座標系,不是座標值,這兩者可是一個“對立矛盾統一體”。這樣一來,“選定一組基”就是說在線性空間裏選定一個座標系。就這意思。

好,最後我們把矩陣的定義完善如下:

矩陣是線性空間中的線性變換的一個描述。在一個線性空間中,只要我們選定一組基,那麼對於任何一個線性變換,都能夠用一個確定的矩陣來加以描述。”

理解這句話的關鍵,在於把“線性變換”與“線性變換的一個描述”區別開。一個是那個對象,一個是對那個對象的表述。就好像我們熟悉的面向對象編程中,一個對象可以有多個引用,每個引用可以叫不同的名字,但都是指的同一個對象。如果還不形象,那就乾脆來個很俗的類比。

比如有一頭豬,你打算給它拍照片,只要你給照相機選定了一個鏡頭位置,那麼就可以給這頭豬拍一張照片。這個照片可以看成是這頭豬的一個描述,但只是一個片面的的描述,因爲換一個鏡頭位置給這頭豬拍照,能得到一張不同的照片,也是這頭豬的另一個片面的描述。所有這樣照出來的照片都是這同一頭豬的描述,但是又都不是這頭豬本身。

同樣的,對於一個線性變換,只要你選定一組基,那麼就可以找到一個矩陣來描述這個線性變換。換一組基,就得到一個不同的矩陣。所有這些矩陣都是這同一個線性變換的描述,但又都不是線性變換本身。

但是這樣的話,問題就來了如果你給我兩張豬的照片,我怎麼知道這兩張照片上的是同一頭豬呢?同樣的,你給我兩個矩陣,我怎麼知道這兩個矩陣是描述的同一個線性變換呢?如果是同一個線性變換的不同的矩陣描述,那就是本家兄弟了,見面不認識,豈不成了笑話。

好在,我們可以找到同一個線性變換的矩陣兄弟們的一個性質,那就是:

若矩陣A與B是同一個線性變換的兩個不同的描述(之所以會不同,是因爲選定了不同的基,也就是選定了不同的座標系),則一定能找到一個非奇異矩陣P,使得A、B之間滿足這樣的關係:

A = P-1BP

線性代數稍微熟一點的讀者一下就看出來,這就是相似矩陣的定義。沒錯,所謂相似矩陣,就是同一個線性變換的不同的描述矩陣。按照這個定義,同一頭豬的不同角度的照片也可以成爲相似照片。俗了一點,不過能讓人明白。

而在上面式子裏那個矩陣P,其實就是A矩陣所基於的基與B矩陣所基於的基這兩組基之間的一個變換關係。關於這個結論,可以用一種非常直覺的方法來證明(而不是一般教科書上那種形式上的證明)。

這個發現太重要了。原來一族相似矩陣都是同一個線性變換的描述啊!難 怪這麼重要!工科研究生課程中有矩陣論、矩陣分析等課程,其中講了各種各樣的相似變換,比如什麼相似標準型,對角化之類的內容,都要求變換以後得到的那個矩陣與先前的那個矩陣式相似的,爲什麼這麼要求?因爲只有這樣要求,才能保證變換前後的兩個矩陣是描述同一個線性變換的。當然,同一個線性變換的不同矩陣 描述,從實際運算性質來看並不是不分好環的。有些描述矩陣就比其他的矩陣性質好得多。這很容易理解,同一頭豬的照片也有美醜之分嘛。所以矩陣的相似變換可以把一個比較醜的矩陣變成一個比較美的矩陣,而保證這兩個矩陣都是描述了同一個線性變換。

這樣一來,矩陣作爲線性變換描述的一面,基本上說清楚了。但是,事情沒有那麼簡單,或者說,線性代數還有比這更奇妙的性質,那就是,矩陣不僅可以作爲線性變換的描述,而且可以作爲一組基的描述。而作爲變換的矩陣,不但可以把線性空間中的一個點給變換到另一個點去,而且也能夠把線性空間中的一個座標系(基)表換到另一個座標系(基)去。而且,變換點與變換座標系,具有異曲同工的效果。線性代數裏最有趣的奧妙,就蘊含在其中。理解了這些內容,線性代數裏很多定理和規則會變得更加清晰、直覺。

4,萬向節死鎖(Gimbal Lock)歐拉角表示旋轉的缺陷

假如我們有一個望遠鏡和一個用來放望遠鏡的三腳架,(我們將)三腳架放在地面上,使支撐望遠鏡的三腳架的頂部是平行於地平面(參考平面)的,以便使得豎向的旋轉軸(記爲x軸)是完全地垂直於地平面的。現在,我們就可以將望遠鏡饒x軸旋轉360度,從而觀察(以望遠鏡爲中心的)水平包圍圈的所有方向。通常將正北朝向方位角度記爲0度方位角。第二個座標軸,即平行於地平面的橫向的座標軸(記爲y軸)使得望遠鏡可以饒着它上下旋轉,通常將地平面朝向的仰角記爲0 度,這樣,望遠鏡可以向上仰+90度指向天頂,或者向下-90度指向腳底。

現在,天空中(包括地面上)的每個點只需要唯一的一對x和y度數就可以確定。比如x=90度,y=45度指向的點是位於正東方向的半天空上。

讓我們看看萬向節死鎖是怎麼發生的吧。一次,我們探測到有一個飛行器貼地飛行,位於望遠鏡的正東方向(x=90度,y=10度),朝着我們直飛過來,我們跟蹤它。飛行器飛行方向是保持x軸角度90度不變,而y向的角度在慢慢增大。隨着飛行器的臨近,y軸角增長的越來越快且當y向的角度達到90度時(即將超越),突然它急轉彎朝南飛去。這時,我們發現我們不能將望遠鏡朝向南方,因爲此時y向已經是90度,造成我們失去跟蹤目標。這就是萬向節死鎖!

在這裏有必要解釋一下:爲什麼說不能將望遠鏡朝向南方呢?讓我們看看座標變化,從開始的(x=90度,y=10度)到(x=90度,y=90度),這個過程沒有問題,望遠鏡慢慢轉動跟蹤飛行器。當飛行器到達(x=90度,y=90度)後,座標突然變成(x=180度,y=90度)(因爲朝南),x由90突變成180度,所以望遠鏡需要饒垂直軸向x軸旋轉180-90=90度以便追上飛行器,但此時,望遠鏡已經是平行於x軸,我們知道饒平行於自身的中軸線的旋轉改變不了朝向,就像擰螺絲一樣,螺絲頭的指向不變。所以望遠鏡的指向還是天頂。而後由於飛行器飛遠,座標變成(x=180度,y<90度)時,y向角減小,望遠鏡只能又轉回到正東指向(剛剛還在那啊,怎麼沒了?),望'器'興嘆。這說明用x, y旋轉角(又稱歐拉角)來定向物體有時並不能按照你想象的那樣工作,像上面的例子中從(x=90 度,y=10度)到(x=90度,y=90度),座標值的變化和飛行器空間的位置變化一一對應,但是從(x=90度,y=90度)到x=180度,y=90度),再到(x=180度,y<90度)這個變化,飛行器位置是連續的變化,但座標值的變化卻不是連續的(從90突變到 180),其原因在於(x=90度,y=90度)和(x=180度,y=90度)甚至和(x=任意度,y=90度)這些不同的座標值對應空間同一個位置,這種多個座標值對應同一個位置的不一致性是造成死鎖的根源.

上面是2維座標系中的例子,同樣,對於3維的也一樣。比如有一個平行於x軸的向量,我們先將它饒y旋轉直到它平行於z軸,這時,我們會發現任何饒z的旋轉都改變不了向量的方向,即萬向節死鎖。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章