劉雄峰,姚思遠
(三峽大學電氣與新能源學院,湖北宜昌,443002)
在電路課程中經常涉及到線性方程組的求解,具體的方法有精確法和迭代法,精確法求解不需要采取近似舍入,而是采用初等變換方法求出方程組的解;迭代法則是通過有限次的迭代,在允許的精度范圍內求解方程組的近似解,精度要求設定越高,求解值越趨近與真實值。
MATLAB是美國mathworks公司出品的商業數學軟件,用于算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分;MATLAB具有高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來。
迭代法也稱為轉輾法,是一種不斷用變量舊值遞推新值的過程,迭代算法是用計算機解決數學問題的一種基本方法,它利用計算機運算速度快、適合做重復性操作的特點,讓計算機對一組指令(或一定步驟)進行重復執行,在每次執行這組指令或步驟時,都將從變量的原值推出它的一個新值[1]。
設有線性方程組Ax=b,其中

選取x0作為方程的初始近似解,以之迭代出一個方程組近似解收斂數組(xk),k≥0。[2]即可將式(1)變為:

根據初始近似解x0,通過如下的迭代過程可以產生迭代根數組。
Pxk+1=Qxk+b,k=0,1,...,當‖P-Q‖<0時數組收斂。
線性方程組的解滿足:

將矩陣A作標準分解可得到:A=D+L+U
其中,D=diag(a11,a22,...,amm)

此時可將式(1)變為:

此時,應用雅克比迭代法可以得到:

當應用高斯-賽德爾迭代法可得:

式中 :i=1,...,m;k=1,2,...

計算xi與k-1次迭代值的加權平均ω作為第k次的迭代值,即:

上式也可整理成:

其中ω稱為松弛因子,要求0<ω<2。當ω>1時,上式稱為逐次超松弛迭代法;當ω=1時,上式即為高斯-賽德爾迭代法;當0<ω<1時,上式稱為低松弛迭代法[2]。
如圖1所示的電路圖中,已知Ue1=8 V,Ue2=4 V,Ue3=2 V,R1=R2=R4=1 Ω,R3=3 Ω,R5=2 Ω,R6=7Ω,利用迭代法求解Il1Il2Il3。

圖1 電路圖
本文將針對該應用案例使用MATLAB軟件實現雅克比迭代法、高斯-賽德爾迭代法和逐次超松弛迭代法在求解線性電路方程中的應用[3],并對運行結果進行分析。(計算精度控制在10-5)
根據電路等效分析可得:

根據戴維南定理可得:

代入數值:

上述方程組對應于(1)式中的A、b矩陣:

Step1:編寫雅克比迭代法的程序

Step2:編寫驗證程序

Step3:運行驗證程序jacobi.m,得到在10-5精度范圍內的Il1Il2Il3值和計算機迭代次數如表1所示。

表 1
Step1:編寫高斯-賽德爾迭代法的程序[4]


Step2:編寫驗證程序

Step3:運行驗證程序gauss.m,得到在10-5精度范圍內的Il1Il2Il3值和計算機迭代次數如表2所示。

表2
Step1:編寫逐次超松弛迭代法的程序

Step2:編寫驗證程序

Step3:運行驗證程序sor.m,得到在10-5精度范圍內的Il1Il2Il3值和計算機迭代次數如表3所示。

表3
說明:這里的最佳松弛因子w為1.15,可以通過w取不同值進行驗證。
由表1-表3可以看出三種迭代法解線性方程組的收斂速度,三種迭代法達到要求的精度(例題要求精度:10-5)所需的迭代次數如下表所示:

表4
分析表4可以得到逐次超松弛迭代法的收斂速度最快,高斯-賽德爾迭代法次之,雅克比迭代法最慢,通過上面的應用案例可以知道,高斯-賽德爾迭代法可看作是雅克比迭代法的一種改進,逐次超松弛迭代法是高斯-賽德爾迭代法的一種修正。鑒于程序的可移植性,在求解更為復雜的電路時只需要修改程序里的數據參數即可,電路越復雜越能體現計算機的高效。
本文使用了MATLAB軟件使電路分析的計算過程得到了極大的簡化,同時也為廣大學生提供了一種新的解題思路,通過計算機高效的特點,激發學生利用編程軟件學習專業知識的興趣,具有一定的參考價值。