home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
ant
/
antdesgn
/
yagi.bas
< prev
Wrap
BASIC Source File
|
1979-12-31
|
7KB
|
287 lines
10 REM MOMENT METHOD FOR A YAGI ARRAY
20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
30 DIM DL(12),SP(12),CR(12),CI(12),V(12)
40 DIM ZR(78),ZI(78),A(5)
50 DEF FNCABS(X,Y)=SQR(X*X+Y*Y)
60 DEF FNDIVR(X1,Y1,X2,Y2)=(X1*X2+Y1*Y2)/(X2*X2+Y2*Y2)
70 DEF FNDIVI(X1,Y1,X2,Y2)=(Y1*X2-X1*Y2)/(X2*X2+Y2*Y2)
80 DEF FNINDX(I,J,N)=(I-1)*N-(I*I-I)/2+J
90 DEF FNLOG10(X)=.4343*LOG(X)
100 PI=3.141593
110 KEY OFF
120 CLS
130 COLOR 1,0
140 PRINT "THIS PROGRAM DOES A MOMENT METHOD SOLUTION FOR A"
150 PRINT "YAGI ARRAY."
160 COLOR 4,0
170 PRINT
180 INPUT "WHAT IS THE FREQUENCY(MHz)";FMC
190 INPUT "WHAT IS THE REFLECTOR LENGTH(meters)";DL(1)
200 INPUT "WHAT IS THE FED ELEMENT LENGTH(meters)";DL(2)
210 INPUT "WHAT ARE THE DIRECTOR LENGTHS(meters)";DL(3)
220 INPUT "WHAT IS THE REFLECTOR-FED ELEMENT SPACING(meters)";SP(2)
230 INPUT "WHAT IS THE DIRECTOR SPACING(meters)";DS
240 INPUT "HOW MANY DIRECTORS";ND
250 SP(3)=SP(2)+DS
260 FOR I=2 TO ND
270 DL(I+2)=DL(3)
280 SP(I+2)=SP(I+1)+DS
290 NEXT I
300 N=ND+2
310 INPUT "WHAT IS THE DIPOLE RADIUS(meters)";RAD
320 SP(1)=0
330 REM COMPUTE Z MATRIX
340 XK0=2*PI*FMC/300
350 COLOR 14,0
360 REM COMPUTE SELF IMPEDANCE EXACTLY
370 FOR I=1 TO N
380 K=FNINDX(I,I,N)
390 IF I>3 THEN GOTO 470
400 D=DL(I)/2
410 SKD=SIN(XK0*D)
420 CKD=COS(XK0*D)
430 AM=RAD
440 X0=0
450 GOSUB 2350
460 GOTO 490
470 ZMNR=ZR(FNINDX(3,3,N))
480 ZMNI=ZI(FNINDX(3,3,N))
490 ZR(K)=ZMNR
500 ZI(K)=ZMNI
510 PRINT I,I,ZMNR,ZMNI
520 NEXT I
530 REM COMPUTE MUTUAL IMPEDANCE BY THREE-THREE TERM INTEGRATION
540 FOR I=1 TO N
550 DM=DL(I)/2
560 FOR J=I+1 TO N
570 K=FNINDX(I,J,N)
580 K1=FNINDX(I-1,J-1,N)
590 DN=DL(J)/2
600 AM=SP(J)-SP(I)
610 X0=0
620 IF I>3 THEN GOTO 650
630 GOSUB 2630
640 GOTO 670
650 ZMNR=ZR(K1)
660 ZMNI=ZR(K1)
670 ZR(K)=ZMNR
680 ZI(K)=ZMNI
690 PRINT I,J,ZMNR,ZMNI
700 NEXT J
710 NEXT I
720 REM COMPUTE CURRENT
730 FOR I=1 TO N
740 V(I)=0
750 NEXT I
760 V(2)=1
770 FOR I=1 TO N
780 CR(I)=V(I)
790 CI(I)=0
800 NEXT I
810 REM SOLVE ZI=V
820 GOSUB 1250
830 ZINR=FNDIVR(1,0,CR(2),CI(2))
840 ZINI=FNDIVI(1,0,CR(2),CI(2))
850 REM PRINT CURRENT; COMPUTE POWERS
860 PRINT "MODE # CURRENT"
870 FOR I=1 TO N
880 PRINT USING " ## ##.### ##.###";I,CR(I),CI(I)
890 NEXT I
900 PT=CR(2)
910 PRINT
920 PRINT USING "INPUT IMPEDANCE=####.## #####.## ohms";ZINR,ZINI
930 REM COMPUTE GAINS
940 FR=0
950 FI=0
960 BR=0
970 BI=0
980 FOR I=1 TO N
990 SR=COS(XK0*SP(I))
1000 SI=SIN(XK0*SP(I))
1010 SKD=SIN(XK0*DL(I)/2)
1020 CKD=COS(XK0*DL(I)/2)
1030 FT=(1-CKD)/SKD
1040 FR=FR+(CR(I)*SR-CI(I)*SI)*FT
1050 FI=FI+(CR(I)*SI+CI(I)*SR)*FT
1060 BR=BR+(CR(I)*SR+CI(I)*SI)*FT
1070 BI=BI+(-CR(I)*SI+CI(I)*SR)*FT
1080 NEXT I
1090 FR=FR*60
1100 FI=FI*60
1110 BR=BR*60
1120 BI=BI*60
1130 GAIN=4*PI*(FR*FR+FI*FI)/(377*PT)
1140 FBR=(FR*FR+FI*FI)/(BR*BR+BI*BI)
1150 GDB=10*FNLOG10(GAIN)
1160 FBRDB=10*FNLOG10(FBR)
1170 PRINT USING "FORWARD GAIN= ##.# dB";GDB
1180 PRINT USING "FRONT-TO-BACK RATIO= ##.# dB";FBRDB
1190 PRINT
1200 PRINT
1210 COLOR 4,0
1220 INPUT "CONTINUE(Y,N)";IS$
1230 IF IS$="N" THEN GOTO 2840
1240 GOTO 120
1250 REM CHOLESKY LINEAR EQUATION SOLUTION
1260 PHS=0
1270 IF ZR(1)<>0 THEN PHS=ATN(ZI(1)/ZR(1))/2
1280 MAG=SQR(FNCABS(ZR(1),ZI(1)))
1290 ZR(1)=MAG*COS(PHS)
1300 ZI(1)=MAG*SIN(PHS)
1310 FOR K=2 TO N
1320 ZINR=FNDIVR(ZR(K),ZI(K),ZR(1),ZI(1))
1330 ZINI=FNDIVI(ZR(K),ZI(K),ZR(1),ZI(1))
1340 ZR(K)=ZINR
1350 ZI(K)=ZINI
1360 NEXT K
1370 FOR I=2 TO N
1380 IMO=I-1
1390 IPO=I+1
1400 ID=(I-1)*N-(I*I-I)/2
1410 II=ID+I
1420 FOR L=1 TO IMO
1430 LI=FNINDX(L,I,N)
1440 ZINR=ZR(II)-ZR(LI)*ZR(LI)+ZI(LI)*ZI(LI)
1450 ZINI=ZI(II)-2*ZR(LI)*ZI(LI)
1460 ZR(II)=ZINR
1470 ZI(II)=ZINI
1480 NEXT L
1490 PHS=0
1500 IF ZR(II)<>0 THEN PHS=ATN(ZI(II)/ZR(II))/2
1510 MAG=SQR(FNCABS(ZR(II),ZI(II)))
1520 ZR(II)=MAG*COS(PHS)
1530 ZI(II)=MAG*SIN(PHS)
1540 IF IPO>N THEN GOTO 1710
1550 FOR J=IPO TO N
1560 IJ=ID+J
1570 FOR M=1 TO IMO
1580 MD=(M-1)*N-(M*M-M)/2
1590 MI=MD+I
1600 MJ=MD+J
1610 ZINR=ZR(IJ)-ZR(MJ)*ZR(MI)+ZI(MJ)*ZI(MI)
1620 ZINI=ZI(IJ)-ZR(MJ)*ZI(MI)-ZI(MJ)*ZR(MI)
1630 ZR(IJ)=ZINR
1640 ZI(IJ)=ZINI
1650 NEXT M
1660 ZINR=FNDIVR(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
1670 ZINI=FNDIVI(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
1680 ZR(IJ)=ZINR
1690 ZI(IJ)=ZINI
1700 NEXT J
1710 NEXT I
1720 ZINR=FNDIVR(CR(1),CI(1),ZR(1),ZI(1))
1730 ZINI=FNDIVI(CR(1),CI(1),ZR(1),ZI(1))
1740 CR(1)=ZINR
1750 CI(1)=ZINI
1760 FOR I=2 TO N
1770 IMO=I-1
1780 FOR L=1 TO IMO
1790 LI=FNINDX(L,I,N)
1800 ZINR=CR(I)-ZR(LI)*CR(L)+ZI(LI)*CI(L)
1810 ZINI=CI(I)-ZR(LI)*CI(L)-ZI(LI)*CR(L)
1820 CR(I)=ZINR
1830 CI(I)=ZINI
1840 NEXT L
1850 II=FNINDX(I,I,N)
1860 ZINR=FNDIVR(CR(I),CI(I),ZR(II),ZI(II))
1870 ZINI=FNDIVI(CR(I),CI(I),ZR(II),ZI(II))
1880 CR(I)=ZINR
1890 CI(I)=ZINI
1900 NEXT I
1910 NN=((N+1)*N)/2
1920 ZINR=FNDIVR(CR(N),CI(N),ZR(NN),ZI(NN))
1930 ZINI=FNDIVI(CR(N),CI(N),ZR(NN),ZI(NN))
1940 CR(N)=ZINR
1950 CI(N)=ZINI
1960 NMO=N-1
1970 FOR I=1 TO NMO
1980 K=N-I
1990 KPO=K+1
2000 KD=(K-1)*N-(K*K-K)/2
2010 FOR L=KPO TO N
2020 KL=KD+L
2030 ZINR=CR(K)-ZR(KL)*CR(L)+ZI(KL)*CI(L)
2040 ZINI=CI(K)-ZR(KL)*CI(L)-ZI(KL)*CR(L)
2050 CR(K)=ZINR
2060 CI(K)=ZINI
2070 NEXT L
2080 KK=KD+K
2090 ZINR=FNDIVR(CR(K),CI(K),ZR(KK),ZI(KK))
2100 ZINI=FNDIVI(CR(K),CI(K),ZR(KK),ZI(KK))
2110 CR(K)=ZINR
2120 CI(K)=ZINI
2130 NEXT I
2140 RETURN
2150 REM SUBROUTINE TO COMPUTE THE SINE AND COSINE INTEGRALS
2160 X2=X*X
2170 X4=X2*X2
2180 IF X>=1 THEN GOTO 2260
2190 X6=X2*X4
2200 X3=X*X2
2210 X5=X3*X2
2220 X7=X5*X2
2230 SI=X-X3/18+X5/600-X7/35280!
2240 CI=.57722+LOG(X)-X2/4+X4/96-X6/4320
2250 RETURN
2260 SX=SIN(X)
2270 CX=COS(X)
2280 FX=(X4+7.24116*X2+2.46394)/X
2290 FX=FX/(X4+9.068579*X2+7.15743)
2300 GX=(X4+7.54748*X2+1.56407)/X2
2310 GX=GX/(X4+12.72368*X2+15.72361)
2320 SI=1.57079-FX*CX-GX*SX
2330 CI=FX*SX-GX*CX
2340 RETURN
2350 REM COMPUTE ZMN TERMS
2360 A(1)=1
2370 A(5)=1
2380 A(2)=-4*CKD
2390 A(4)=A(2)
2400 A(3)=2+4*CKD*CKD
2410 ZMNR=0
2420 ZMNI=0
2430 FOR MM=-2 TO 2
2440 FOR NN=-1 TO 1 STEP 2
2450 TT=X0+MM*D
2460 BET=AM
2470 IF ABSYYAM THEN GOTO 2500
2480 BET=SQR(AM*AM+TT*TT)-NN*TT
2490 IF BET<AM/10 THEN BET=AM*AM/(2*ABS(TT))-AM^4/(8*ABS(TT)^3)
2500 X=BET*XK0
2510 ALP=XK0*NN*TT
2520 CALP=COS(ALP)
2530 SALP=SIN(ALP)
2540 GOSUB 2150
2550 ZMNR=ZMNR+A(MM+3)*(CALP*CI-SALP*SI)
2560 ZMNI=ZMNI-A(MM+3)*(SALP*CI+CALP*SI)
2570 NEXT NN
2580 NEXT MM
2590 SKDS=SKD*SKD
2600 ZMNR=ZMNR*15/SKDS
2610 ZMNI=ZMNI*15/SKDS
2620 RETURN
2630 REM COMPUTE MUTUAL ZMN BY THREE-TERM INTEGRATION
2640 SKM=SIN(XK0*DM)
2650 SKN=SIN(XK0*DN)
2660 CKN=COS(XK0*DN)
2670 A2=AM*AM
2680 RM1=SQR(A2+(DN-DM/2)^2)
2690 R1=SQR(A2+(DN+DM/2)^2)
2700 R0=SQR(A2+(DM/2)^2)
2710 FR=COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0+COS(XK0*R1)/R1
2720 FI=-SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0-SIN(XK0*R1)/R1
2730 SR=4*SIN(XK0*DM/2)*FR
2740 SI=4*SIN(XK0*DM/2)*FI
2750 RM1=SQR(A2+DN*DN)
2760 R0=SQR(A2)
2770 FR=2*COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0
2780 FI=-2*SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0
2790 SR=SR+SKM*FR
2800 SI=SI+SKM*FI
2810 ZMNR=-10*DM*SI/(SKN*SKM)
2820 ZMNI=10*DM*SR/(SKN*SKM)
2830 RETURN
2840 COLOR 7,0
2850 KEY ON
2860 END