透析矩陣,由淺入深娓娓道來—高數(shù)-線性代數(shù)-矩陣

線性代數(shù)在科學(xué)領(lǐng)域有很多應(yīng)用的場景,如下:

矩陣,是線性代數(shù)中涉及的內(nèi)容,

線性代數(shù)是用來描述狀態(tài)和變化的,而矩陣是存儲狀態(tài)和變化的信息的媒介,可以分為狀態(tài)(靜態(tài))和變化(動態(tài))信息來看待。

描述一個事物的狀態(tài)需要在一個選好的坐標(biāo)系(什么樣的向量空間)中進(jìn)行,所以矩陣所包含的信息從來都是成對出現(xiàn)(坐標(biāo)值和坐標(biāo)系)。而基就是坐標(biāo)系的信息,可以將其拆分出來。

當(dāng)把矩陣以動態(tài)信息來看待時,其信息的側(cè)重點在于變化二字。這時的矩陣可以看做是一個方程。

通過矩陣內(nèi)所描述的變化規(guī)則從一個狀態(tài)變換到另一個狀態(tài)。變換可以理解為事物本身的變化,也可以理解為坐標(biāo)系的變化。

矩陣的本質(zhì):

探討矩陣的本質(zhì)的話,可以先看這篇文章:

理解矩陣(最通俗易懂的教程——高數(shù)-線性代數(shù)-矩陣

其思路概括來說如下:

首先要有空間的概念,如果不考慮嚴(yán)謹(jǐn)?shù)亩x,你可以用我們熟知的二維或者三維空間來想象:里面有無窮多的點,通過某些動作,可以從一個點“移動”到另一個點,容納運動是空間的本質(zhì)特征。

線性空間也是一種空間,線性空間是容納向量對象運動的。如果選定了坐標(biāo)系,那么一個向量可以用它在每個維度上的坐標(biāo)值來表示,比如二維空間里可以表示為[x, y],三維空間可以表示為[x, y, z],更高維雖然無法想象,但仍然可以用類似的數(shù)學(xué)方式表示出來。

向量共有兩種形式,一種為列向量,一種為行向量。雖然我們可能比較習(xí)慣行向量,但在這里,我們默認(rèn)使用列向量。比如[-1,2]就這樣表示:

我們可以通過某種運算,把空間里的一個點“移動”另一個位置。比如我們想把[-1,2]移動到[5,2],可以執(zhí)行如下運算:

上圖中左邊的這個變量,就是一個矩陣,所以矩陣是線性空間中運動(變換)的描述。

換言之,矩陣的乘法,本質(zhì)是一種運動。但除此以外,還有另外一種理解方式。

我們知道,運動是相對的,把[-1,2]變成[5,2],除了“移動”,還可以通過變換坐標(biāo)系的方式實現(xiàn)。也就是說,找到這樣的一個坐標(biāo)系,在那里,同樣的一個向量可以表示為[5,2]。

在這個情況下,對上面那個矩陣相乘例子而言,里面的那個2x2方陣就可以理解為一個坐標(biāo)系,在這個坐標(biāo)系下,[-1,2]這個向量可以表示為[5,2]。

比如上面這個動圖中,通過坐標(biāo)系變化,把紅色向量[0,1]、綠色向量[1,0]變成了[3,0]和[1,-2]。

因此,矩陣的實質(zhì)就是將坐標(biāo)整體線性變換

矩陣的基本定義:

矩陣:有m*n個數(shù)排成m行n列的數(shù)表成為m行n列矩陣,簡稱m x n矩陣,記為A。

負(fù)矩陣:-A稱為矩陣A的負(fù)矩陣

行矩陣:只有一行的矩陣稱為行矩陣,又稱為行向量;A=(a1 a2 ...an)

列矩陣:只有一列的矩陣稱為列矩陣,又稱為列向量;

同型矩陣:兩個矩陣行數(shù)列數(shù)均相等,稱他們?yōu)橥途仃嚕?/p>

相等:?若兩個矩陣是同型矩陣,且它們的對應(yīng)元素相等,成這兩個矩陣相等。

