matlab格拉姆施密特,改进的格拉姆-施密特正交化(modified Gram-Schmidt Process)
最近在重新學(xué)習(xí)線性代數(shù),學(xué)習(xí)的教材是MIT Gilbert Strang 教授的《INTRODUCTION TO LINEAR ALGEBRA》,在第4.4章節(jié)格拉姆-施密特正交化時(shí),書中章節(jié)末尾介紹了一種改進(jìn)的格拉姆-施密特正交化方法,但書中給出了公式,省略了很多細(xì)節(jié),給學(xué)習(xí)理解造成了一定的難度,為自己今后或者遇到同樣問題的朋友記錄一下公式的來(lái)由。
首先,介紹一下格拉姆施密特正交化的思想和方法。介紹正交化還得說說投影矩陣,我們?cè)谟米钚《朔ń夥匠探M的最優(yōu)解的時(shí)候,由于Ax=b,b一般情況下,b并不一定存在于A的列空間中,這種情況下Ax=b其實(shí)是無(wú)解的,因?yàn)檎也坏搅锌臻g內(nèi)合適的線性組合使其結(jié)果為b。這是后最小二乘法就派上用場(chǎng)了,最小二乘法的思想是,既然Ax=b無(wú)解,我們?cè)诹锌臻g內(nèi)找到一個(gè)向量p,下面這個(gè)方程組一定有解,那么怎么尋找p呢,最小二乘選取的p是使得||e||=||b-p||誤差最小的那個(gè)p,其實(shí)這個(gè)p就是b在A的列空間上的投影。前面說了那么一大堆就是為了引出投影,那這個(gè)投影是怎么做呢,推導(dǎo)這里我就省略了,直接給出投影矩陣P:
在線上的投影矩陣,這是后a是線上的向量:
在子空間上的投影矩陣:。
知道投影矩陣之后,那么為什么要正交化呢,有什么好處呢?投影矩陣中包含,使得普通的投影矩陣并不是那么漂亮,這一向給求解帶來(lái)了很大的麻煩,那么能不能消除它呢?答案就是找到A列空間的一組標(biāo)準(zhǔn)正交基Q,因?yàn)閷?duì)于標(biāo)準(zhǔn)正交基有如下性質(zhì),如果我們能找到列空間的標(biāo)準(zhǔn)正交基(格拉姆-施密特正交化要做的事情),那么上面的投影矩陣P中A用Q代替,表達(dá)式變?yōu)?#xff1a;,神奇的發(fā)現(xiàn)投影矩陣中不好的部分不見了。這也是標(biāo)準(zhǔn)正交令人著迷的地方。那么怎么尋找標(biāo)準(zhǔn)正交基呢,我們知道一個(gè)向量子空間中有多種可能的標(biāo)準(zhǔn)正交基,格拉姆-施密特就為我們提供了一種尋找標(biāo)準(zhǔn)正交基的方法,思想很簡(jiǎn)單:假設(shè)矩陣M=(?a b c),A列空間的第一列為第一個(gè)標(biāo)準(zhǔn)正交基向量的方向,令A(yù)=a,通過除去向量的模得到第一個(gè)基向量,那么第二基向量怎么求呢,答案就是通過投影得到在A上的投影,根據(jù)投影的知識(shí)知道這是后有是垂直于的,那么我們得到第二個(gè)基向量,如果M矩陣還有第3個(gè)列向量,那我們?nèi)绾蔚玫侥?#xff1f;思想和得到的思想一樣,對(duì)在和上做投影得到,, 重復(fù)第二步驟就可以得到所有的n個(gè)正交基向量,這就是格拉姆-施密特正交化。
格拉姆-施密特正交化是A的一個(gè)因子分解,叫QR分解,A=QR,Q就是格拉姆-施密特正交化的標(biāo)準(zhǔn)正交矩陣,R是一個(gè)上3角矩陣,假設(shè)M=(?a b c),M的QR分解是如下形式:
為什么R會(huì)是這樣的上3角矩陣呢,原因是格拉姆-施密特正交化的過程,a在和方向一致,所以在上投影為0,同樣b只在上有分量在上沒有分量,格拉姆-施密特正交化的過程保證了A前面的列不會(huì)在后面的正交向量方向有分量,因?yàn)楹竺娴恼环至渴冀K是垂直于前面的列構(gòu)成的向量子空間,也就是說與前面的列向量都垂直。下面我們推導(dǎo)一下就是b在方向投影的模長(zhǎng),這對(duì)后面理解改進(jìn)的格拉姆-施密特正交化至關(guān)重要。
b在上的投影由線上的投影矩陣知道:
,,可以推論R中其他項(xiàng)也是對(duì)于的向量在正交基向量上投影的模長(zhǎng)。
前面的準(zhǔn)備知識(shí)夠了,接下來(lái),我們可以搬出改進(jìn)的格拉姆-施密特正交化的公式了A是mxn階矩陣:
下面的公式從開始計(jì)算在上的模長(zhǎng)(在上的模場(chǎng)由已經(jīng)求得):
改進(jìn)的格拉姆-施密特正交化就是上面的4個(gè)公式,下面我們就分析下這四個(gè)公式各自的含義:
就是QR分解中R對(duì)角線上的值,如果對(duì)應(yīng)上面舉例的QR分解,那么,前面已經(jīng)證明了R中的項(xiàng)是對(duì)應(yīng)向量在正交基向量上投影的模長(zhǎng),是在方向上的投影,的表達(dá)式對(duì)應(yīng)的正是在方向上的投影的模長(zhǎng)。
是的第j個(gè)元素值,來(lái)源于前面的格拉姆-施密特正交化,,。
是QR分解中對(duì)角線之外的元素表達(dá)式,像的向量?jī)?nèi)積展開,這里有個(gè)小小的拐彎要知道,原來(lái)R矩陣第j列的元素對(duì)應(yīng)的是,而這里通過迭代計(jì)算的方式,第一步,與元表達(dá)式一致,但是從第二次迭代開始,由第四個(gè)公式知道,這時(shí),這時(shí)候的,因?yàn)?從幾何上理解與正交,在上的分量不會(huì)對(duì)在上的分量的模長(zhǎng)產(chǎn)生貢獻(xiàn),或者說在上的分量在上的投影為0,在計(jì)算到的投影時(shí),可以先將在上的分量減掉。
就是在迭代過程中從減去前面計(jì)算過的方向分量的剩余補(bǔ)向量。
下面我們用改進(jìn)的施密特正交化做一下上面介紹施密特正交化對(duì)M=(a b c)矩陣做的事情,直觀的看看它和標(biāo)準(zhǔn)的施密特正交化的不同之處:
摘抄一段書上改進(jìn)的格萊姆-施密特正交化的matlab代碼:
for j=1:n? ? ? ? ? ? ? ? ? ? ? %modified Gram-Schmidt
v=A(:,j);? ? ? ? ? ? ? ? ? %v begins as column j of A
for i=1:j-1? ? ? ? ? ? ? ?%columns up to j-1, already settled in Q
R(i,j)=Q(:,i)'*v;? ?%compute
v=v-R(i,j)*Q(:,i); %subract the projection
end? ? ? ? ? ? ? ? ? ? ? ? %v is now perpendicular to all of
R(j,j)=norm(v);? ? ? ?%diagonal entries of R
Q(:,j)=v/R(j,j);? ? ? ? ?%normalize v to be the next unit vector q_{j}
end
總結(jié)
以上是生活随笔為你收集整理的matlab格拉姆施密特,改进的格拉姆-施密特正交化(modified Gram-Schmidt Process)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实木餐椅什么牌子好呢?
- 下一篇: 乌鲁木齐华凌市场有卫生间老式推拉门滑轮吗