裴志堅(jiān)
(常州信息職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院 江蘇常州 213164)
迭代法求解電路方程組的Matlab軟件實(shí)現(xiàn)
裴志堅(jiān)
(常州信息職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院 江蘇常州 213164)
闡述了利用迭代法求解電路方程組的方法。利用迭代法建立電路方程組系數(shù)矩陣,將數(shù)據(jù)引入Matlab程序中求解并對(duì)比兩種迭代算法的效率。實(shí)踐證明高斯迭代法具有更快的收斂速度和更高的效率,Matlab軟件效率高且具備很強(qiáng)的擴(kuò)展性,可應(yīng)用于更為復(fù)雜的電路計(jì)算。該方法為電路方程組求解教學(xué)引入了新的思路。
高斯迭代法; 電路; 方程組; Matlab
電路分析教學(xué)過程中常涉及線性方程組的求解,通常使用兩種方法:精確法和迭代法。精確法求解時(shí)采用高斯消元法,通過初等變換求出方程組的精確解,一般不采用近似計(jì)算。迭代法則通過有限次的迭代,在允許的精度范圍內(nèi),求解方程組的近似解。精度設(shè)定越高,求解值越趨于真實(shí)值[1]。
常見的迭代算法有簡單迭代法、雅克比迭代法和高斯—賽德爾迭代法。由于高斯—塞德爾迭代法使用新迭代分量得到更新的分量,在多數(shù)情形下收斂速度優(yōu)于雅克比迭代法。高斯—賽德爾迭代法相比于上述其他方法具有下列優(yōu)勢(shì):所需計(jì)算機(jī)存儲(chǔ)空間更小(只要存儲(chǔ)矩陣的非零項(xiàng)),操作步驟更少(當(dāng)?shù)?xiàng)足夠收斂),不需要記錄整個(gè)矩陣(迭代中重復(fù)賦值),節(jié)省時(shí)間(迭代步數(shù)較少),因此高斯—塞德爾迭代法應(yīng)用更為常見[2]。
對(duì)線性方程組:
Ax=b
(1)
其中A=(aij)n×n,b=(bi)1×n;det(A)≠0
選取x0作為方程初始近似解,以之迭代出一個(gè)方程組近似解收斂數(shù)組(xk),k≥0。則可將式(1)變?yōu)椋?/p>
Px=Qx+b,此時(shí)A=P-Q
根據(jù)初始近似值x0,通過如下的迭代可以產(chǎn)生迭代根數(shù)組。
Pxk+1=Qxk+b,k=0,1,……
(2)
線性方程組的解滿足
(3)
將矩陣A作標(biāo)準(zhǔn)分解可得到:A=D+L+U
則可將式(1)變?yōu)椋?/p>
x=-(D+L)-1Ux+(D+L)-1b
(4)
此時(shí),應(yīng)用雅克比迭代法可以得到:
(5)
而應(yīng)用高斯—賽德爾迭代法可得:
(6)
式中:i=1,…,m;k=1,2,…
且
(7)
由上式可見,在雅可比迭代算法中,計(jì)算xi:k+1時(shí),利用已計(jì)算出來的新的x1:k+1,x2:k+1…xi-1:k+1值,從而得到高斯—賽德爾迭代法。若迭代過程是收斂的,則總體來說xi:k+1應(yīng)比xi:k更趨近于方程組的解,因此高斯—賽德爾迭代法可以看出是雅可比迭代法的一種改進(jìn),利用高斯—賽德爾迭代法可以在一定程度上加快迭代速度。故后續(xù)分析均以高斯—賽德爾迭代法為主。
引入誤差:
式中:i=1,…,m;g=1,2,…
假定線性方程組含有m個(gè)方程和m個(gè)未知數(shù)x1,x2…,xm
(8)
假定對(duì)角矩陣系數(shù)全部不為零,如有零項(xiàng)則交換直至全部非零。那么線性方程組的解為
(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軟件完成兩種迭代算法程序設(shè)計(jì)。部分程序如下:
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 注:在上面程序行首加%標(biāo)記部分為高斯迭代,加#標(biāo)記部分為雅可比迭代,其余為共同部分,運(yùn)行程序時(shí)需要分開執(zhí)行。程序運(yùn)行結(jié)果如圖2所示。其中藍(lán)色部分為高斯—賽德爾迭代法的迭代變量,而紅色部分則為雅可比迭代發(fā)的過程變量。從程序運(yùn)行結(jié)果來看,設(shè)置容許誤差為eps=0.000 01,高斯—賽德爾迭代法經(jīng)過18次迭代即可完成,而雅可比迭代法則需要35次迭代過程。具體迭代中間值詳見附表。顯然高斯—賽德爾迭代法具有更快的迭代收斂速度和更高的迭代效率。 圖2 迭代過程值趨勢(shì)圖 當(dāng)系統(tǒng)矩陣為稀疏矩陣且對(duì)角占優(yōu)時(shí),可以看出高斯—賽德爾迭代法非常高效。因此可將其作為一種常用的電磁場及電路分析計(jì)算的數(shù)據(jù)算法,結(jié)合Matlab軟件使用,則可以極大地減少人工計(jì)算量,提高計(jì)算效率及準(zhǔn)確度[3]。 本文描述了使用迭代法求解直流電路方程組的方法,編制了Matlab程序,計(jì)算迭代過程中間值,及計(jì)算每兩次成功迭代過程的均方差。圖2展示了兩種迭代方法的收斂過程及方程組的解,通過對(duì)比發(fā)現(xiàn)高斯—賽德爾迭代算法相較于雅可比迭代法具有更快的收斂速度,迭代更為高效。鑒于程序的可移植性,在求解復(fù)雜電路衍生的線性方程組時(shí)只需要修改幾個(gè)參數(shù)即可,電路越復(fù)雜越能體現(xiàn)計(jì)算機(jī)的高效。 同時(shí)本文對(duì)于電工類電路計(jì)算相關(guān)內(nèi)容的教學(xué)提供一種新的思路,可利用計(jì)算機(jī)軟件高效、可視化的特點(diǎn)調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,具有一定的參考意義。 [1] 孫志忠,吳宏偉,袁慰平,等. 計(jì)算方法與實(shí)習(xí)(第五版)[M]. 南京:東南大學(xué)出版社,2011:37-95. [2] Stormy Attaway,魚濱,趙元哲,等.MATLAB編程與工程應(yīng)用(第二版)[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. [責(zé)任編輯:李娟] 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 裴志堅(jiān)(1983-),男,講師、工程師,主要研究方向:機(jī)電控制技術(shù) O 241.6 A 1672-2434(2017)04-0024-034 結(jié)論
常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào)2017年4期