零矩陣:元素都是零的矩陣。注意:不同型的零矩陣是不同的。

系數(shù)矩陣:線性方程組的系數(shù)構(gòu)成的矩陣稱為系數(shù)矩陣。

方陣:當(dāng)矩陣的行數(shù)與列數(shù)相等的時候,稱之為方陣

奇異矩陣:對應(yīng)的行列式等于0的方陣。即當(dāng)|A| = 0時。

非奇異矩陣:對應(yīng)的行列式不等于0的方陣。即|A|≠0時。

數(shù)量矩陣:如果一個矩陣的對角線元素全部相同,其余元素都是0,這個矩陣叫數(shù)量矩陣,又叫純量矩陣。

對角矩陣:簡稱對角陣(默認(rèn)為正對角陣)。是一個主對角線之外的元素皆為 0 的矩陣。對角線上元素可以為 0 或其它值。記為 A = diag(λ1,λ2,..,λn) ?; 分為正對角陣和反對角陣。

對稱矩陣:是元素以主對角線為對稱軸對應(yīng)相等的矩陣對陣矩陣定義為:A=AT(A的轉(zhuǎn)置),對稱矩陣的元素A(i,j)=A(j,i).

反對稱矩陣:反對稱矩陣(又稱斜對稱矩陣)定義是:A= - AT(A的轉(zhuǎn)置前加負(fù)號) 它的第Ⅰ行和第Ⅰ列各數(shù)絕對值 相等,符號相反,于是,對于對角線元素,A(i,i)=-A(i,i),有2A(i,i)=0

單位矩陣:主對角線上的元素為1,其它元素為0的矩陣。用E表示

例如一個 3 × 3的矩陣:

別的矩陣和單位矩陣相乘,得到的結(jié)果就是其自身:A × I = A

行列式:行列式(Determinant)是數(shù)學(xué)中的一個函數(shù),將一個n×n的矩陣A映射到一個標(biāo)量,記作 det(A)或 |A|。行列式可以看做是有向面積或體積的概念在一般的歐幾里得空間中的推廣。

在任意的一個方陣都存在這樣的一個標(biāo)量,稱作該方陣的行列式.

余子式:代數(shù)余子式是這樣定義的,對于一個方陣M,給定行、列元素的代數(shù)余子式等于對應(yīng)的余子式的有符號的行列式

我們把上面的這句定義給提煉一下,某個矩陣的代數(shù)余子式是行列式,那么我們已經(jīng)注意到了,某個矩陣的余子式是一個矩陣.這樣我們就知道兩者的不同之處了,一個是標(biāo)量,一個是矩陣,這就是兩者的不同之處.好了,了解完兩者的不同之處之后,我們來看代數(shù)余子式的計算方法是怎么定義的,如下所示.

只有上面的公式讓我們感到很無助不是,那么接下來我們用一個接著余子式的示例來求解對應(yīng)的代數(shù)余子式.如下所示

那么說了這么多余子式和代數(shù)余子式的知識,到底對我們的行列式的求解有什么幫助呢?其實,我們是可以利用余子式和代數(shù)余子式直接計算任意n維方陣的行列式,首先,我們找到矩陣的任意一行i(i不大于最大行數(shù)),然后,列數(shù)j依次增加.具體的計算公式如下所示.

那么有了公式之后避免不了就是驗證,接下來我們就用公式來推導(dǎo)4x4方陣的行列式.由于有了計算公式的便利,我們計算起來就比較方便了,但是我們要仔細(xì)判斷每一個項的正負(fù)(自己驗證的時候沒注意,驗證出錯兩三遍).這里,我選擇的i =1(自己驗證的時候可自行選擇i) ,具體的驗證過程如下所示.(由于其中的項過多,所以分兩步截圖.)

通過上面我們發(fā)現(xiàn),行數(shù)列數(shù)越多的方陣行列式的復(fù)雜度就會越高.復(fù)雜度會呈指數(shù)增長.我們計算到4x4的就已經(jīng)非常的麻煩了(其實4x4的行列式我們已經(jīng)夠用了),那么要是在來個10x10的方陣行列式,我們豈不要瘋掉?這里,書中提到了一種行列式的計算方式叫做"主元選擇"的計算方式,感興趣的小伙伴可自行查詢資料.

