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