線代裡有很多款矩陣拆解方式,把A拆成LU,使A=LU是其中之一。其中U是一個上三角矩陣,L是一個下三角矩陣。

U其實就是我們常見的,在學了n元一次方程組後就一直在求的,是用高斯法解方程的標配。對於方程Ax=b,把A用初等變換整成U(同時使b變成b‘),有Ux=b’;再利用U的結構特點,一下就得到xₙ=b‘ₙ,然後順藤摸瓜,就把整個x求出來了。而從Ux=b’中得到的x和從Ax=b中得到的x是一樣的。可L是個啥鬼?為啥要整一個L出來呢?派啥用處?

原因很單純,就是要用L來求b‘呀。你看啊,對於一個Ax=b,b每變動一次,x通常就不一樣(尤其A滿秩時)。為了求解x,一個標準的做法就是把A變成一個上三角矩陣U(同時把b變成了b’)。在這裡,無論b是啥數,從A整出來的U都是一樣的,只不過b變了以後,b‘也不一樣了。後來有人想省事,就問:對於一個Ax=b,咱們能不能把Ux部分固定下來,無需一遍又一遍地搞把A變換成U的操作,而是隻需要把b變成b’即可?這個思路就導致有人搞出了A=LU的拆分法,使Ax=b變成了LUx=b,然後就有Ux=L⁻¹b了。這樣,只要在第一次求出了U和L,對於同一個A,若b有變化,就不需要每次搞把A變換成U的操作(因為都一樣),而只需要操作把b變成b‘的操作,就是計算b’=L⁻¹b,然後就妥妥地根據Ux=b‘求出x了。

你看,L就是幹這個的,是個偷懶省事的辦法。當然,如果你只是列一道題,那你就用高斯消元法一次性地把A整成U,同時把b整成b’就行了,不需要求啥勞什子的L。可在實際工作中,對於一個由Ax=b表達的方程組,可能有很多不同的b,我們要得到對應的x,這時,求L的好處就會體現出來了。

不過,要記得,光求出L還不夠,要從b得到b‘,我們還要求得L⁻¹,就是L的逆矩陣。

把A拆成LU不是啥神秘操作,就是圖省事(減少計算量),第一次麻煩些,不僅要把A拆成LU,還要求得L的逆。可後面就省事了,無論啥b,總是有同樣的Ux龍門陣擺好在那裡,你只要用現成的L⁻¹左乘b,就得到b’了,然後分分鐘從Ux=b‘裡求出x了。

剛開始學到A=LU,有人或誤會為裡面有啥高深學問,其實沒啥,就一懶鬼。

補:LU還有特別款式的。曾有問:Doolittle(漢譯:杜里爾特或杜利爾特)就是LU分解麼?

有答:杜是LU分中特別一款,特在對L有特殊要求,就是L是一個單位下三角矩陣(對U沒有特別要求);若對U有類似要求(對L沒有),就是一個Crout分解。單位三角矩陣是一個特別的三角陣,特別之處在於它的主元上都是1。