home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Explore the World of Soft…e: Engineering & Science
/
Explore_the_World_of_Software_Engineering_and_Science_HRS_Software_1998.iso
/
programs
/
electrnc
/
mcgarret.exe
/
SHK-15.BAS
< prev
next >
Wrap
BASIC Source File
|
1986-08-11
|
5KB
|
188 lines
10 DATA 1,140,180
20 DATA 50,50,0
30 DATA 3,0,0
40 DATA 1,10
50 READ A1,F1,F2,R1,R2,D,A2,N,L,F9
60 DEF FNC(R)=1/W/SQR(R*(Q*W*L-R))
70 DEF FND(R)=SQR(Q*W*L/R-1)/Q/W/W/L
80 DEF FNY(X)=.5*ATN(SQR(X-1))
90 DEF FNX(Y)=LOG(TAN(P/8+Y))
110 DEF FNZ(X)=2*ATN(EXP(X))-P/4
120 LET P=8*ATN(1)
125 DEF FNF(B)=F*SQR((B/2)^2+1)-B*F/2
130 LET G=10/LOG(10)
140 LET F=SQR(F1*F2)
145 LET B=(F2-F1)/F
147 LET B9=ABS(F9/F-F/F9)
150 LET V=2
155 IF D=3 THEN 190
160 LET V=EXP(D/G)
190 IF N>0 THEN 650
210 READ D9
215 LET V9=EXP(D9/G)
220 IF D=0 THEN 530
230 IF A2>0 THEN 380
250 LET Y3=FNY((V9-1)/(V-1))
270 LET X4=B9/B
280 LET Y4=FNY(X4*X4)
290 LET N=FNX(Y3)/FNX(Y4)
310 IF N<=9 THEN 350
330 LET N=9
340 PRINT"MORE THEN 9 POLES REQ'D FOR DESIRED ATTN"
350 IF INT(N)-N=0 THEN 750
360 LET N=INT(N+1)
370 GOTO 750
380 LET B3=B
390 FOR N=2 TO 9
395 GOSUB 410
400 GOTO 470
410 LET Y=FNY(1/(V-1))
420 LET X=FNX(Y)/N
430 LET B=B3*COS(FNZ(X))
435 IF A2=0 THEN 855
440 LET Y=FNY((B9/B)^2)
450 LET X=FNX(Y)*N
460 LET V9=1+(V-1)/(COS(FNZ(X)))^2
463 LET A9=G*LOG(V9)
467 RETURN
470 IF A9>D9 THEN 765
480 NEXT N
510 PRINT"MORE THEN 9 POLES REQD FOR DESIRED ATTN"
520 GOTO 765
530 LET X=B9/B
560 LET N=.5*LOG(V9-1)/LOG(X)
570 IF N>9 THEN 590
580 GOTO 620
590 LET N=9
610 PRINT"MORE THEN 9 POLES REQD FOR DESIRED ATTN"
620 IF INT(N)-N=0 THEN 650
630 LET N=INT(N+1)
650 IF D>0 THEN 710
660 LET A3=0
670 LET S=1
675 LET B3=B
680 LET A9=G*LOG(1+(B9/B)^(2*N))
690 GOTO 810
710 IF A2=0 THEN 750
720 LET B3=B
730 GOSUB 410
740 GOTO 765
750 GOSUB 440
765 LET A3=1
770 LET Y=FNY(V/(V-1))
780 LET X=FNX(Y)/N
790 LET S=TAN(FNZ(X))
810 LET P1=P/4/N
820 LET Q=2*SIN(P1)/B/S
830 IF R2>0 THEN 850
840 LET Q=Q/2
850 IF A2>0 THEN 859
851 LET B2=B
852 LET B3=1/B
853 GOSUB 410
855 LET B3=1/B
857 LET B=B2
859 PRINT "Q1=";Q;",Q1*BW3/F0=";Q*B3
860 FOR R=1 TO N-1
870 IF R2=0 THEN 910
880 LET A=B*B*(S*S+A3*(SIN(2*R*P1))^2)/SIN((2*R-1)*P1)/SIN((2*R+1)*P1)/4
890 GOTO 920
910 LET A=B*B*((COS(R*P1))^2)*(S*S+A3*(SIN(R*P1))^2)
915 LET A=A/SIN((2*R-1)*P1)/SIN((2*R+1)*P1)
920 LET K(R,R+1)=SQR(A)
930 PRINT "R=";R,"K(R,R+1)=";K(R,R+1),"K(R,R+1)*F0/BW3=";K(R,R+1)/B3
940 NEXT R
945 PRINT"BW3/FO=",B3*100"PERCENT. 25PCNT IS ABOUT THE LIMIT FOR ANY"
946 PRINT"KIND OF REASONABLE APPROX TO DESIRED RESPONSE"
950 LET W=P*F
960 IF R2=0 THEN 990
970 LET A4=R2
980 GOTO 1010
990 LET A4=R1
1010 LET A5=((1-K(1,2))*Q)^2+1
1020 IF A5>=R2/R1 THEN 1060
1040 PRINT"R2 TOO LARGE.USE HIGHER RIPPLE OR R2<",A5*R1
1050 GOTO 9999
1060 LET L2=A4/W/Q
1070 LET L3=A5*R1/W/Q
1080 PRINT"ALLOWABLE MIN MAXVALUES OF L ARE",L2;L3
1085 IF L<L2 THEN 1110
1090 IF L>L3 THEN 1110
1100 GOTO 1130
1110 LET L=(L2+L3)/2
1120 PRINT "THE PROGRAM CHOSE L=",L
1130 LET C=1/L/W/W
1140 FOR R=1 TO N-1
1150 LET C(R,R+1)=C*K(R,R+1)
1160 NEXT R
1170 FOR R=2 TO N-1
1180 LET T(R)=C-C(R-1,R)-C(R,R+1)
1185 IF T(R)<0 THEN 1545
1190 NEXT R
1210 LET C1=FNC(R1)
1220 LET T(1)=C-C(1,2)-FND(R1)
1225 IF T(1)<0 THEN 1555
1230 LET T(N)=C-C(N-1,N)
1235 IF T(N)<0 THEN 1575
1240 IF R2=0 THEN 1270
1250 LET C2=FNC(R2)
1260 LET T(N)=T(N)-FND(R2)
1265 IF T(N)<0 THEN 1565
1270 IF A1<>2 THEN 1320
1290 LET A6=1000
1310 GOTO 1330
1320 LET A6=1000000!
1330 PRINT
1335 PRINT
1340 IF D>0 THEN 1355
1345 PRINT N"POLE BUTTER FILT;F1,F2=3 DB FREQS"
1350 GOTO 1360
1355 PRINT N"POLE CHEBYFILT;DB RIPPLE=",D
1360 IF A1=1 THEN 1390
1365 IF A1=2 THEN 1380
1370 PRINT "UNITS-CPS,HY,MFD;F1,F2,F0=",F1;F2;F
1375 GOTO 1395
1380 PRINT"UNITS-KC,MHY,MFD; F1,F2,F0="F1;F2;F
1385 GOTO 1395
1390 PRINT"UNITS-MC,UHY,PF; F1,F2,F0="F1;F2;F
1395 IF D=0 THEN 1450
1400 IF A2=3 THEN 1420
1405 LET Z=FNF(B3)
1410 PRINT"F1,F2= VALLEY FREQS; 3 DB FREQS="Z;Z+B3*F
1415 GOTO 1450
1420 LET Z=FNF(B)
1425 PRINT"F1,F2=3 DB FREQS; VALLEY FREQS="Z;Z+B*F
1450 PRINT A9"=DB AT F9 + F0^2/F9="F9;F*F/F9
1452 PRINT
1453 PRINT
1455 PRINT"**R1**",R1
1460 PRINT"* *"
1465 PRINT"* C",A6*C1
1470 PRINT"* *"
1475 FOR R=1 TO N
1480 PRINT"***L**",L
1485 PRINT"***C**",A6*T(R)
1490 PRINT"* *"
1495 IF R=N THEN 1505
1500 PRINT"* C",A6*C(R,R+1)
1502 PRINT"* *"
1505 NEXT R
1510 IF R2=0 THEN 1535
1515 PRINT"* C",A6*C2
1520 PRINT"* *"
1525 PRINT"**R2**",R2
1530 GOTO 9999
1535 PRINT"**R2**","1/0"
1540 GOTO 9999
1545 LET B4=(F2-F1)/F/(K(R-1,R)+K(R,R+1))
1550 GOTO 1580
1555 LET B4=(F2-F1)/F*(1-FND(R1)/C)/K(1,2)
1560 GOTO 1580
1565 LET B4=(F2-F1)/F*(1-FND(R2)/C)/K(N-1,N)
1570 GOTO 1580
1575 LET B4=(F2-F1)/F/K(N-1,N)
1580 LET Z=FNF(B4)
1585 PRINT"FOR POS SHUNT C, BW IS LESS THAN F1,F2="Z;Z+B4*F
1590 PRINT"WHICH IS STILL TOO LARGE (RESPONSE WIILL APPROX LP FILT"
9999 END