本技術(shù)涉及線性代數(shù),具體地,涉及一種對稱矩陣三角化方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、矩陣的三對角化技術(shù)是線性代數(shù)和數(shù)值分析中的一個重要課題,在數(shù)學(xué)、工程和計算科學(xué)領(lǐng)域有著廣泛的應(yīng)用。
2、矩陣的三對角化是將一個矩陣通過相似變換轉(zhuǎn)換成一個三對角矩陣的過程,所謂的三對角矩陣,是指除了主對角及其上下兩條對角線上的元素外,其他元素均為零的方針。這項(xiàng)技術(shù)可以追溯到線性方程組的求解問題,矩陣概念的產(chǎn)生和發(fā)展與解線性方程組密切相關(guān)。具體來說,矩陣的可對角化問題是矩陣?yán)碚撝械囊粋€重要組成部分,它在奇異值分解、特征值分解及正交矩陣分塊的同時對角化分解等方面有基礎(chǔ)性的作用。
3、矩陣的三對角化的方法主要有:雅可比迭代法,高斯-賽德爾方法,塊高斯-賽德爾方法,豪斯霍爾德法,單葉函數(shù)參數(shù)表示法等。為了在計算過程中不引入舍入誤差,提高結(jié)果準(zhǔn)確度,一般工程上會選擇雅可比迭代法和豪斯霍爾德法。
4、雅可比迭代法是通過一系列的正交旋轉(zhuǎn)來消去矩陣的非對角元素,從而得到對角矩陣。而豪斯霍爾德法使用所謂的“反射”或“鏡像”變換,構(gòu)造一系列豪斯霍爾德反射矩陣來將矩陣的下三角部分變?yōu)?,實(shí)現(xiàn)三對角化。相比于雅可比迭代法,豪斯霍爾德法通過正交反射操作逐步減少了矩陣的復(fù)雜度,因此收斂速度較快,特別適用于大規(guī)模問題求解。
5、矩陣三對角化的工程實(shí)現(xiàn)較為復(fù)雜,迭代計算,耗時嚴(yán)重,隨著階數(shù)的增長,時長往往以指數(shù)的形式增加。
6、工程一般實(shí)現(xiàn)三對角化時,矩陣階數(shù)一般是固定的,如果階數(shù)變化,對應(yīng)的軟硬件代碼等均需要修改,無法做到實(shí)現(xiàn)任意階數(shù)的三對角化。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例中提供了一種對稱矩陣三角化方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì)。
2、本技術(shù)實(shí)施例的第一個方面,提供了一種對稱矩陣三角化方法,包括:
3、對于目標(biāo)對稱矩陣的反射變換中的每一次迭代計算,確定用于當(dāng)前次迭代計算的第一目標(biāo)矩陣運(yùn)算表達(dá)式;
4、將所述第一目標(biāo)矩陣運(yùn)算轉(zhuǎn)換為第二目標(biāo)矩陣運(yùn)算表達(dá)式,其中,所述第二目標(biāo)矩陣運(yùn)算表達(dá)式的變量包括所述目標(biāo)對稱矩陣與預(yù)設(shè)變換矩陣列向量和預(yù)設(shè)過程計算列向量;
5、將所述目標(biāo)對稱矩陣劃分為多個目標(biāo)向量;
6、將各所述目標(biāo)向量分別存儲至處理器中不同的單核中,將所述預(yù)設(shè)變換矩陣列向量和所述預(yù)設(shè)過程計算列向量中與各所述目標(biāo)向量分別對應(yīng)的目標(biāo)元素存儲至與所述目標(biāo)向量對應(yīng)的單核中,在所述不同的單核中,按照所述第二目標(biāo)矩陣運(yùn)算表達(dá)式,對各所述目標(biāo)向量和所述目標(biāo)元素進(jìn)行并行運(yùn)算,并將所述不同的單核運(yùn)算的結(jié)果組成的矩陣作為當(dāng)前次迭代計算的結(jié)果。
7、在本技術(shù)一個可選的實(shí)施例中,所述第二目標(biāo)矩陣運(yùn)算表達(dá)式包括:所述預(yù)設(shè)變換矩陣列向量與所述預(yù)設(shè)過程計算列向量的共軛轉(zhuǎn)置之間的第一乘法運(yùn)算;所述預(yù)設(shè)過程計算列向量與所述預(yù)設(shè)變換矩陣列向量的共軛轉(zhuǎn)置之間的第二乘法運(yùn)算;以及所述目標(biāo)對稱矩陣與第一乘法運(yùn)算結(jié)果和第二乘法運(yùn)算結(jié)果之間的減法運(yùn)算。
8、在本技術(shù)一個可選的實(shí)施例中,所述在所述不同的單核中,按照所述第二目標(biāo)矩陣運(yùn)算表達(dá)式,對各所述目標(biāo)向量和所述目標(biāo)元素進(jìn)行并行運(yùn)算,包括:
9、對于每個單核中的目標(biāo)向量,并行執(zhí)行以下計算過程:
10、確定所述預(yù)設(shè)變換矩陣列向量中與當(dāng)前目標(biāo)向量分別對應(yīng)的第一計算元素向量、所述預(yù)設(shè)變換矩陣列向量的共軛轉(zhuǎn)置中與當(dāng)前目標(biāo)向量分別對應(yīng)的第二計算元素向量、所述預(yù)設(shè)過程計算列向量中與當(dāng)前目標(biāo)向量分別對應(yīng)的第三計算元素向量、以及所述預(yù)設(shè)過程計算列向量的共軛轉(zhuǎn)置中與當(dāng)前目標(biāo)向量分別對應(yīng)的第四計算元素向量;
11、對所述第一計算元素向量與所述第四計算元素向量之間進(jìn)行乘法運(yùn)算,得到第一乘法運(yùn)算矩陣;
12、對所述第三計算元素向量與所述第二計算元素向量之間進(jìn)行乘法運(yùn)算之間進(jìn)行乘法運(yùn)算,得到第二乘法運(yùn)算矩陣;
13、所述當(dāng)前目標(biāo)向量對所述第一乘法運(yùn)算矩陣和所述第二乘法運(yùn)算矩陣進(jìn)行減法運(yùn)算,得到當(dāng)前單核運(yùn)算的結(jié)果。
14、在本技術(shù)一個可選的實(shí)施例中,在所述目標(biāo)向量為行向量的情況下,所述確定所述預(yù)設(shè)變換矩陣列向量中與當(dāng)前目標(biāo)向量分別對應(yīng)的第一計算元素向量、所述預(yù)設(shè)變換矩陣列向量的共軛轉(zhuǎn)置中與當(dāng)前目標(biāo)向量分別對應(yīng)的第二計算元素向量、所述預(yù)設(shè)過程計算列向量中與當(dāng)前目標(biāo)向量分別對應(yīng)的第三計算元素向量、以及所述預(yù)設(shè)過程計算列向量的共軛轉(zhuǎn)置中與當(dāng)前目標(biāo)向量分別對應(yīng)的第四計算元素向量,包括:
15、在所述當(dāng)前目標(biāo)向量為所述目標(biāo)對稱矩陣的第n行元素組成的向量的情況下,所述第一計算元素向量包括所述預(yù)設(shè)變換矩陣列向量中第n個元素;所述第二計算元素向量包括所述預(yù)設(shè)變換矩陣列向量的共軛轉(zhuǎn)置中的第n個元素到最后一個元素;所述第三計算元素向量包括所述預(yù)設(shè)過程計算列向量中第n個元素;所述第四計算元素向量包括所述預(yù)設(shè)過程計算列向量的共軛轉(zhuǎn)置中的第n個元素到最后一個元素。
16、在本技術(shù)一個可選的實(shí)施例中,在所述目標(biāo)向量為列向量的情況下,所述預(yù)設(shè)變換矩陣列向量和所述預(yù)設(shè)過程計算列向量中與當(dāng)前目標(biāo)向量分別對應(yīng)的目標(biāo)元素的確定過程包括:
17、在所述當(dāng)前目標(biāo)向量為所述目標(biāo)對稱矩陣的第n列元素組成的向量的情況下,所述第一計算元素向量包括所述預(yù)設(shè)變換矩陣列向量中的第n個元素到最后一個元素;所述第二計算元素向量包括所述預(yù)設(shè)變換矩陣列向量的共軛轉(zhuǎn)置中第n個元素;所述第三計算元素向量包括所述預(yù)設(shè)過程計算列向量中的第n個元素到最后一個元素;所述第四計算元素向量包括所述預(yù)設(shè)過程計算列向量的共軛轉(zhuǎn)置中第n個元素。
18、在本技術(shù)一個可選的實(shí)施例中,所述方法還包括:
19、根據(jù)所述單核的數(shù)量與所述目標(biāo)對陣矩陣的階數(shù),確定所述每一次迭代計算所述單核對應(yīng)的所述目標(biāo)向量;
20、在所述單核的數(shù)量小于所述目標(biāo)對陣矩陣的階數(shù)的情況下,所述每一次迭代計算所述單核對應(yīng)的所述目標(biāo)向量的數(shù)量超過1個。
21、在本技術(shù)一個可選的實(shí)施例中,所述方法還包括:
22、在所述對各所述目標(biāo)向量和所述目標(biāo)元素進(jìn)行并行運(yùn)算的同時,確定所述單核中下一次運(yùn)算對應(yīng)的下一個目標(biāo)向量,并將所述下一個目標(biāo)向量存儲至所述單核中。
23、本技術(shù)實(shí)施例的第二個方面,提供了一種對稱矩陣三角化裝置,包括:
24、確定模塊,用于對于目標(biāo)對稱矩陣的反射變換中的每一次迭代計算,確定用于當(dāng)前次迭代計算的第一目標(biāo)矩陣運(yùn)算表達(dá)式;
25、轉(zhuǎn)換模塊,用于將所述第一目標(biāo)矩陣運(yùn)算轉(zhuǎn)換為第二目標(biāo)矩陣運(yùn)算表達(dá)式,其中,所述第二目標(biāo)矩陣運(yùn)算表達(dá)式的變量包括所述目標(biāo)對稱矩陣與預(yù)設(shè)變換矩陣列向量和預(yù)設(shè)過程計算列向量;
26、劃分模塊,用于將所述目標(biāo)對稱矩陣劃分為多個目標(biāo)向量;
27、運(yùn)算模塊,用于將各所述目標(biāo)向量分別存儲至處理器中不同的單核中,將所述預(yù)設(shè)變換矩陣列向量和所述預(yù)設(shè)過程計算列向量中與各所述目標(biāo)向量分別對應(yīng)的目標(biāo)元素存儲至與所述目標(biāo)向量對應(yīng)的單核中,在所述不同的單核中,按照所述第二目標(biāo)矩陣運(yùn)算表達(dá)式,對各所述目標(biāo)向量和所述目標(biāo)元素進(jìn)行并行運(yùn)算,并將所述不同的單核運(yùn)算的結(jié)果組成的矩陣作為當(dāng)前次迭代計算的結(jié)果。
28、本技術(shù)實(shí)施例的第三個方面,提供了一種計算機(jī)設(shè)備,包括:包括存儲器和處理器,存儲器存儲有計算機(jī)程序,處理器執(zhí)行計算機(jī)程序時實(shí)現(xiàn)如上任一項(xiàng)對稱矩陣三角化方法的步驟。
29、本技術(shù)實(shí)施例的第四個方面,提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序,其特征在于,計算機(jī)程序被處理器執(zhí)行時實(shí)現(xiàn)如上任一項(xiàng)的對稱矩陣三角化方法的步驟。
30、本技術(shù)實(shí)施例提供的上述技術(shù)方案與現(xiàn)有技術(shù)相比至少具有如下優(yōu)點(diǎn)的部分或全部:
31、本技術(shù)實(shí)施例所述的對稱矩陣三角化方法,對于目標(biāo)對稱矩陣的反射變換中的每一次迭代計算,確定用于當(dāng)前次迭代計算的第一目標(biāo)矩陣運(yùn)算表達(dá)式;將所述第一目標(biāo)矩陣運(yùn)算轉(zhuǎn)換為第二目標(biāo)矩陣運(yùn)算表達(dá)式,其中,所述第二目標(biāo)矩陣運(yùn)算表達(dá)式的變量包括所述目標(biāo)對稱矩陣與預(yù)設(shè)變換矩陣列向量和預(yù)設(shè)過程計算列向量;將所述目標(biāo)對稱矩陣劃分為多個目標(biāo)向量;將各所述目標(biāo)向量分別存儲至處理器中不同的單核中,將所述預(yù)設(shè)變換矩陣列向量和所述預(yù)設(shè)過程計算列向量中與各所述目標(biāo)向量分別對應(yīng)的目標(biāo)元素存儲至與所述目標(biāo)向量對應(yīng)的單核中,在所述不同的單核中,按照所述第二目標(biāo)矩陣運(yùn)算表達(dá)式,對各所述目標(biāo)向量和所述目標(biāo)元素進(jìn)行并行運(yùn)算,并將所述不同的單核運(yùn)算的結(jié)果組成的矩陣作為當(dāng)前次迭代計算的結(jié)果,不僅通過將所述目標(biāo)對稱矩陣劃分為多個目標(biāo)向量來支持任意階數(shù)對稱矩陣的三對角分解,階數(shù)作為入?yún)ⅲ纯赏瓿蓪?yīng)的三對角分解,而且利用多核并行運(yùn)算,提升對稱矩陣三角化的計算效率。