资源描述:
《§3-4电路分析程序举例.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、§3-4电路分析程序举例当我们用计算机来分析电路时,必须有一个电路分析程序,你可以利用现成的通用电路分析程序,也可以自己动手编制一个电路分析程序。为了使读者对编制电路分析程序的全过程有所了解,下面给出一个用FORTRAN语言编写的电路分析程序。它可以用来分析由直流电压源,直流电流源,电阻和四种受控源构成的线性电阻电路,得到结点电压,支路电压电流和吸收功率的计算结果。该程序由一个主程序和三个子程序组成。程序运行时,从数据文件DD.DAT中读入电路数据,调用子程序FORMT建立表格方程,再调用子程序GAUSS求解方程,最后调用子程序OUTPUT输出各电压电流和吸收功率。
2、读入电路数据建立表格方程求解电路方程输出计算结果读入电路数据(Main)建立表格方程(Formt)求解电路方程(Gauss)输出计算结果(Output)PROGRAMMAINCOMMONTYP(10),NO(10),NFO(10),NTO(10),NCO(10),VAL(10)COMMON/B1/T(29,30),NOD,NBR,M,NOPEN(3,FILE='DD.DAT',STATUS='OLD')READ(3,*)READ(3,*)NBRWRITE(*,*)'元件支路开始终止控制元件'WRITE(*,*)'类型编号结点结点支路参数'DO10I=1,NBRREA
3、D(3,2)TYP(I),NO(I),NFO(I),NTO(I),NCO(I),VAL(I)WRITE(*,4)TYP(I),NO(I),NFO(I),NTO(I),NCO(I),VAL(I)NOD=MAX0(NOD,NFO(I),NTO(I))10CONTINUE2FORMAT(A2,4I3,G10.3)4FORMAT(5X,A2,3X,3(I3,2X),I3.0,G12.4)M=NOD+2*NBRN=M+1CALLFORMTCALLGAUSSCALLOUTPUTEND读入电路数据(Main)SUBROUTINEFORMTCOMMONTYP(10),NO(10),
4、NFO(10),NTO(10),NCO(10),VAL(10)COMMON/B1/T(29,30),NOD,NBR,M,NDO10J=1,NBRNF=NFO(J)NT=NTO(J)MI=NOD+NBR+JMJ=NOD+JNI=MINJ=MICKCL:Ai=0andKVL:u=AT*vIF(NF.NE.0)THENT(NF,MI)=1.T(MJ,NF)=-1.ENDIFIF(NT.NE.0)THENT(NT,MI)=-1.T(MJ,NT)=1.ENDIFT(MJ,MJ)=1.0CVCR:Mv+Ni=u建立表格方程(Formt)IF(TYP(J).EQ.'R'.OR.T
5、YP(J).EQ.'V')THENT(MI,MJ)=1.IF(TYP(J).EQ.'R')T(NI,NJ)=-VAL(J)IF(TYP(J).EQ.'V')T(NI,N)=VAL(J)ENDIFIF(TYP(J).EQ.'G'.OR.TYP(J).EQ.'I')THENIF(TYP(J).EQ.'G')T(MI,MJ)=-VAL(J)IF(TYP(J).EQ.'I')T(MI,N)=VAL(J)T(NI,NJ)=1.ENDIFIF(TYP(J).EQ.'VV'.OR.TYP(J).EQ.'VC')THENIF(TYP(J).EQ.'VV')T(MI,MJ)=1.IF
6、(TYP(J).EQ.'VC')T(NI,NJ)=1.T(MI,NOD+NCO(J))=-VAL(J)ENDIFIF(TYP(J).EQ.'CC'.OR.TYP(J).EQ.'CV')THENIF(TYP(J).EQ.'CC')T(NI,NJ)=1.IF(TYP(J).EQ.'CV')T(MI,MJ)=1.T(NI,NOD+NBR+NCO(J))=-VAL(J)ENDIF10CONTINUEEND建立表格方程(Formt)SUBROUTINEGAUSSCOMMON/B1/T(29,30),NOD,NBR,M,NDO10K=1,ML=KDO20I=K+1,M20IF(
7、ABS(T(I,K)).GT.ABS(T(L,K)))L=IIF(ABS(T(L,K)).LT.1.E-30)STOP'电路无唯一解'IF(L.NE.K)THENDO30J=K,NT1=T(K,J)T(K,J)=T(L,J)30T(L,J)=T1ENDIFDO40I=K,MC=T(I,K)IF(C.NE.0.0)THENDO50J=K,NT(I,J)=T(I,J)/C50IF(I.GT.K)T(I,J)=T(I,J)-T(K,J)ENDIF40CONTINUE10CONTINUE求解电路方程(Gauss)DO60I=M-1,1,-1DO60J=M,I+1,-16