PROGRAM BODEDIGRAM COMPLEX A(1:50),B(1:50) INTEGER T,N,PLUS REAL C,D,F,H DOUBLE PRECISION BE,EN,RR,OM,PI,E,SE(1:25),LA(1:25) DOUBLE PRECISION ST,G,SUP,SUN,VI,VB PI=DATAN(1)*4 SUP=0 SUM=0 E=0 OM=0 PLUS=1 100 FORMAT (' ') WRITE (*,*) 'ANGE SÖKNINGSGRÄNSER' WRITE (*,100) READ (*,*) BE,EN ST=(EN-BE)/20 WRITE(*,*) 'ANGE TERMER I T OCH N' WRITE (*,100) READ (*,*) T,N WRITE (*,*) 'ANGE TÄLJAREN' WRITE (*,100) DO 10 I=1,T 10 READ (*,*) A(I) WRITE(*,*) 'ANGE NÄMNAREN' WRITE (*,100) DO 20 I=1,N 20 READ(*,*) B(I) DO 110 VB=10,180,10 VI=VB*PI/180 25 DO 50 OM=BE,EN+ST,ST DO 30 I=1,T IF (REAL(A(I)).EQ.0) THEN E=E+PI/2 ELSE IF (REAL(A(I)).NE.0) THEN C=REAL(A(I)) D=AIMAG(A(I))*OM E=E+ATAN((D/C)) ENDIF 30 CONTINUE DO 40 I=1,N IF (REAL(B(I)).EQ.0) THEN E=E-PI/2 ELSE IF (REAL(B(I)).NE.0) THEN C=REAL(B(I)) D=AIMAG(B(I))*OM E=E-ATAN((D/C)) ENDIF 40 CONTINUE SE(PLUS)=E LA(PLUS)=OM E=0 C WRITE (*,*) SE(PLUS)*180/PI,LA(PLUS) PLUS=PLUS+1 50 CONTINUE DO 60 I=2,21 IF (SE(I).LT.SE(I-1).AND.SE(I).GT.-VI) THEN BE=LA(I) G=SE(I) ELSE IF (SE(I).LT.-VI.AND.SE(I-1).GT.-VI) THEN EN=LA(I) ENDIF 60 CONTINUE ST=(EN-BE)/20 PLUS=1 IF ((G+VI).LT..0000001) THEN GOTO 15 ELSE G=0 GOTO 25 ENDIF 15 DO 70 I=1,T A(I)=CMPLX(REAL(A(I)),AIMAG(A(I))*BE) 70 SUP=SUP+20*DLOG10(CABS(A(I))) DO 80 I=1,N B(I)=CMPLX(REAL(B(I)),AIMAG(B(I))*BE) 80 SUN=SUN+20*DLOG10(CABS(B(I))) WRITE (*,*) 'FASVINKELN=',G*180/PI WRITE (*,*) 'OMEGA=',BE WRITE (*,*) 'Gdb=',SUP-SUN WRITE (*,*) 'Kmax=',10**((SUN-SUP)/20) G=0 SUP=0 SUN=0 BE=0 E=0 EN=0 110 CONTINUE END