上面我們已經(jīng)說完了行列式,但是說了一大堆,我們還是懵圈的,那么行列式是用來干什么的呢?或者說是行列式代表著什么意義呢?其實,在2D中行列式代表著以基向量為兩邊的平行四邊形的有符號面積.在3D環(huán)境中則代表著以基向量為三邊的平行六面體有符號體積.我們看以下示例來驗證我們的想法.

如圖所示,在2D環(huán)境中有基向量v = [3 0] ,u = [1 2].那么它的面積是3x2 = 6,它的行列式是3x2-1x0 = 6,我們發(fā)現(xiàn)行列式是和面積相等的(當(dāng)然了,如果基向量v = [-3 0] ,行列式最終計算出來的值為-6)

接下來,我們看一下在3D環(huán)境中的有三個基向量u = [2 0 0],v = [1 2 0],w= [0 0 1],如圖所示

然后我們計算由上面三個基向量所圍成的正六面體的體積為1x2x2 = 4,計算的三個基向量所組成的矩陣的行列式.發(fā)現(xiàn)兩者的絕對值是相等的.如下所示.

伴隨矩陣:矩陣A的伴隨矩陣就是其余子矩陣的轉(zhuǎn)置矩陣,記做:

用伴隨矩陣求逆矩陣

這個是我自己想飛算法:

逆矩陣:設(shè)A是數(shù)域上的一個n階方陣,若在相同數(shù)域上存在另一個n階矩陣B,使得: AB=BA=E。則我們稱B是A的逆矩陣,而A則被稱為可逆矩陣。記作:?A-1

A × A-1?= I

那么我該如何計算方陣M的逆呢?在我看的3D圖形上是給出了如下的方法.

在上面的公式中矩陣的行列式我們知道如何求解,那么adj M是什么鬼?adj M叫做矩陣M的伴隨矩陣,定義為矩陣M的代數(shù)余子式矩陣的轉(zhuǎn)置矩陣(挺繞口).沒事,我們看一下示例是如何解釋的這個的.假設(shè)矩陣M如下所示.

矩陣A的|A|的行列式還可以如此計算:

拉普拉斯展開

在數(shù)學(xué)中,拉普拉斯展開(或稱拉普拉斯公式)是一個關(guān)于行列式的展開式。將一個n×n矩陣B的行列式進(jìn)行拉普拉斯展開,即是將其表示成關(guān)于矩陣B的某一行(或某一列)的n個元素的(n-1)×(n-1)余子式的和。行列式的拉普拉斯展開一般被簡稱為行列式按某一行(或按某一列)的展開。由于矩陣B有n行n列,它的拉普拉斯展開一共有2n種。拉普拉斯展開的推廣稱為拉普拉斯定理,是將一行的元素推廣為關(guān)于k行的一切子式。它們的每一項和對應(yīng)的代數(shù)余子式的乘積之和仍然是B的行列式。研究一些特定的展開可以減少對于矩陣B之行列式的計算,拉普拉斯公式也常用于一些抽象的推導(dǎo)中。

轉(zhuǎn)置矩陣

轉(zhuǎn)置矩陣其實是原來矩陣的行變成了新矩陣的列,以一個90°的角度進(jìn)行了旋轉(zhuǎn)。下面兩個圖就是矩陣A和它的轉(zhuǎn)置矩陣AT。

矩陣轉(zhuǎn)置的推理

? ? ? ?將一個矩陣轉(zhuǎn)置之后,再次轉(zhuǎn)置一次,便會得到原來的矩陣.

對于任意的對角矩陣D,都有轉(zhuǎn)置矩陣DT=D,包括單位矩陣I也是如此.

正交矩陣:

先來看一下正交矩陣是如何定義的,若方陣M是正交的,則當(dāng)且僅當(dāng)M與他的轉(zhuǎn)置矩陣M^T的乘積等于單位矩陣,那么就稱矩陣M為正交矩陣.

