一種矩陣求逆運算方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及矩陣求逆方法,尤其涉及基于時分復(fù)用技術(shù)的矩陣求逆運算的VLSI 設(shè)計方法。
【背景技術(shù)】
[0002] 矩陣求逆的方法有很多,包括伴隨矩陣法、初等變換法、分塊矩陣法、Gauss. Jordan消去法、矩陣分解法等等。上述各種矩陣求逆的方法中,伴隨矩陣法中需要求大量 的行列式,每個行列式都幾乎要計算到所有的矩陣元素,計算量大,對存儲空間的需求也較 大,不利于實現(xiàn)。
[0003] 矩陣分解是將矩陣分解為一些較簡單矩陣的乘積,如三角矩陣或酉矩陣,他們都 具有某種特性,較容易得到逆矩陣。對分解得到的矩陣求逆后相乘,得到原矩陣的逆矩陣。 矩陣分解常見的有三種:1)LU分解法,2)QR分解法,3)奇異值分解法。
[0004] LU分解是一種科學(xué)計算中的矩陣分解方法,常用于線性方程的求解、矩陣求逆和 行列式計算,在圖形圖像處理、科學(xué)計算等諸多領(lǐng)域也有廣泛應(yīng)用。LU分解法是將原正方矩 陣分解成一個上三角形矩陣和一個下三角形矩陣。
[0005] 例如若將矩陣A作LU分解成兩個三角矩陣,即A=LU,則AU亇^其中三角 矩陣L和U幾乎一半數(shù)據(jù)都為0,所以求逆簡單。將分解得到的特殊矩陣分別求逆后再相 乘,即最終得到原矩陣的逆。比較三種分解方法,發(fā)現(xiàn)LU分解法的可并行度最高。
[0006] 當(dāng)矩陣A為η階非奇異矩并且所有順序主子式不為0,則矩陣A可以分解為一個主 對角元素全為1的下三角矩陣L和一個上三角矩陣U的乘積,即A=LU,且分解是唯一的。
[0007] VMl '?釔''
^ J;V ^nh;J-
[0008] L和U的元素可由下面的遞推式求出:
[0009]
[0010] 由于主元出現(xiàn)在分母中,因此只有當(dāng)0(k= 1,,η)時,分解才能進行到底。此 外,在實際的計算過程中,即使不為零,但當(dāng)它很小的時候,由于計算機的精度限制,會導(dǎo)致 下溢,也會使分解運算不穩(wěn)定。因此需要借助選主元的方法,即適當(dāng)交換矩陣的行(或列), 以得到較大的非零主元。
[0011] 如果分解不進行主元選取,會影響到計算精度和正確性,在碰到一些奇異矩陣時, 甚至?xí)?dǎo)致計算失敗。
【發(fā)明內(nèi)容】
[0012] 本發(fā)明的目的在于提供一種矩陣求逆方法,以克服現(xiàn)有技術(shù)領(lǐng)域的不足,本發(fā)明 的方法包括如下步驟:
[0013] 1)首先進行列選主元LU分解:根據(jù)公式PA=LU,將源矩陣Α分解為單位下三角 矩陣L、上三角矩陣U和置換矩陣P;
[0014] 2)接著進行三角矩陣求逆:對L矩陣求逆得到其逆矩陣L\將U矩陣的轉(zhuǎn)置矩陣 求逆后再轉(zhuǎn)置得到US
[0015] 3)最后進行矩陣相乘:將矩陣U1和矩陣L1相乘,并根據(jù)置換矩陣P將矩陣乘法 結(jié)果進行列變換得到源矩陣A、
[0016] 所述的矩陣求逆運算方法的進一步設(shè)計在于,步驟1)包括如下步驟:
[0017] I)進行選主元:從第一列中選取最大主元,與該列的第一個元素的值進行交換, 并存儲最大主元的行下標(biāo);
[0018] II)進行歸一化:將第一行與最大主元所在行互換,得到U分解因子的一行元素 ,用交換后的第一列第一個元素依次除以該列的其它元素,得到L分解因子的一列元素 lu,其中1彡i彡n,l彡j彡n,n表示矩陣階數(shù);
[0019] III)進行數(shù)據(jù)更新:對矩陣進行更新操作:a\, =ai,-1u*Ul,,得到新子矩陣 a1^,每次更新操作后的子矩陣的階數(shù)比原矩陣的階數(shù)少一階,其中,&1]為原矩陣中的值, 2 <i<n,2 <j<η,η表示矩陣階數(shù)。對新的子矩陣循環(huán)重復(fù)以上三個步驟,最終得到L矩陣和U矩陣。
[0020] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟I)中根據(jù)當(dāng)前循環(huán)次數(shù) k,將矩陣的主列元素讀出,先將所述主列元素通過兩個實數(shù)乘法器和一個實數(shù)加法器,流 水運算得出主列元素的實部虛部平方和,再通過一個實數(shù)減法器,找出主元。
[0021] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟II)中根據(jù)當(dāng)前循環(huán)中找 到的最大主元行下標(biāo),將源矩陣的第k行與最大主元所在行互換,接著將數(shù)據(jù)交換后的主 列對角線數(shù)的實部和虛部分別送入兩個實數(shù)除法器中用于算出主元的倒數(shù),再將主列對角 線以下元素讀出,通過一個復(fù)數(shù)乘法器與主元的倒數(shù)相乘,完成歸一操作,其中k表示當(dāng)前 循環(huán)次數(shù)。
[0022] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟III)中采用四路并行運 算,每路運算使用一個復(fù)數(shù)乘法器和一個復(fù)數(shù)加法器,將矩陣第k行第k+Ι列、第k行第k+2 列、第k行第k+3列、第k行第k+4列的數(shù)據(jù),分別送入四路運算的對應(yīng)復(fù)數(shù)乘法器中,與步 驟2)中歸一化的結(jié)果進行復(fù)數(shù)乘法運算;復(fù)數(shù)乘法器的結(jié)果直接送入復(fù)數(shù)加法器,與矩陣 第k+Ι列、第k+2列、第k+3列、第k+4列中第k+Ι行至第η行數(shù)據(jù)分別相減,當(dāng)所述四列數(shù) 據(jù)更新完后,再對所述四列數(shù)據(jù)后續(xù)四列數(shù)據(jù)進行數(shù)據(jù)更新操作,依此類推直至矩陣的最 后一列完成數(shù)據(jù)更新操作,即完成了一次數(shù)據(jù)更新,其中k表示當(dāng)前循環(huán)次數(shù),η為矩陣階 數(shù)。
[0023] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟2)通過取倒單元、乘累加 單元以及取反乘單元實現(xiàn)矩陣的求逆、轉(zhuǎn)置,其中,
[0024] Α.取倒單元:根據(jù)下三角矩陣求逆公式,首先將對角線元素進行取倒,對于L矩 陣,結(jié)果為1 ;對于轉(zhuǎn)置后的U矩陣,將對角線元素讀出,通過兩個實數(shù)乘法器、一個實數(shù)加 法器、一個實數(shù)除法器和一個復(fù)數(shù)乘法器得到取倒運算的結(jié)果;
[0025] Β.乘累加單元:根據(jù)下三角矩陣求逆公式分別分析L矩陣和轉(zhuǎn)置后的U矩陣的數(shù) 據(jù)依賴關(guān)系,通過四組由一個復(fù)數(shù)乘法器和一個復(fù)數(shù)加法器所組成的乘累加器進行乘累加 運算,所述乘累加運算從第2行開始按行順序計算非對角線元素,L矩陣和轉(zhuǎn)置后的U矩陣 同時進行乘累加運算;
[0026] C.取反乘單元:通過復(fù)數(shù)乘法器對步驟Β)中乘累加單元的結(jié)果,與步驟Α)中取 倒單元的結(jié)果進行取反乘運算,即得到相應(yīng)行的取反結(jié)果。
[0027] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟Α)中將復(fù)數(shù)的實部虛部 分別輸出到所述兩個實數(shù)乘法器,兩個實數(shù)乘法器的輸出端分別與所述實數(shù)加法器的兩個 輸入端連接,實數(shù)加法器的輸出端與所述實數(shù)除法器的輸入端連接,實數(shù)除法器的另一輸 入端固定地設(shè)置為1,實數(shù)除法器的輸出端與所述復(fù)數(shù)乘法器的輸入端連接。
[0028] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟Β)中L矩陣和轉(zhuǎn)置后的U 矩陣進行乘累加運算時,分別使用兩組乘累加器,每組乘累加器包括
[0029] 復(fù)數(shù)乘法器完成L、U遞推公式
3 lik與Sk.j的復(fù)數(shù)相乘操作,1ik表示L矩陣中的數(shù),Sk.j表示L矩陣的逆矩陣中的數(shù),i表示行 號,j表示列號,k表示累加循環(huán)次數(shù);
[0030] 復(fù)數(shù)加法器和延遲控制邏輯,根據(jù)復(fù)數(shù)乘法器的結(jié)果完成累加操作。
[0031] 所述的矩陣求逆運算方法的進一步設(shè)計在于,所述步驟C)中對于L矩陣,將乘累 加單元結(jié)果的符號位取反作為取反結(jié)果;對于U矩陣,需將乘累加單元的結(jié)果取反后再與 對應(yīng)行的對角線元素相乘作為取反結(jié)果。