上回我們說(shuō)到棕叫,高斯老哥用消元法解線(xiàn)性方程,大致步驟呢就是給系數(shù)矩陣消元奕删,運(yùn)氣好點(diǎn)呢直接整出上三角系數(shù)矩陣俺泣,得到方程組的唯一解,運(yùn)氣不行呢完残,消著消著發(fā)現(xiàn)整不出上三角伏钠,這時(shí)就得再討論方程是有多解還是無(wú)解。
這里所說(shuō)的"運(yùn)氣"呢其實(shí)可以根據(jù)行列式啊坏怪,Ax=0是否有解啊判斷得到贝润,具體操作可以看看我聊消元法的那一篇文章。
但是铝宵,高斯消元法存在一個(gè)問(wèn)題,就是它是給人做的华畏,比如給第一行乘個(gè)倍數(shù)加到另一行鹏秋,或者將矩陣的兩行交換個(gè)位置,這些我們手寫(xiě)計(jì)算當(dāng)然沒(méi)什么問(wèn)題亡笑,但是你讓計(jì)算機(jī)做它就不能忍了侣夷,計(jì)算機(jī)沒(méi)那么多判斷的能力,它就想要一種統(tǒng)一的計(jì)算模式和計(jì)算次數(shù)仑乌。ok百拓,那我們就來(lái)聊一聊計(jì)算機(jī)是怎么做這些操作的,順便我們能夠知道為什么有很多科學(xué)家對(duì)矩陣乘法性能的提高有著孜孜不倦的追求晰甚。
我們先以一種抽象的方式來(lái)看看矩陣和列向量相乘衙传,比如
根據(jù)第一節(jié)所說(shuō),系數(shù)方陣的三個(gè)列向量為三維空間中的三個(gè)獨(dú)立向量厕九,用它們可以組成三維空間的任一向量蓖捶,[x,y,z]分別為這三個(gè)向量的擴(kuò)展倍數(shù),假如我想知道一倍的[1,2,4]與三倍的[3,7,8]的和向量是什么扁远,只需要給[x,y,z]賦值[1,3,0]就可以了俊鱼,即
那么如果我想知道
[1,2,4]向量與
負(fù)三倍的[1,2,4]與一倍的[3,7,8]的和向量以及
負(fù)四倍的[1,2,4]與一倍的[4,5,9]的和向量
的組合是什么刻像,就可以運(yùn)算
將計(jì)算過(guò)程及結(jié)果整理一下就可以得到
此時(shí)我們會(huì)驚奇得發(fā)現(xiàn)居然消元了,第一行居然消元了并闲!只不過(guò)在列方向细睡,高斯消元法需要的是在行方向做消元,那如果我對(duì)行向量能做一些求和之類(lèi)的操作問(wèn)題不就解決了嗎帝火。而這你也不需要擔(dān)心溜徙,因?yàn)橛袛?shù)學(xué)大佬已經(jīng)幫你總結(jié)好了,即
根據(jù)消元步驟先根據(jù)pivot1給23行消元购公,即
再根據(jù)pivot2給第三行消元萌京,即
再將最后一行變?yōu)?
以上我們將消元的過(guò)程變?yōu)榱司仃嚦朔ǎ也逻@就是計(jì)算機(jī)做消元的方法宏浩,當(dāng)然知残,在消元過(guò)程中有時(shí)要用到兩行交換位置的情況,我們也可以利用矩陣乘得到比庄,比如交換矩陣的前兩行
我們將上述給原矩陣做變換的矩陣叫做初等變換矩陣求妹,初等變換矩陣的逆矩陣非常好求,逆矩陣的定義為AA^{-1}=E佳窑,而初等變換矩陣正是E經(jīng)過(guò)了簡(jiǎn)單的運(yùn)算得到的制恍。比如將第一行乘4并加到第二行的變換矩陣,只要從第二行中減去第一行的4倍就變回了單位陣神凑,也就得到了逆矩陣净神。,即
而交換兩行的變換陣的逆矩陣是它本身
那么更一般的矩陣求逆怎么做呢(已知矩陣可逆)溉委,要不怎么說(shuō)數(shù)學(xué)家牛逼呢鹃唯,Gauss-Jordan法使求逆完全可以通過(guò)消元來(lái)解決,就是這二位
他們表示瓣喊,假如你想求一個(gè)逆矩陣啊坡慌,先給原矩陣旁邊整一個(gè)單位陣,然后給第一個(gè)矩陣開(kāi)始消元藻三,消元過(guò)程中單位陣做同樣的變換洪橘,當(dāng)原來(lái)的矩陣變?yōu)閱挝魂嚂r(shí),單位陣就是原矩陣的逆矩陣棵帽,首先是Gauss的消元法創(chuàng)造上三角矩陣
然后jordan說(shuō)你把這個(gè)上三角再倒著消元成單位陣就得到逆矩陣?yán)?/p>
不放心的話(huà)拿到matlab里驗(yàn)證一下就ok了熄求。
我們可以看到,化簡(jiǎn)求逆都是經(jīng)過(guò)矩陣乘來(lái)運(yùn)算岖寞,這種較為統(tǒng)一的運(yùn)算過(guò)程可是把計(jì)算機(jī)爽死了抡四,我們說(shuō)的解方程啊,矩陣求逆啊到這里都變成了矩陣的乘法運(yùn)算,而矩陣乘不僅僅只有這一點(diǎn)應(yīng)用指巡,在空間中一個(gè)向量的放大淑履,縮小,平移藻雪,旋轉(zhuǎn)都是通過(guò)乘矩陣的方式來(lái)實(shí)現(xiàn)秘噪,所以在矩陣乘這個(gè)計(jì)算上一點(diǎn)點(diǎn)的優(yōu)化都可能使軟件性能發(fā)生巨大變化,這也就回答了文章開(kāi)始的問(wèn)題勉耀,為什么有那么多人不斷追求矩陣乘運(yùn)算性能的提高指煎。微小的改變卻能導(dǎo)致巨大的性能變化,這可能就是算法之美吧便斥。