MTM=I

在矩陣的逆中我們知道,矩陣的逆和矩陣的乘積為單位矩陣I,由此推理,我們可以知道,如果該矩陣為正交矩陣,那么矩陣的逆和轉(zhuǎn)置矩陣是相等的.

MT=M-1

那么正交矩陣存在的意義是什么呢?其實如果一個矩陣是正交矩陣,那么矩陣的逆和轉(zhuǎn)置矩陣是相等的.轉(zhuǎn)置矩陣是非常簡單計算的,而計算矩陣的逆如果使用代數(shù)余子式計算是非常的麻煩,所以我們可以直接計算轉(zhuǎn)置矩陣然后直接得到該矩陣的逆.

矩陣的運算:

加法運算:

例如:

顏色相同的方框數(shù)字進(jìn)行相加,例如這里: 8 + 3 = 11,6 + 10 = 16

減法運算:

需要注意的是,進(jìn)行加減運算的兩個矩陣維度必須是相同的。

矩陣乘以標(biāo)量

類似,矩陣除以標(biāo)量不再贅述

矩陣相乘

需要注意的是:

1.左邊矩陣的列數(shù),要和右邊矩陣的行數(shù)相同。

2.相乘的位置不能互換.A × B ≠ B × A

3.相乘的次序不影響結(jié)果( A × B ) × C = A × ( B × C )

矩陣的本質(zhì)就是線性方程式,兩者是一一對應(yīng)關(guān)系。如果從線性方程式的角度,理解矩陣乘法就毫無難度。

下面是一組線性方程式。

矩陣的最初目的,只是為線性方程組提供一個簡寫形式。

老實說,從上面這種寫法,已經(jīng)能看出矩陣乘法的規(guī)則了:系數(shù)矩陣第一行的2和1,各自與 x 和 y 的乘積之和,等于3。不過,這不算嚴(yán)格的證明,只是線性方程式轉(zhuǎn)為矩陣的書寫規(guī)則。

下面才是嚴(yán)格的證明。有三組未知數(shù) x、y 和 t,其中 x 和 y 的關(guān)系如下。

x 和 t 的關(guān)系如下。

有了這兩組方程式,就可以求 y 和 t 的關(guān)系。從矩陣來看,很顯然,只要把第二個矩陣代入第一個矩陣即可。

從方程式來看,也可以把第二個方程組代入第一個方程組。

上面的方程組可以整理成下面的形式。

最后那個矩陣等式,與前面的矩陣等式一對照,就會得到下面的關(guān)系。

矩陣乘法的計算規(guī)則,從而得到證明。

矩陣相乘的應(yīng)用:

先看一個例子:

某公司有四個工廠生產(chǎn)三種產(chǎn)品,已知每種產(chǎn)品的產(chǎn)量,利潤和占地空間,因為工廠設(shè)在不同的地方,所以老板想調(diào)整一下各個工廠的產(chǎn)品輸出,所以你告訴老板每個工廠的現(xiàn)有利潤和占地空間。

產(chǎn)量:噸

工廠\產(chǎn)品P1p2p3

甲524

乙382

丙604

丁016

利潤:萬元 ?空間:平方米

產(chǎn)品利潤空間

P124

P213

P332

一般求解是這樣的:產(chǎn)量利潤=總利潤,產(chǎn)量空間=總空間

所以就是那12個結(jié)果,都會算

如果用矩陣來表示呢

直接拿(產(chǎn)量)*(利潤,空間)就能直觀的看到結(jié)果了。

這里是矩陣乘法的簡單應(yīng)用。

4X4齊次矩陣

兩條平行線會相交嗎?

在沒有認(rèn)識到齊次空間之前,我們知道兩條平行線是不能相交的,但是兩條平行線真的不能相交嗎?我們看下面這幅圖,我們都知道兩條鐵軌是平行的,但是這兩條平行的鐵軌在無窮遠(yuǎn)處會相交于一點.這對嗎?在笛卡爾2D坐標(biāo)系中, 我們用 (x, y) 表示笛卡爾空間中的一個 2D 點,而處于無限遠(yuǎn)處的點 (∞,∞) 在笛卡爾空間里是沒有意義的。所以我們是無法解釋這種現(xiàn)象的,但是在齊次空間中,我們可以解釋這種現(xiàn)象.

