裴志堅
(常州信息職業(yè)技術學院機電工程學院 江蘇常州 213164)
迭代法求解電路方程組的Matlab軟件實現(xiàn)
裴志堅
(常州信息職業(yè)技術學院機電工程學院 江蘇常州 213164)
闡述了利用迭代法求解電路方程組的方法。利用迭代法建立電路方程組系數(shù)矩陣,將數(shù)據(jù)引入Matlab程序中求解并對比兩種迭代算法的效率。實踐證明高斯迭代法具有更快的收斂速度和更高的效率,Matlab軟件效率高且具備很強的擴展性,可應用于更為復雜的電路計算。該方法為電路方程組求解教學引入了新的思路。
高斯迭代法; 電路; 方程組; Matlab
電路分析教學過程中常涉及線性方程組的求解,通常使用兩種方法:精確法和迭代法。精確法求解時采用高斯消元法,通過初等變換求出方程組的精確解,一般不采用近似計算。迭代法則通過有限次的迭代,在允許的精度范圍內(nèi),求解方程組的近似解。精度設定越高,求解值越趨于真實值[1]。
常見的迭代算法有簡單迭代法、雅克比迭代法和高斯—賽德爾迭代法。由于高斯—塞德爾迭代法使用新迭代分量得到更新的分量,在多數(shù)情形下收斂速度優(yōu)于雅克比迭代法。高斯—賽德爾迭代法相比于上述其他方法具有下列優(yōu)勢:所需計算機存儲空間更小(只要存儲矩陣的非零項),操作步驟更少(當?shù)椬銐蚴諗?,不需要記錄整個矩陣(迭代中重復賦值),節(jié)省時間(迭代步數(shù)較少),因此高斯—塞德爾迭代法應用更為常見[2]。
對線性方程組:
Ax=b
(1)
其中A=(aij)n×n,b=(bi)1×n;det(A)≠0
選取x0作為方程初始近似解,以之迭代出一個方程組近似解收斂數(shù)組(xk),k≥0。則可將式(1)變?yōu)椋?/p>
Px=Qx+b,此時A=P-Q
根據(jù)初始近似值x0,通過如下的迭代可以產(chǎn)生迭代根數(shù)組。
Pxk+1=Qxk+b,k=0,1,……
(2)
線性方程組的解滿足
(3)
將矩陣A作標準分解可得到:A=D+L+U
則可將式(1)變?yōu)椋?/p>
x=-(D+L)-1Ux+(D+L)-1b
(4)
此時,應用雅克比迭代法可以得到:
(5)
而應用高斯—賽德爾迭代法可得:
(6)
式中:i=1,…,m;k=1,2,…
且
(7)
由上式可見,在雅可比迭代算法中,計算xi:k+1時,利用已計算出來的新的x1:k+1,x2:k+1…xi-1:k+1值,從而得到高斯—賽德爾迭代法。若迭代過程是收斂的,則總體來說xi:k+1應比xi:k更趨近于方程組的解,因此高斯—賽德爾迭代法可以看出是雅可比迭代法的一種改進,利用高斯—賽德爾迭代法可以在一定程度上加快迭代速度。故后續(xù)分析均以高斯—賽德爾迭代法為主。
引入誤差:
式中:i=1,…,m;g=1,2,…
假定線性方程組含有m個方程和m個未知數(shù)x1,x2…,xm
(8)
假定對角矩陣系數(shù)全部不為零,如有零項則交換直至全部非零。那么線性方程組的解為
(9)
如圖1所示電路圖,已知Ue1=40 V,Ue2=20 V,R1=R2=2 Ω,R3=1 Ω,R4=8 Ω,R5=4 Ω,R6=6 Ω。根據(jù)電路的等效分析可得:
圖1 直流電路
根據(jù)戴維寧定理可得:
(10)
帶入數(shù)值可得:
(11)
用高斯—賽德爾算法解決方程組(11)步驟如下:
系統(tǒng)矩陣為:
a(1,1)=11 a(1,2)=-1 a(1,3)=-8
a(2,1)=-1 a(2,2)=7 a(2,3)=-4
a(3,1)=-8 a(3,2)=-4 a(3,3)=18
引入相鄰迭代過程值誤差的均方差er,及第n次迭代與方程組解的均方差ersol,具體算法如下:
通過Matlab軟件完成兩種迭代算法程序設計。部分程序如下:
A=[11,-1,-8;-1,7,-4;-8,-4,18];
b=[40;-20;0];
if(any(diag(A))==0)
error('error,pause')
end
eps=input('誤差限eps=');
N=input('迭代次數(shù)N=');
D=diag(diag(A));
B=inv(D)*(D-A);
f=inv(D)*b;
K=0;
x0=zeros(size(b));
%x0=zeros(size(b));
%x00=x0;
%while 1
% x11=B*x0+f;
% x00(1,1)=x11(1,1);
% x12=B*x00+f;
% x00(2,1)=x12(2,1);
% x13=B*x00+f;
% x00(3,1)=x13(3,1);
% x1=x00
#while 1
# x1=B*x0+f;
# K=K+1;
fprintf('第%d次迭代的近似解為',K)
disp(x1');
if norm(x1-x0,inf) fprintf('滿足精度要求的解為
') disp(x1'); break end if K>N fprintf('迭代超限') end x0=x1; end 注:在上面程序行首加%標記部分為高斯迭代,加#標記部分為雅可比迭代,其余為共同部分,運行程序時需要分開執(zhí)行。程序運行結果如圖2所示。其中藍色部分為高斯—賽德爾迭代法的迭代變量,而紅色部分則為雅可比迭代發(fā)的過程變量。從程序運行結果來看,設置容許誤差為eps=0.000 01,高斯—賽德爾迭代法經(jīng)過18次迭代即可完成,而雅可比迭代法則需要35次迭代過程。具體迭代中間值詳見附表。顯然高斯—賽德爾迭代法具有更快的迭代收斂速度和更高的迭代效率。 圖2 迭代過程值趨勢圖 當系統(tǒng)矩陣為稀疏矩陣且對角占優(yōu)時,可以看出高斯—賽德爾迭代法非常高效。因此可將其作為一種常用的電磁場及電路分析計算的數(shù)據(jù)算法,結合Matlab軟件使用,則可以極大地減少人工計算量,提高計算效率及準確度[3]。 本文描述了使用迭代法求解直流電路方程組的方法,編制了Matlab程序,計算迭代過程中間值,及計算每兩次成功迭代過程的均方差。圖2展示了兩種迭代方法的收斂過程及方程組的解,通過對比發(fā)現(xiàn)高斯—賽德爾迭代算法相較于雅可比迭代法具有更快的收斂速度,迭代更為高效。鑒于程序的可移植性,在求解復雜電路衍生的線性方程組時只需要修改幾個參數(shù)即可,電路越復雜越能體現(xiàn)計算機的高效。 同時本文對于電工類電路計算相關內(nèi)容的教學提供一種新的思路,可利用計算機軟件高效、可視化的特點調(diào)動學生的學習積極性,具有一定的參考意義。 [1] 孫志忠,吳宏偉,袁慰平,等. 計算方法與實習(第五版)[M]. 南京:東南大學出版社,2011:37-95. [2] Stormy Attaway,魚濱,趙元哲,等.MATLAB編程與工程應用(第二版)[M].北京:電子工業(yè)出版社,2013:17-51. [3] Novac Mihaela,Grava Adriana. Numerical Solution of Electrical Circuits Using Gauss Seidel Method with MATLAB Software[J]. Journal of Electrical and Electronics Engineering, 2011(2):73-76. [責任編輯:李娟] Matlab Software Implementation of Electrical Circuit Equations Based on Iteration Method PEI Zhijian (Department of Mechanical and Electrical Engineering, Changzhou College of Information Technology,Changzhou 213164, China) This paper expounds using iterative method to solve the electrical circuit equations,which is to establish equation coefficient matrix by iterative algorithm, use matlab program to calculate the solutions, and compare the efficiency of two iterative algorithms. It is proved that the gaussian iteration has faster convergence speed and higher efficiency. Matlab software has very strong portability, high efficiency and can be used with more complex electrical circuit calculation. It introduces new thought on the teaching methods of solving the electrical circuit equations. gaussian iteration; electric circuit; equations; Matlab 2017-05-27 裴志堅(1983-),男,講師、工程師,主要研究方向:機電控制技術 O 241.6 A 1672-2434(2017)04-0024-034 結論