home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / ant / antdesgn / yagi.bas < prev   
BASIC Source File  |  1979-12-31  |  7KB  |  287 lines

  1. 10 REM MOMENT METHOD FOR A YAGI ARRAY
  2. 20 REM "ANTENNA DESIGN USING PERSONAL COMPUTERS"
  3. 30 DIM DL(12),SP(12),CR(12),CI(12),V(12)
  4. 40 DIM ZR(78),ZI(78),A(5)
  5. 50 DEF FNCABS(X,Y)=SQR(X*X+Y*Y)
  6. 60 DEF FNDIVR(X1,Y1,X2,Y2)=(X1*X2+Y1*Y2)/(X2*X2+Y2*Y2)
  7. 70 DEF FNDIVI(X1,Y1,X2,Y2)=(Y1*X2-X1*Y2)/(X2*X2+Y2*Y2)
  8. 80 DEF FNINDX(I,J,N)=(I-1)*N-(I*I-I)/2+J
  9. 90 DEF FNLOG10(X)=.4343*LOG(X)
  10. 100 PI=3.141593
  11. 110 KEY OFF
  12. 120 CLS
  13. 130 COLOR 1,0
  14. 140 PRINT "THIS PROGRAM DOES A MOMENT METHOD SOLUTION FOR A"
  15. 150 PRINT "YAGI ARRAY."
  16. 160 COLOR 4,0
  17. 170 PRINT
  18. 180 INPUT "WHAT IS THE FREQUENCY(MHz)";FMC
  19. 190 INPUT "WHAT IS THE REFLECTOR LENGTH(meters)";DL(1)
  20. 200 INPUT "WHAT IS THE FED ELEMENT LENGTH(meters)";DL(2)
  21. 210 INPUT "WHAT ARE THE DIRECTOR LENGTHS(meters)";DL(3)
  22. 220 INPUT "WHAT IS THE REFLECTOR-FED ELEMENT SPACING(meters)";SP(2)
  23. 230 INPUT "WHAT IS THE DIRECTOR SPACING(meters)";DS
  24. 240 INPUT "HOW MANY DIRECTORS";ND
  25. 250 SP(3)=SP(2)+DS
  26. 260 FOR I=2 TO ND
  27. 270 DL(I+2)=DL(3)
  28. 280 SP(I+2)=SP(I+1)+DS
  29. 290 NEXT I
  30. 300 N=ND+2
  31. 310 INPUT "WHAT IS THE DIPOLE RADIUS(meters)";RAD
  32. 320 SP(1)=0
  33. 330 REM COMPUTE Z MATRIX
  34. 340 XK0=2*PI*FMC/300
  35. 350 COLOR 14,0
  36. 360 REM COMPUTE SELF IMPEDANCE EXACTLY
  37. 370 FOR I=1 TO N
  38. 380 K=FNINDX(I,I,N)
  39. 390 IF I>3 THEN GOTO 470
  40. 400 D=DL(I)/2
  41. 410 SKD=SIN(XK0*D)
  42. 420 CKD=COS(XK0*D)
  43. 430 AM=RAD
  44. 440 X0=0
  45. 450 GOSUB 2350
  46. 460 GOTO 490
  47. 470 ZMNR=ZR(FNINDX(3,3,N))
  48. 480 ZMNI=ZI(FNINDX(3,3,N))
  49. 490 ZR(K)=ZMNR
  50. 500 ZI(K)=ZMNI
  51. 510 PRINT I,I,ZMNR,ZMNI
  52. 520 NEXT I
  53. 530 REM COMPUTE MUTUAL IMPEDANCE BY THREE-THREE TERM INTEGRATION
  54. 540 FOR I=1 TO N
  55. 550 DM=DL(I)/2
  56. 560 FOR J=I+1 TO N
  57. 570 K=FNINDX(I,J,N)
  58. 580 K1=FNINDX(I-1,J-1,N)
  59. 590 DN=DL(J)/2
  60. 600 AM=SP(J)-SP(I)
  61. 610 X0=0
  62. 620 IF I>3 THEN GOTO 650
  63. 630 GOSUB 2630
  64. 640 GOTO 670
  65. 650 ZMNR=ZR(K1)
  66. 660 ZMNI=ZR(K1)
  67. 670 ZR(K)=ZMNR
  68. 680 ZI(K)=ZMNI
  69. 690 PRINT I,J,ZMNR,ZMNI
  70. 700 NEXT J
  71. 710 NEXT I
  72. 720 REM COMPUTE CURRENT
  73. 730 FOR I=1 TO N
  74. 740 V(I)=0
  75. 750 NEXT I
  76. 760 V(2)=1
  77. 770 FOR I=1 TO N
  78. 780 CR(I)=V(I)
  79. 790 CI(I)=0
  80. 800 NEXT I
  81. 810 REM SOLVE ZI=V
  82. 820 GOSUB 1250
  83. 830 ZINR=FNDIVR(1,0,CR(2),CI(2))
  84. 840 ZINI=FNDIVI(1,0,CR(2),CI(2))
  85. 850 REM PRINT CURRENT; COMPUTE POWERS
  86. 860 PRINT "MODE #      CURRENT"
  87. 870 FOR I=1 TO N
  88. 880 PRINT USING "   ##   ##.###  ##.###";I,CR(I),CI(I)
  89. 890 NEXT I
  90. 900 PT=CR(2)
  91. 910 PRINT
  92. 920 PRINT USING "INPUT IMPEDANCE=####.## #####.## ohms";ZINR,ZINI
  93. 930 REM COMPUTE GAINS
  94. 940 FR=0
  95. 950 FI=0
  96. 960 BR=0
  97. 970 BI=0
  98. 980 FOR I=1 TO N
  99. 990 SR=COS(XK0*SP(I))
  100. 1000 SI=SIN(XK0*SP(I))
  101. 1010 SKD=SIN(XK0*DL(I)/2)
  102. 1020 CKD=COS(XK0*DL(I)/2)
  103. 1030 FT=(1-CKD)/SKD
  104. 1040 FR=FR+(CR(I)*SR-CI(I)*SI)*FT
  105. 1050 FI=FI+(CR(I)*SI+CI(I)*SR)*FT
  106. 1060 BR=BR+(CR(I)*SR+CI(I)*SI)*FT
  107. 1070 BI=BI+(-CR(I)*SI+CI(I)*SR)*FT
  108. 1080 NEXT I
  109. 1090 FR=FR*60
  110. 1100 FI=FI*60
  111. 1110 BR=BR*60
  112. 1120 BI=BI*60
  113. 1130 GAIN=4*PI*(FR*FR+FI*FI)/(377*PT)
  114. 1140 FBR=(FR*FR+FI*FI)/(BR*BR+BI*BI)
  115. 1150 GDB=10*FNLOG10(GAIN)
  116. 1160 FBRDB=10*FNLOG10(FBR)
  117. 1170 PRINT USING "FORWARD GAIN= ##.# dB";GDB
  118. 1180 PRINT USING "FRONT-TO-BACK RATIO= ##.# dB";FBRDB
  119. 1190 PRINT
  120. 1200 PRINT
  121. 1210 COLOR 4,0
  122. 1220 INPUT "CONTINUE(Y,N)";IS$
  123. 1230 IF IS$="N" THEN GOTO 2840
  124. 1240 GOTO 120
  125. 1250 REM CHOLESKY LINEAR EQUATION SOLUTION
  126. 1260 PHS=0
  127. 1270 IF ZR(1)<>0 THEN PHS=ATN(ZI(1)/ZR(1))/2
  128. 1280 MAG=SQR(FNCABS(ZR(1),ZI(1)))
  129. 1290 ZR(1)=MAG*COS(PHS)
  130. 1300 ZI(1)=MAG*SIN(PHS)
  131. 1310 FOR K=2 TO N
  132. 1320 ZINR=FNDIVR(ZR(K),ZI(K),ZR(1),ZI(1))
  133. 1330 ZINI=FNDIVI(ZR(K),ZI(K),ZR(1),ZI(1))
  134. 1340 ZR(K)=ZINR
  135. 1350 ZI(K)=ZINI
  136. 1360 NEXT K
  137. 1370 FOR I=2 TO N
  138. 1380 IMO=I-1
  139. 1390 IPO=I+1
  140. 1400 ID=(I-1)*N-(I*I-I)/2
  141. 1410 II=ID+I
  142. 1420 FOR L=1 TO IMO
  143. 1430 LI=FNINDX(L,I,N)
  144. 1440 ZINR=ZR(II)-ZR(LI)*ZR(LI)+ZI(LI)*ZI(LI)
  145. 1450 ZINI=ZI(II)-2*ZR(LI)*ZI(LI)
  146. 1460 ZR(II)=ZINR
  147. 1470 ZI(II)=ZINI
  148. 1480 NEXT L
  149. 1490 PHS=0
  150. 1500 IF ZR(II)<>0 THEN PHS=ATN(ZI(II)/ZR(II))/2
  151. 1510 MAG=SQR(FNCABS(ZR(II),ZI(II)))
  152. 1520 ZR(II)=MAG*COS(PHS)
  153. 1530 ZI(II)=MAG*SIN(PHS)
  154. 1540 IF IPO>N THEN GOTO 1710
  155. 1550 FOR J=IPO TO N
  156. 1560 IJ=ID+J
  157. 1570 FOR M=1 TO IMO
  158. 1580 MD=(M-1)*N-(M*M-M)/2
  159. 1590 MI=MD+I
  160. 1600 MJ=MD+J
  161. 1610 ZINR=ZR(IJ)-ZR(MJ)*ZR(MI)+ZI(MJ)*ZI(MI)
  162. 1620 ZINI=ZI(IJ)-ZR(MJ)*ZI(MI)-ZI(MJ)*ZR(MI)
  163. 1630 ZR(IJ)=ZINR
  164. 1640 ZI(IJ)=ZINI
  165. 1650 NEXT M
  166. 1660 ZINR=FNDIVR(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
  167. 1670 ZINI=FNDIVI(ZR(IJ),ZI(IJ),ZR(II),ZI(II))
  168. 1680 ZR(IJ)=ZINR
  169. 1690 ZI(IJ)=ZINI
  170. 1700 NEXT J
  171. 1710 NEXT I
  172. 1720 ZINR=FNDIVR(CR(1),CI(1),ZR(1),ZI(1))
  173. 1730 ZINI=FNDIVI(CR(1),CI(1),ZR(1),ZI(1))
  174. 1740 CR(1)=ZINR
  175. 1750 CI(1)=ZINI
  176. 1760 FOR I=2 TO N
  177. 1770 IMO=I-1
  178. 1780 FOR L=1 TO IMO
  179. 1790 LI=FNINDX(L,I,N)
  180. 1800 ZINR=CR(I)-ZR(LI)*CR(L)+ZI(LI)*CI(L)
  181. 1810 ZINI=CI(I)-ZR(LI)*CI(L)-ZI(LI)*CR(L)
  182. 1820 CR(I)=ZINR
  183. 1830 CI(I)=ZINI
  184. 1840 NEXT L
  185. 1850 II=FNINDX(I,I,N)
  186. 1860 ZINR=FNDIVR(CR(I),CI(I),ZR(II),ZI(II))
  187. 1870 ZINI=FNDIVI(CR(I),CI(I),ZR(II),ZI(II))
  188. 1880 CR(I)=ZINR
  189. 1890 CI(I)=ZINI
  190. 1900 NEXT I
  191. 1910 NN=((N+1)*N)/2
  192. 1920 ZINR=FNDIVR(CR(N),CI(N),ZR(NN),ZI(NN))
  193. 1930 ZINI=FNDIVI(CR(N),CI(N),ZR(NN),ZI(NN))
  194. 1940 CR(N)=ZINR
  195. 1950 CI(N)=ZINI
  196. 1960 NMO=N-1
  197. 1970 FOR I=1 TO NMO
  198. 1980 K=N-I
  199. 1990 KPO=K+1
  200. 2000 KD=(K-1)*N-(K*K-K)/2
  201. 2010 FOR L=KPO TO N
  202. 2020 KL=KD+L
  203. 2030 ZINR=CR(K)-ZR(KL)*CR(L)+ZI(KL)*CI(L)
  204. 2040 ZINI=CI(K)-ZR(KL)*CI(L)-ZI(KL)*CR(L)
  205. 2050 CR(K)=ZINR
  206. 2060 CI(K)=ZINI
  207. 2070 NEXT L
  208. 2080 KK=KD+K
  209. 2090 ZINR=FNDIVR(CR(K),CI(K),ZR(KK),ZI(KK))
  210. 2100 ZINI=FNDIVI(CR(K),CI(K),ZR(KK),ZI(KK))
  211. 2110 CR(K)=ZINR
  212. 2120 CI(K)=ZINI
  213. 2130 NEXT I
  214. 2140 RETURN
  215. 2150 REM SUBROUTINE TO COMPUTE THE SINE AND COSINE INTEGRALS
  216. 2160 X2=X*X
  217. 2170 X4=X2*X2
  218. 2180 IF X>=1 THEN GOTO 2260
  219. 2190 X6=X2*X4
  220. 2200 X3=X*X2
  221. 2210 X5=X3*X2
  222. 2220 X7=X5*X2
  223. 2230 SI=X-X3/18+X5/600-X7/35280!
  224. 2240 CI=.57722+LOG(X)-X2/4+X4/96-X6/4320
  225. 2250 RETURN
  226. 2260 SX=SIN(X)
  227. 2270 CX=COS(X)
  228. 2280 FX=(X4+7.24116*X2+2.46394)/X
  229. 2290 FX=FX/(X4+9.068579*X2+7.15743)
  230. 2300 GX=(X4+7.54748*X2+1.56407)/X2
  231. 2310 GX=GX/(X4+12.72368*X2+15.72361)
  232. 2320 SI=1.57079-FX*CX-GX*SX
  233. 2330 CI=FX*SX-GX*CX
  234. 2340 RETURN
  235. 2350 REM COMPUTE ZMN TERMS
  236. 2360 A(1)=1
  237. 2370 A(5)=1
  238. 2380 A(2)=-4*CKD
  239. 2390 A(4)=A(2)
  240. 2400 A(3)=2+4*CKD*CKD
  241. 2410 ZMNR=0
  242. 2420 ZMNI=0
  243. 2430 FOR MM=-2 TO 2
  244. 2440 FOR NN=-1 TO 1 STEP 2
  245. 2450 TT=X0+MM*D
  246. 2460 BET=AM
  247. 2470 IF ABSYYAM THEN GOTO 2500
  248. 2480 BET=SQR(AM*AM+TT*TT)-NN*TT
  249. 2490 IF BET<AM/10 THEN BET=AM*AM/(2*ABS(TT))-AM^4/(8*ABS(TT)^3)
  250. 2500 X=BET*XK0
  251. 2510 ALP=XK0*NN*TT
  252. 2520 CALP=COS(ALP)
  253. 2530 SALP=SIN(ALP)
  254. 2540 GOSUB 2150
  255. 2550 ZMNR=ZMNR+A(MM+3)*(CALP*CI-SALP*SI)
  256. 2560 ZMNI=ZMNI-A(MM+3)*(SALP*CI+CALP*SI)
  257. 2570 NEXT NN
  258. 2580 NEXT MM
  259. 2590 SKDS=SKD*SKD
  260. 2600 ZMNR=ZMNR*15/SKDS
  261. 2610 ZMNI=ZMNI*15/SKDS
  262. 2620 RETURN
  263. 2630 REM COMPUTE MUTUAL ZMN BY THREE-TERM INTEGRATION
  264. 2640 SKM=SIN(XK0*DM)
  265. 2650 SKN=SIN(XK0*DN)
  266. 2660 CKN=COS(XK0*DN)
  267. 2670 A2=AM*AM
  268. 2680 RM1=SQR(A2+(DN-DM/2)^2)
  269. 2690 R1=SQR(A2+(DN+DM/2)^2)
  270. 2700 R0=SQR(A2+(DM/2)^2)
  271. 2710 FR=COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0+COS(XK0*R1)/R1
  272. 2720 FI=-SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0-SIN(XK0*R1)/R1
  273. 2730 SR=4*SIN(XK0*DM/2)*FR
  274. 2740 SI=4*SIN(XK0*DM/2)*FI
  275. 2750 RM1=SQR(A2+DN*DN)
  276. 2760 R0=SQR(A2)
  277. 2770 FR=2*COS(XK0*RM1)/RM1-2*CKN*COS(XK0*R0)/R0
  278. 2780 FI=-2*SIN(XK0*RM1)/RM1+2*CKN*SIN(XK0*R0)/R0
  279. 2790 SR=SR+SKM*FR
  280. 2800 SI=SI+SKM*FI
  281. 2810 ZMNR=-10*DM*SI/(SKN*SKM)
  282. 2820 ZMNI=10*DM*SR/(SKN*SKM)
  283. 2830 RETURN
  284. 2840 COLOR 7,0
  285. 2850 KEY ON
  286. 2860 END
  287.