Разработка алгоритма и программы расчёта электрической цепи, страница 8

*'    IdC1   |','      Udad   |',/,1x,'|----|','----------|',

*4('-----------|'),'-------------|')

rr=(q1-q2)/50

l=1

r4=q2

if (r4.le.q1) go to 9

15  l=l+1

R4=r4+rr

if (pri.eq.1.and.l.eq.14) f2=200

Udad(l)=uadd

UdC1(l)=UC1d

UdL3(l)=UL3d

Idl3(l)=i1d

idC1(l)=i1d

k=r4-rr

write(2,16)k,f2,Udl3(l),Udc1(l),idl3(l),idc1(l),udad(l)

16  format(1x,'|',i4,'|',f10.3'|',2(f10.5,' |'),2('',f10.7,' |'),

*f10.4,'   |')

if (r4.le.q1) go to 9

l=l-1

write(2,17)

17  format(1x,'\----|','----------|',4('-----------|'),

*'-------------/')

write(2,*)

If (pri.eq.1) go to 100

go to 101

100   write(2,34)

34    format(20x,'График изменения напряжений на зажимах схемы,

*',/,15x,'конденсаторе С1 и катушке L3 при изменении параметра Q',

*/,25x,'и скачкообразном изменении частоты')

write(2,*)

write(2,5)     

write(2,52)

write(2,5)

call grafik(udad,udad,udc1,udc1,udl3,udl3,l)

write(2,*)

write(2,105)

101   if (pri.ne.1) go to 102

go to 103

102   write(2,33)

33    format(20x,'График изменения напряжений на зажимах схемы,

*',/,15x,'конденсаторе С1 и катушке L3 при изменении параметра Q')

write(2,*)

write(2,5)      

write(2,52)

write(2,5)

call grafik(udad,udad,udc1,udc1,udl3,udl3,l)

write(2,*)

write(2,104)

103    continue

52     format(20x,'Udad=@   Udc1=*  Udl3=%')

write(2,*)

write(2,5)     

write(2,106)

106   format(20x,'idc1=!   idl3=%')

write(2,5)

104  format(21x,'График изменения токов на зажимах схемы,

*',/,15x,'конденсаторе С1 и катушке L3 при изменении параметра Q')

105  format(21x,'График изменения токов на зажимах схемы,

*',/,15x,'конденсаторе С1 и катушке L3 при изменении параметра Q',

*/,25x,'и скачкообразном изменении частоты') 

call grafik(idc1,idc1,idc1,idl3,idl3,idl3,l)

pri=pri+1

if (pri.eq.1) go to 27

close(2)

stop

end

c     Вычесление определенного интеграла методом Симпсона

subroutine pr(mas,t,n,o)

real mas(60)

H=T/N

S1=0.

S2=0.

DO 61 I=2,N-1,2

S1=S1+mas(I)**2

61  CONTINUE

DO 62 I=3,N-1,2

S2=S2+mas(I)**2

62  CONTINUE

o=(mas(1)**2+4.*S1+2.*S2+mas(N)**2)*H/3.

o=SQRT(o/T)

return

end

c     Вычисление максимального и минимального значения фунцкции

subroutine p(a,b,v,g,d,e,pmin,pmax)

dimension a(50),b(50),v(50),g(50),d(50),e(50)

pmax=v(1)

pmin=v(1)

do 2 i=1,50

if (a(i).lt.pmin) pmin=a(i)

if (b(i).lt.pmin) pmin=b(i)

if (v(i).lt.pmin) pmin=v(i)

if (g(i).lt.pmin) pmin=g(i)

if (d(i).lt.pmin) pmin=d(i) 

if (e(i).lt.pmin) pmin=e(i)

if (b(i).gt.pmax) pmax=b(i)

if (a(i).gt.pmax) pmax=a(i)

if (v(i).gt.pmax) pmax=v(i)

if (g(i).gt.pmax) pmax=g(i)

if (d(i).gt.pmax) pmax=d(i) 

2  if (e(i).gt.pmax) pmax=e(i)

return

end

c     Подпрограмма вывода графиков

subroutine grafik(v,w,x,y,z,r,n)

dimension lv(100),v(50),w(50),x(50),y(50),z(50),r(50)

xmax=0

xmin=0

call p(v,w,x,y,z,r,xmin,xmax)

do 3 i=1,n

k1=(v(i)-xmin)*75/(xmax-xmin)+1

k2=(w(i)-xmin)*75/(xmax-xmin)+1

k3=(x(i)-xmin)*75/(xmax-xmin)+1

k4=(y(i)-xmin)*75/(xmax-xmin)+1

k5=(z(i)-xmin)*75/(xmax-xmin)+1

k6=(r(i)-xmin)*75/(xmax-xmin)+1

do 4 j=1,75

4  lv(j)=' '

lv(40)='|'

lv(k1)='$'

lv(K2)='@'

lv(k3)='!'

lv(k4)='*'

lv(k5)='&'

lv(k6)='%'

3  write(2,7)(lv(k),k=1,75)

7  format(1x,127a1)

return

end

subroutine faza(a,b,ff,pi)

if (a.gt.0.and.b.ge.0) then

ff=atan(b/a)

else if(a.lt.0.and.b.gt.0) then

ff=atan(-a/b)+pi/2.

else if(a.lt.0.and.b.le.0) then

ff=(atan(b/a)+pi/2.)*(-1)

else if(a.gt.0.and.b.lt.0) then

ff=atan(b/a)

end if

return

end

ПРИЛОЖЕНИЕ Б

Блок-схема головной программы