10 ' 20 ' ELECTRICAL POTENTIAL FOR TWO POINT CHARGES 30 ' 40 ' ---------------- 11/8/87 ------------------------ 50 ' 60 ' This program calculates the electrical potential 70 ' for 2 point charges at an array of 16 x 21 points 80 ' in the range (-10,+10) for X and Y. 90 ' 100 ' --> LIST OF PROCEDURES <-- 110 ' 120 GOSUB 220 'INITIALIZATION & INPUT 130 GOSUB 400 'CALCULATE POTENTIAL ON GRID 140 GOSUB 810 'OUTPUT 150 PRINT 160 PRINT 170 INPUT "WANT TO RUN ANOTHER (Y/N)? ", AGAIN$ 180 IF AGAIN$ = "Y" OR AGAIN$ = "y" THEN 120 190 END 200 ' 210 '------------------------------------------------------ 220 'INITIALIZATION & INPUT 230 ' 240 DIM V(21,21) 250 ' 260 PRINT "INPUT VALUES FOR THE FOLLOWING:" 270 PRINT 280 PRINT " X CO-ORD FOR Q1: A1" 290 PRINT " X CO-ORD FOR Q2: A2" 300 PRINT " CHARGE #1: Q1" 310 PRINT " CHARGE #2: Q2" 320 PRINT 330 PRINT "SEPARATE THE VALUES WITH COMMAS AND PRESS RETURN" 340 PRINT 350 INPUT A1,A2,Q1,Q2 360 PRINT 370 ' 380 RETURN 390 '------------------------------------------------------ 400 'CALCULATE POTENTIAL ON GRID 410 ' 420 ' -- Loop over 21 Y values 430 ' 440 FOR J = 1 TO 21 450 ' 460 PRINT " > Working on line";J;"of 21"; 470 LOCATE ,1 480 ' 490 ' -- Loop over 16 X values 500 ' 510 FOR K = 1 TO 16 520 ' 530 ' -- The X and Y coordinates are calculated from the row 540 ' and column indices J and K 550 ' 560 X = K - 11 570 Y = J - 11 580 ' 590 ' -- Caculate distances R1 and R2 from the point (X,Y) 600 ' to each of the two point charges. 610 ' 620 R1 = SQR ((X - A1) ^ 2 + Y ^ 2) 630 R2 = SQR ((X - A2) ^ 2 + Y ^ 2) 640 ' 650 ' -- Next two statements are in case R1 or R2 is zero 660 ' 670 R1 = R1 + .000001 680 R2 = R2 + .000001 690 ' 700 ' -- Calculate the potential at this point. 710 ' 720 V(J,K) = ( Q1 / R1 ) + ( Q2 / R2 ) 730 ' 740 NEXT K 750 ' 760 NEXT J 770 ' 780 PRINT 790 RETURN 800 '------------------------------------------------------ 810 'OUTPUT 820 ' 830 PRINT 840 INPUT "PRINTER (Y/N)? ",ANS$ 850 PRINT 860 IF ANS$ = "Y" OR ANS$ = "y" THEN OPEN "LPT1:" FOR OUTPUT AS #1 870 IF ANS$ <> "Y" AND ANS$ <> "y" THEN OPEN "SCRN:" FOR OUTPUT AS #1 880 ' 890 PRINT #1," A1 = ";A1; 900 PRINT #1,": A2 = ";A2; 910 PRINT #1,": Q1 = ";Q1; 920 PRINT #1,": Q2 = ";Q2 930 PRINT #1, 940 ' 950 FOR J = 1 TO 21 960 ' 970 FOR K = 1 TO 16 980 VP = V(J,K) 990 IF VP >= 10 THEN PRINT #1, " ****"; 1000 IF VP >= 1 AND VP < 10 THEN PRINT #1, USING " #.##"; VP; 1010 IF VP >= 0 AND VP < 1 THEN PRINT #1, USING " .##"; VP; 1020 IF VP > -1 AND VP < 0 THEN PRINT #1, USING " #.##"; VP; 1030 IF VP <= -1 THEN PRINT #1, " ****"; 1040 NEXT K 1050 ' 1060 PRINT #1, 1070 PRINT #1, 1080 NEXT J 1090 ' 1100 CLOSE #1 1110 ' 1120 RETURN 1130 '---------------- END OF PROGRAM LINES ----------------