APP下载

迭代法求解电路方程组的Matlab软件实现

2017-09-11裴志坚

常州信息职业技术学院学报 2017年4期
关键词:迭代法线性方程组德尔

裴志坚

(常州信息职业技术学院机电工程学院 江苏常州 213164)

迭代法求解电路方程组的Matlab软件实现

裴志坚

(常州信息职业技术学院机电工程学院 江苏常州 213164)

阐述了利用迭代法求解电路方程组的方法。利用迭代法建立电路方程组系数矩阵,将数据引入Matlab程序中求解并对比两种迭代算法的效率。实践证明高斯迭代法具有更快的收敛速度和更高的效率,Matlab软件效率高且具备很强的扩展性,可应用于更为复杂的电路计算。该方法为电路方程组求解教学引入了新的思路。

高斯迭代法; 电路; 方程组; Matlab

1 迭代法求解线性方程组

电路分析教学过程中常涉及线性方程组的求解,通常使用两种方法:精确法和迭代法。精确法求解时采用高斯消元法,通过初等变换求出方程组的精确解,一般不采用近似计算。迭代法则通过有限次的迭代,在允许的精度范围内,求解方程组的近似解。精度设定越高,求解值越趋于真实值[1]。

常见的迭代算法有简单迭代法、雅克比迭代法和高斯—赛德尔迭代法。由于高斯—塞德尔迭代法使用新迭代分量得到更新的分量,在多数情形下收敛速度优于雅克比迭代法。高斯—赛德尔迭代法相比于上述其他方法具有下列优势:所需计算机存储空间更小(只要存储矩阵的非零项),操作步骤更少(当迭代项足够收敛),不需要记录整个矩阵(迭代中重复赋值),节省时间(迭代步数较少),因此高斯—塞德尔迭代法应用更为常见[2]。

2 迭代算法简介

对线性方程组:

Ax=b

(1)

其中A=(aij)n×n,b=(bi)1×n;det(A)≠0

选取x0作为方程初始近似解,以之迭代出一个方程组近似解收敛数组(xk),k≥0。则可将式(1)变为:

Px=Qx+b,此时A=P-Q

根据初始近似值x0,通过如下的迭代可以产生迭代根数组。

Pxk+1=Qxk+b,k=0,1,……

(2)

线性方程组的解满足

(3)

将矩阵A作标准分解可得到:A=D+L+U

则可将式(1)变为:

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更趋近于方程组的解,因此高斯—赛德尔迭代法可以看出是雅可比迭代法的一种改进,利用高斯—赛德尔迭代法可以在一定程度上加快迭代速度。故后续分析均以高斯—赛德尔迭代法为主。

引入误差:

式中:i=1,…,m;g=1,2,…

假定线性方程组含有m个方程和m个未知数x1,x2…,xm

(8)

假定对角矩阵系数全部不为零,如有零项则交换直至全部非零。那么线性方程组的解为

(9)

3 应用案例

如图1所示电路图,已知Ue1=40 V,Ue2=20 V,R1=R2=2 Ω,R3=1 Ω,R4=8 Ω,R5=4 Ω,R6=6 Ω。根据电路的等效分析可得:

图1 直流电路

根据戴维宁定理可得:

(10)

带入数值可得:

(11)

用高斯—赛德尔算法解决方程组(11)步骤如下:

系统矩阵为:

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('迭代次数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

注:在上面程序行首加%标记部分为高斯迭代,加#标记部分为雅可比迭代,其余为共同部分,运行程序时需要分开执行。程序运行结果如图2所示。其中蓝色部分为高斯—赛德尔迭代法的迭代变量,而红色部分则为雅可比迭代发的过程变量。从程序运行结果来看,设置容许误差为eps=0.000 01,高斯—赛德尔迭代法经过18次迭代即可完成,而雅可比迭代法则需要35次迭代过程。具体迭代中间值详见附表。显然高斯—赛德尔迭代法具有更快的迭代收敛速度和更高的迭代效率。

图2 迭代过程值趋势图

当系统矩阵为稀疏矩阵且对角占优时,可以看出高斯—赛德尔迭代法非常高效。因此可将其作为一种常用的电磁场及电路分析计算的数据算法,结合Matlab软件使用,则可以极大地减少人工计算量,提高计算效率及准确度[3]。

4 结论

本文描述了使用迭代法求解直流电路方程组的方法,编制了Matlab程序,计算迭代过程中间值,及计算每两次成功迭代过程的均方差。图2展示了两种迭代方法的收敛过程及方程组的解,通过对比发现高斯—赛德尔迭代算法相较于雅可比迭代法具有更快的收敛速度,迭代更为高效。鉴于程序的可移植性,在求解复杂电路衍生的线性方程组时只需要修改几个参数即可,电路越复杂越能体现计算机的高效。

同时本文对于电工类电路计算相关内容的教学提供一种新的思路,可利用计算机软件高效、可视化的特点调动学生的学习积极性,具有一定的参考意义。

[1] 孙志忠,吴宏伟,袁慰平,等. 计算方法与实习(第五版)[M]. 南京:东南大学出版社,2011:37-95.

[2] Stormy Attaway,鱼滨,赵元哲,等.MATLAB编程与工程应用(第二版)[M].北京:电子工业出版社,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-03

猜你喜欢

迭代法线性方程组德尔
迭代法求解一类函数方程的再研究
一类整系数齐次线性方程组的整数解存在性问题
Eight O’Clock/by Sara Teasdale八点钟
求解非线性方程组的Newton迭代与Newton-Kazcmarz迭代的吸引域
H-矩阵线性方程组的一类预条件并行多分裂SOR迭代法
预条件SOR迭代法的收敛性及其应用
求解PageRank问题的多步幂法修正的内外迭代法
保护私有信息的一般线性方程组计算协议
基于Matlab实现线性方程组的迭代解法
宠物