陳 懇,魏藝君,程思潔,魏倩文,丁 戈
(1.南昌大學(xué)信息工程學(xué)院,江西 南昌 330031;2.國網(wǎng)江西省電力公司上饒供電公司,江西 上饒 334000)
LR、LDU、CU三角分解法[1-6,15-17]與因子表法的計(jì)算原理類似,均用于常系數(shù)線性方程AX=F中的求解。由于因子表法和各種分解法計(jì)算過程不同,其計(jì)算效率和計(jì)算速度有所不同,然而因子表法和各種分解法的計(jì)算過程或計(jì)算方式均存在不合理情況。如因子表法中元素計(jì)算一般采用按行消元、逐行規(guī)格化[1-3],而各種分解法是按從左上角到右下角計(jì)算因子陣元素或以按行方式從左到右計(jì)算各行元素[1-4],這些計(jì)算方式均無法應(yīng)用對稱矩陣元素本身的特點(diǎn);因子表法中是形成因子表后再將對角元素取倒,可提高回代過程計(jì)算速度,但對其前代計(jì)
算速度沒有幫助,各種分解法中未考慮對角元素取倒,前代和回代計(jì)算速度均受影響[14-15];因子表法中所有元素存放在同一個數(shù)組,便于應(yīng)用元素之間關(guān)系,而各種分解法中由于各因子陣元素分別存放在不同數(shù)組中,根本無法利用和展示元素間的對應(yīng)關(guān)系;因子表法無中間矩陣,可直接完成前代和回代計(jì)算,各種分解法需通過中間矩陣W或W和H完成前代和回代計(jì)算;因子表法和各種分解法均需依賴消元計(jì)算公式或元素計(jì)算公式完成計(jì)算等。上述問題均不利于計(jì)算過程優(yōu)化和程序編寫,更不利于計(jì)算速度提高。
CU分解法比LR、LDU分解法的文獻(xiàn)介紹和應(yīng)用均較少[1-6]。但實(shí)際上,CU分解法的計(jì)算過程類似于按行消元、逐行規(guī)格化的高斯消元法[4],且其計(jì)算速度與LR、LDU分解法相比有明顯優(yōu)勢[16]。然而,由于CU分解法中C、U陣元素分開存放、元素計(jì)算需依靠計(jì)算公式、沒有考慮對稱矩陣的特點(diǎn)及對角元取倒,其計(jì)算效率遠(yuǎn)未達(dá)到最佳。文獻(xiàn)[17]的快速CU分解法雖計(jì)算速度有一定程度提高,但仍然遠(yuǎn)未達(dá)到其應(yīng)有的計(jì)算效率,而文獻(xiàn)[18]只是擴(kuò)展了CU分解法的應(yīng)用范圍,對計(jì)算速度提高無幫助。
本文針對CU分解法中存在的問題及其計(jì)算過程的特點(diǎn),提出對稱CU分解法,其中包括:用可展示各元素之間關(guān)系的CU合成陣同時存放c、u元素;用四角規(guī)則按行分步計(jì)算u元素而無需應(yīng)用元素計(jì)算公式,直接根據(jù)對稱性按列賦值得到c元素而無需計(jì)算;對對角元素提前取倒以減少除法計(jì)算等。將因子表法、CU分解法、對稱CU分解法用于計(jì)算極坐標(biāo)PQ分解法潮流,并比較其計(jì)算速度。
CU分解法將系數(shù)矩陣A分解為下三角矩陣C和單位上三角矩陣U的乘積,即A=CU。需三個數(shù)組分別存放A、C、U陣元素,元素之間關(guān)系不清。其元素計(jì)算順序?yàn)閏元素按行、u元素按列或均按行方式根據(jù)式(1)~(2)每次計(jì)算一個完整的c或u元素。
式(1)~式(2)表明,c、u元素計(jì)算過程復(fù)雜,不適合編程,且無論采用c元素按行、u元素按列或均按行方式都無法實(shí)現(xiàn)c、u元素對稱計(jì)算。此外,式(2)中用cii元素做除數(shù),勢必影響C、U因子陣前代過程計(jì)算速度。
對方程AX=F進(jìn)行CU分解時需將對原方程的求解轉(zhuǎn)換分別對CW=F和UX=W二個方程求解,W陣前代和X陣回代過程分別展開如式(3)~(4)。
式(3)中求取W陣也始終用cii元素做除數(shù),同樣影響形成C、U因子陣后對后續(xù)F陣前代過程的計(jì)算速度。
要解決CU分解法中上述問題,首先要建立可清晰地體現(xiàn)c、u元素關(guān)系的CU合成陣。以四階A44陣為例,由于A44=C44U44,根據(jù)式(1)~(2)可將C44、U44陣與A44陣元素關(guān)系均在CU合成陣中展示如式(5)。如式(5)。由于C陣中對角元素為cii,U陣中對角元素為1,而式(5)人為地將C、U陣合在一起,沒有U陣對角元素,因此CU合成陣與A陣之間并不滿足數(shù)學(xué)關(guān)系,但并不影響前代和回代計(jì)算。此外CU合成陣可直接在A陣數(shù)組中形成,而無需再占用其它數(shù)組。
根據(jù)式(5)可看出以下幾點(diǎn):①計(jì)算c、u元素可看成是分步對其所在行左側(cè)的c元素進(jìn)行類似含規(guī)格化的按列消元,計(jì)算完成后u元素均要除以所在行的對角元素cii。②對稱矩陣中c、u元素是按cii比例對稱。③假設(shè)分步計(jì)算中未完成計(jì)算的元素為計(jì)算第i行uij元素的前一步元素,其除以對角元素cii后得uij元素,此時的元素就是與其對應(yīng)的cji元素。因此可在得到元素后,將其直接賦值給對應(yīng)的cji元素,從而省去所有下三角cji元素的計(jì)算。④對cji元素賦值后,將元素除以對角元素cii可得uij元素。因此利用式(5)不但可拆分、并分步計(jì)算c、u元素,還可利用c、u元素的比例對稱關(guān)系而大大簡化計(jì)算,從而提高計(jì)算速度。
由于計(jì)算uij元素的最后一步均為用元素除以所在行的對角元素cii,導(dǎo)致程序中大量除法運(yùn)算而影響分解速度。因此可在最后計(jì)算第i行的uij元素前先將cii元素取倒,再將元素賦值給對應(yīng)的cji元素,然后用(1/cii)乘以元素得到uij元素,從而幾乎可免去除法運(yùn)算。
因此可將式(5)的合成陣寫成式(6)。與因子表法中形成因子表后再將對角元取倒、僅省略其回代計(jì)算過程的除法運(yùn)算方式相比,本方法可幾乎完全省略前代和回代計(jì)算過程的全部除法運(yùn)算,而式(2)~(3)的計(jì)算方式很難消除除法運(yùn)算。
將式(1)~ (2)的計(jì)算式拆分為式(7)~ (10)。
此時式(7)~(10)已經(jīng)將式(1)~(2)每次計(jì)算一個完整的c或u元素的方式拆分成僅對對角元素和上三角元素cii元素的分步計(jì)算,計(jì)算出元素直接賦值得到cji元素,再對元素除以所在行的對角元素cii得到uij元素。根據(jù)式(7)~(10)中c、u元素的拆分,和式(6)元素的分步計(jì)算,不但可實(shí)現(xiàn)c、u元素的對稱計(jì)算,還可省略大量的除法運(yùn)算,式(3)中的除法運(yùn)算也可免去。
先不考慮矩陣對稱性進(jìn)行傳統(tǒng)CU分解。假設(shè)c、u元素分步計(jì)算過程為:┄c?、u′?→c″、u″→c′、u′→c、u,當(dāng)對n階對稱的CU合成陣完成了其第k行以上和第k列及以左c、u元素的分步計(jì)算,將繼續(xù)對第k行及以下和第k列以右的c、u元素繼續(xù)分步計(jì)算時所對應(yīng)的CU合成陣的簡化矩陣如式(11)。為簡化分析,同時給出傳統(tǒng)法中式(11)和對稱法中式(12)相關(guān)元素定義如下:
cii(1/cii):對角元素(對稱法取倒所得);
u′i,i+1、u′ip、u′in(ui,i+1、uip、uin):交叉元素(傳統(tǒng)法除以對角元素所得,對稱法乘以對角元素倒數(shù)所得),對角元素同行以右;
ci+1,i、cpi、cni(ai+1,i、api、ani):消元元素(對稱法賦值前),對角元同列以下;
c?i+1,i+1~u?i+1,n、c?p,i+1~u?pn、c?n,i+1~u?nn(c″i+1,i+1~u″i+1,n、c″p,i+1~u″pn、c″n,i+1~u″nn):計(jì)算元素的前值或新值(中間值或終值,僅給出傳統(tǒng)法的狀態(tài)),消元元素所在行與交叉元素ui,i+1、uip、uin所在列的交互點(diǎn)。
如將式(1)~(2)改寫成分步計(jì)算,則其文字表述為:“以對角元素為參考元素,計(jì)算元素的新值c″ij(u″ij)=其前值c?ij(u?ij)-消元元素c*i×交叉元素ui*”。
因此在計(jì)算計(jì)算元素的新值前,先將所有交叉元素u′ij元素除以其所在行對角元素cii得uij元素。再參照式(11)根據(jù)該文字表述可直接寫出相應(yīng)計(jì)算元素c″i+1,i+1~u″i+1,n、c″p,i+1~u″pn、c″n,i+1~u″nn該步的計(jì)算結(jié)果。
上述計(jì)算結(jié)果表明用合成陣計(jì)算c、u元素時,每次與計(jì)算有關(guān)的四個元素均在矩形的四個角上,因此將其稱為四角規(guī)則。四角規(guī)則的計(jì)算結(jié)果與式(1)~(2)完全相同,因此根據(jù)CU合成陣可無需式(1)~(2)而直接用四角規(guī)則以類似“逐行規(guī)格化,按列消元”的方式計(jì)算CU合成陣的所有元素。這種計(jì)算方式使CU分解過程極為簡單直觀,特別利于程序編寫。
式(11)計(jì)算過程表明,由于未利用c、u元素的比例對稱關(guān)系uik=cki/cii分步計(jì)算c、u元素,因此必須計(jì)算所有c、u元素。這與式(1)~(2)的計(jì)算過程幾乎完全相同,只是將式(1)~(2)每次計(jì)算一個完整c或u元素變成分步計(jì)算,對計(jì)算速度提升影響不大。
考慮矩陣對稱性進(jìn)行對稱CU分解的CU合成陣簡化矩陣如式(12),與式(11)相比,所有下三角元素ai+1,i、api~ap,p-1、ani~an,n-1等均未進(jìn)行任何計(jì)算,仍為A陣值。式(12)的計(jì)算過程可分為二步:
(1)將第i行元素u′i,i+1、u′ip、u′in對應(yīng)賦值給第i列的ai+1,i、api、ani得消元元素ci+1,i、cpi、cni;將對角元素cii取倒;分別乘以u′i,i+1、u′ip、u′in得ui,i+1、uip、uin;對第i列ci+1,i、cpi、cni消元,僅計(jì)算消元元素所在行的對角元素和上三角元素c″i+1,i+1~u″i+1,n、c″pp~u″pn、c″nn等,此時所計(jì)算的元素遠(yuǎn)比式(11)中少。計(jì)算完成后,除c″i+1,i+1=ci+1,i+1為終值外,其余元素仍然均為未完成計(jì)算的中間值,而所有的下三角元素ap,i+1~an,i+1、anp等仍為A陣值。
(2)將第i+1行元素u″i+1,p、u″i+1,n對應(yīng)賦值給第i+1列ap,i+1、an,i+1得cp,i+1、cn,i+1;將ci+1,i+1取倒;分別乘以u″i+1,p、u″i+1,n得ui+1,p、ui+1,n。然后對第i+1列的cp,i+1、cn,i+1消元,并依此循環(huán)。
式(12)計(jì)算過程表明,如果利用c、u元素比例對稱關(guān)系uik=cki/cii分步計(jì)算c、u元素,則只須計(jì)算相應(yīng)行的對角元素ckk和上三角ukp元素,所有下三角元素cpk是逐列根據(jù)未乘以對角元倒數(shù)的上三角ukp元素對應(yīng)賦值得到。因此對稱CU分解法可省略所有下三角元素計(jì)算,可大大提高計(jì)算速度。
分別用因子表法、CU分解法、對稱CU分解法求解IEEE-30~-118系統(tǒng)極坐標(biāo)PQ分解法潮流,收斂判據(jù)為ε≤10-5。其中,形成B′陣時考慮參數(shù)r影響,忽略c、k、bT影響,形成B″陣時考慮參數(shù)c、k、bT影響,忽略r影響[8-13]。計(jì)算時間比較如表1所示。
表1 極坐標(biāo)PQ分解法潮流計(jì)算時間比較
t1、t2、t3:因子表法、CU分解法、對稱CU分解法用于極坐標(biāo)PQ分解法潮流的分解過程計(jì)算時間。
t11、t22、t33:因子表法、CU分解法、對稱CU分解法用于極坐標(biāo)PQ分解法潮流的總計(jì)算時間。
根據(jù)表1中可以看出:
(1)CU分解法與因子表法相比,前者分解過程計(jì)算時間和總潮流計(jì)算時間均慢于后者約1%和4%~7%,說明因子表法求解常系數(shù)方程更具優(yōu)勢。
(2)對稱CU分解法與因子表法相比,前者分解過程計(jì)算時間和總潮流計(jì)算時間均快于因子表法約23~50%和2%~19%,說明對稱CU分解法遠(yuǎn)優(yōu)于因子表法。
(3)對稱CU分解法與CU分解法相比,前者分解過程計(jì)算時間和總潮流計(jì)算時間均快于因子表法約24~50%和6%~25%,同樣說明對稱CU分解法遠(yuǎn)優(yōu)于因子表法。
通過針對CU三角分解法中元素對應(yīng)關(guān)系不清、對角元素運(yùn)算處理不當(dāng)、元素計(jì)算過程固化且需用計(jì)算公式、程序編寫效率低、計(jì)算速度不理想等問題,提出對稱CU三角分解法。新方法引入CU合成陣;拆分c、u元素計(jì)算過程,并用四角規(guī)則分步計(jì)算對角元素和上三角元素而無需計(jì)算公式,下三角元素直接賦值而無需計(jì)算;改變對角元素的運(yùn)算方式以免去除法運(yùn)算。新方法大大簡化了CU三角分解法的計(jì)算過程、幾乎免去了程序中的除法計(jì)算,并可大大提高程序編寫效率。將新方法、因子表法和CU三角分解法用于求取IEEE-30~-118節(jié)點(diǎn)系統(tǒng)的極坐標(biāo)PQ分解法潮流,無論是分解過程還是整個潮流計(jì)算時間,新方法的計(jì)算速度遠(yuǎn)遠(yuǎn)快于后者。新方法同樣可用于各工程領(lǐng)域常系數(shù)方程的快速求解。