帶著上面的兩個問題,我們開始我們的齊次坐標(biāo)之旅.其實齊次空間的出現(xiàn)主要是用于投影問題的解決.所謂齊次坐標(biāo)就是將一個原本是n維的向量用一個n+1維向量來表示. 4D齊次空間有4個分量分別是(x,y,z,w),第四個是w,稱為齊次坐標(biāo).那么在3D笛卡爾坐標(biāo)系中可以使用其次坐標(biāo)表示為(x/w,y/w,z/w).

那么我們就解決第一個問題,解釋兩條平行線投射到一個2D平面中相交于一點.我們知道在2D笛卡爾坐標(biāo)系中用Ax+By+C= 0表示一條直線.兩條平行直線相交的話,要關(guān)聯(lián)兩個方程式.如下所示.

在笛卡爾坐標(biāo)系中,上述的兩者如果相交,那么C=D=0,也就是兩者是同一條過原點的直線.顯然是解釋不了兩條平行線相交于一點的.如果我們引入齊次坐標(biāo)的概念的話,我們把x/w, y/w 代替 x, y 放到投影空間里,如下所示.

上面的方程式組可以轉(zhuǎn)換為下面的方程式組.

在C≠D的情況下,那么對方程組求解,就是w = 0兩條直線相交,那么就是(x,y,0).兩條直線相交于無限遠(yuǎn)處.

那么引進(jìn)齊次坐標(biāo)有什么必要,它有什么優(yōu)點呢?

1.它提供了用矩陣運算把二維、三維甚至高維空間中的一個點集從一個坐標(biāo)系變換到另一個坐標(biāo)系的有效方法.

2.它可以表示無窮遠(yuǎn)的點。n+1維的齊次坐標(biāo)中如果h=0,實際上就表示了n維空間的一個無窮遠(yuǎn)點。對于齊次坐標(biāo)[a,b,h],保持a,b不變, 點沿直線 ax+by=0 逐漸走向無窮遠(yuǎn)處的過程.

矩陣的幾何解釋

與其說矩陣的幾何意義這么生澀難懂,不如說的是矩陣在幾何中到底是有什么作用呢?一般來說,方陣可以描述任意的線性變換.,也就說,在幾何當(dāng)中,我們用矩陣表示幾何體的空間變換.比如我們在程序中常用的平移、旋轉(zhuǎn)、縮放等等.(沒事,這時候說的可能很生澀,看到最后你就會明白怎么回事的)

為了更好的理解矩陣的幾何意義,我們先用一個簡單的示例來說明一下.如果我們把一張圖片放入一個2D的坐標(biāo)系中(為了給下面做鋪墊,向量形式為[x,y,0]),并且規(guī)定它的大小為邊長為1的正方形.向量p = [0,1,0],向量q = [1,0,0].如下圖所示.

現(xiàn)在我們就單獨的看圖片的右上頂點 [1,1,0] (可看做向量).

首先我們先把[1,1,0]這個向量拆分一下.如下所示.

緊接著.我們要定義一下,p,q和r定義為指向 +x,+y,+z方面的單位向量.然后用單位向量表示圖片的右上頂點 [1,1,0] .如下所示.

現(xiàn)在,向量[1,1,0]就被表示成p,q和r的線性變換了.向量p,q和r被稱為基向量.這里的基向量是笛卡爾坐標(biāo)系.但是事實上,一個坐標(biāo)系能用任意的3個基向量表示.當(dāng)然了,這三個向量不在同一個平面.向量p,q和r創(chuàng)建一個3x3的矩陣M.如下所示.

當(dāng)然了,矩陣M可不單單只有上面的一種形式,上面的只能算是一種形式,記住我們說過的,一個坐標(biāo)系能用任意的3個基向量表示.接下來,我們再次研究一個向量和一個矩陣相乘.(圖形變換的開始部分),先看一下公式.

我們還是要借助一開始棟哥的那個坐標(biāo)系圖形.如果矩陣M如下所示.那么圖形將不會發(fā)生任何變換.

接下來,我們就搞起圖形變換了.如果矩陣M發(fā)生了如下改變,那么圖形會有什么樣的變化呢?

在矩陣M中.向量p從[1 0 0]變換到[2 1 0],q從[0 1 0]變換到[-1 2 0],r未發(fā)生變化.然后我們圖形的右上點會再次發(fā)生縮放和旋轉(zhuǎn)的變換.

得到效果圖如下所示.

上面是2D中的變換,3D中的變化一樣類似.例如現(xiàn)在有向量OB[1 1 1],如下圖所示.

同時矩陣M如下所示.

結(jié)果變換之后,向量的圖像如下所示.

平移矩陣

在3D圖形:矩陣與線性變換我說過幾種線性變換,比如旋轉(zhuǎn),縮放,鏡像等等,唯獨沒有平移,但是在日常開發(fā)過程中,平移應(yīng)該算的上我們很常用的一種仿射變換了.那么這是為什么呢?根據(jù)書上所說,矩陣的乘法性質(zhì)所決定的,零向量總是變換成零向量,所以任何矩陣的乘法表達(dá)的變換是不會有平移的.但是我們卻可以使用4X4平移矩陣表示3D環(huán)境中的平移變換,使用3X3平移矩陣表示2D環(huán)境中的平移變換.(假設(shè)w不變且w = 1)具體公式如下所示.

旋轉(zhuǎn)矩陣

關(guān)于平面向量的逆時針旋轉(zhuǎn):?

已知任意一個向量OA=(x,y),把向量OA繞其起點O沿逆時針方向旋轉(zhuǎn)α角得到向量OB=(xcosα-ysinα,xsiaα+ycosα)。推導(dǎo)如下:

可以反推導(dǎo)出旋轉(zhuǎn)的矩陣:

縮放矩陣:

未完待續(xù)%…,等閑了點,再整理補充!

參考文章:

線代基本概念

機器學(xué)習(xí)筆記004 | 矩陣和向量,提升效率的數(shù)學(xué)工具

線性代數(shù)之矩陣?yán)斫?/a>

理解矩陣乘法理解矩陣乘法

AI學(xué)習(xí)筆記:[0]什么是矩陣

3D圖形:矩陣的相關(guān)知識

3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣

高級動畫學(xué)習(xí)心得筆記(五)變換

推薦閱讀:

【通俗理解線性代數(shù)】 -- 矩陣與空間的基和坐標(biāo)

【通俗理解線性代數(shù)】 -- 矩陣的相似對角化

矩陣

數(shù)組和矩陣

矩陣特征值分解與奇異值分解含義解析及應(yīng)用

從矩陣與空間操作的關(guān)系理解CSS3的transform

線性代數(shù)導(dǎo)論11——矩陣空間、秩1矩陣和小世界圖

如何直觀理解矩陣和線性代數(shù)?

矩陣特征值分解與奇異值分解含義解析及應(yīng)用

傳送門:3D數(shù)學(xué)基礎(chǔ) 圖形與游戲開發(fā).pdf

轉(zhuǎn)載請注明來處:透析矩陣,由淺入深娓娓道來—高數(shù)-線性代數(shù)-矩陣 ——周陸軍的博客

如有侵權(quán),請告知本人刪除,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 武俠尋長生
    與天爭命閱讀 48評論 0 0
  • 楊汛橋的冬天來了 日子過的十分的快 來不及掰手指頭細(xì)數(shù) 來年春天 不知又是一番怎樣的光景 如果時光能停在剛剛初始的...
    來年year閱讀 222評論 0 0
  • 好久沒有你的電話 雖然我早能熟悉背出你的號碼 對于手機 我不愿意關(guān)掉它 也許只有自己知道 我在期待什么 還是怕不經(jīng)...
    月色生香閱讀 563評論 0 14