mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 17:26:38 +00:00
203 lines
5.8 KiB
QBasic
203 lines
5.8 KiB
QBasic
|
||
50 REM SLITS--COPYRIGHT 1971, STATE UNIVERSITY OF NEW YORK
|
||
51 REM LATEST REVISION 8-27-72
|
||
100 REM YOUNG'S DOUBLE SLIT EXPERIMENT
|
||
101 REM A.C. CAGGIANO
|
||
102 REM REVISED 7/28/70 (L. BRAUN, D. PESSEL)
|
||
103 REM IMPORTANT VARIABLES: L-DISTANCE BETWEEN SLITS+SCREEN;
|
||
104 REM W-WAVELENGTH; D-SLIT SEPARATION(CENTER TO CENTER)
|
||
105 REM
|
||
106 REM U: PRINT PARAMETER FOR UNKNOWN WAVELENGTH
|
||
107 LET U=0
|
||
110 PRINT " ", "YOUNG'S DOUBLE SLIT EXPERIMENT"
|
||
111 PRINT
|
||
120 REM ILLUSTRATIVE RUN
|
||
130 LET L=2
|
||
140 LET W=6000
|
||
150 LET D=.5
|
||
160 REM PLOT ROUTINE
|
||
170 GOSUB 855
|
||
171 PRINT
|
||
180 PRINT "ABOVE IS AN ILLUSTRATIVE RUN WITH PRE-DETERMINED"
|
||
181 PRINT "VALUES FOR WAVELENGTH (W), DISTANCE BETWEEN SLITS"
|
||
182 PRINT "AND SCREEN (L), AND SLIT SEPARATION - CENTER TO"
|
||
183 PRINT "CENTER (D). NOW YOU MAY VARY THESE PARAMETERS,"
|
||
184 PRINT "ONE AT A TIME."
|
||
186 PRINT
|
||
187 PRINT "*****"
|
||
188 PRINT
|
||
190 REM D INPUT SUBROUTINE
|
||
200 GOSUB 922
|
||
210 REM PLOT ROUTINE
|
||
220 GOSUB 855
|
||
221 PRINT
|
||
230 PRINT "WOULD YOU LIKE TO TRY ANOTHER VALUE OF D (1-YES, 0-NO)";
|
||
240 INPUT Q1
|
||
250 IF Q1>0 THEN 200
|
||
260 PRINT
|
||
261 PRINT "*****"
|
||
262 PRINT
|
||
270 REM RESET D
|
||
280 LET D=.5
|
||
290 REM W INPUT SUBROUTINE
|
||
300 GOSUB 944
|
||
310 REM PLOT SUBROUTINE
|
||
320 GOSUB 855
|
||
321 PRINT
|
||
330 PRINT "WOULD YOU LIKE TO TRY ANOTHER VALUE OF W (1-YES, 0-N0)";
|
||
340 INPUT Q2
|
||
350 IF Q2>0 THEN 300
|
||
360 PRINT
|
||
361 PRINT "*****"
|
||
362 PRINT
|
||
370 REM RESET W
|
||
380 LET W=6000
|
||
390 REM L INPUT SUBROUTINE
|
||
400 GOSUB 902
|
||
410 REM PLOT SUBROUTINE
|
||
420 GOSUB 855
|
||
421 PRINT
|
||
430 PRINT "WOULD YOU LIKE TO TRY ANOTHER VALUE OF L (1-YES, 0-NO)";
|
||
440 INPUT Q3
|
||
450 IF Q3>0 THEN 400
|
||
460 PRINT
|
||
461 PRINT "*****"
|
||
462 PRINT
|
||
470 REM RESET L
|
||
480 LET L=2
|
||
490 PRINT "YOU WILL NOW BE GIVEN A LIGHT SOURCE OF UNKNOWN"
|
||
491 PRINT "WAVELENGTH. YOU WILL SPECIFY THE SLIT SEPARATION (D),"
|
||
492 PRINT "AND THE DISTANCE FROM SLITS TO SCREEN (L)."
|
||
507 REM Q5 DETERMINES IF W IS TO BE CHANGED
|
||
508 LET Q5=0
|
||
520 REM D INPUT SUBROUTINE
|
||
530 GOSUB 922
|
||
550 REM L INPUT SUBROUTINE
|
||
560 GOSUB 902
|
||
565 REM CHANGE W?
|
||
566 IF Q5>0 THEN 601
|
||
570 REM RANDOMLY DETERMINE WAVELENGTH
|
||
580 RANDOMIZE
|
||
590 LET W=1000*INT(3*RND(X)+4.5)
|
||
600 REM PLOT SUBROUTINE (UNKNOWN W)
|
||
601 LET U=1
|
||
605 GOSUB 855
|
||
606 PRINT
|
||
610 PRINT "WOULD YOU LIKE A PLOT FOR OTHER VALUES OF D AND L ";
|
||
611 PRINT "(1-YES, 0-NO)";
|
||
620 INPUT Q5
|
||
630 IF Q5>0 THEN 530
|
||
640 PRINT "WHAT DO YOU THINK THE UNKNOWN WAVELENGTH (W) IS";
|
||
650 INPUT W1
|
||
660 IF ABS(W1-W)<.1*W THEN 700
|
||
670 PRINT "YOU ARE MORE THEN 10% OFF. TO HELP YOU, YOU MAY ";
|
||
680 PRINT "OBTAIN MORE PLOTS."
|
||
690 GO TO 610
|
||
700 PRINT "PRETTY GOOD! THE WAVELENGTH WAS "W" ANGSTROMS."
|
||
701 PRINT "WOULD YOU LIKE TO TRY ANOTHER UNKNOWN WAVELENGTH";
|
||
702 PRINT "(1-YES, 0-NO)";
|
||
703 INPUT Q6
|
||
704 IF Q6<1 THEN 967
|
||
705 PRINT "YOU MAY SPECIFY A NEW SLIT SEPARATION (D) AND DISTANCE"
|
||
706 PRINT "FROM SLITS TO SCREEN (L)."
|
||
707 GO TO 508
|
||
849 REM
|
||
850 REM PLOT ROUTINE
|
||
855 PRINT
|
||
856 PRINT
|
||
857 REM U>0 DO NOT PRINT WAVELENGTH
|
||
858 IF U>0 THEN 870
|
||
860 PRINT "L ="L"METERS W ="W"ANGSTROMS D ="D"MILLIMETERS"
|
||
861 PRINT
|
||
865 GO TO 875
|
||
870 PRINT "L ="L"METERS W = ? ANGSTROMS D ="D"MILLIMETERS"
|
||
871 PRINT
|
||
875 PRINT "DISTANCE (MM'S FROM CENTER)"
|
||
880 REM A:PLOT LOWER LIMIT (MM'S); B:UPPER LIMIT (MM'S)
|
||
881 LET A=-.26
|
||
882 LET B=.26
|
||
883 REM R:PRELIMINARY CALC. FOR INTENSITY; 10E4:CONVERSION FACTOR
|
||
884 LET R=(3.1416*D*10E4)/(W*L)
|
||
885 REM LOOP TO CALCULATE PATTERN AND PLOT IT
|
||
886 FOR X=A TO B STEP .02
|
||
887 REM Y:INTENSITY
|
||
888 REM 20:SCALE FACTOR FOR PLOT; X:DISTANCE (MM'S)
|
||
889 LET Y=20*COS(R*X)*COS(R*X)
|
||
890 IF ABS(X)<.0001 THEN 893
|
||
891 PRINT TAB(8);INT(X*100+.5)/100;TAB(15); "."; TAB(INT(Y+15.5)); "*"
|
||
892 GO TO 895
|
||
893 PRINT "...............O....INTENSITY......*"
|
||
895 NEXT X
|
||
896 LET U=0
|
||
897 PRINT
|
||
898 RETURN
|
||
899 REM
|
||
900 REM L INPUT SUBROUTINE
|
||
902 PRINT "WHAT IS THE NEW DISTANCE FROM SLITS TO SCREEN (L) ";
|
||
903 PRINT "IN METERS";
|
||
904 INPUT L
|
||
905 REM 1000: CONVERT L(METERS) TO L(MILLIMETERS)
|
||
906 IF 1000*L>= 10*D THEN 912
|
||
907 PRINT "THIS DISTANCE IS TOO SMALL FOR GOOD INTERFERENCE PATTERNS."
|
||
908 PRINT "TRY ANOTHER VALUE."
|
||
910 GO TO 902
|
||
912 IF L<=5 THEN 918
|
||
913 PRINT "ALTHOUGH ANY DISTANCE LARGER THAN "10*D/1000" METERS"
|
||
914 PRINT "IS VALID, ABOVE 5 METERS BECOMES HARD TO SEE.";
|
||
915 PRINT " TRY ANOTHER VALUE."
|
||
916 GO TO 902
|
||
918 RETURN
|
||
919 REM
|
||
920 REM D INPUT SUBROUTINE
|
||
922 PRINT "WHAT IS THE NEW SLIT SEPARATION (D) IN MILLIMETERS";
|
||
924 INPUT D
|
||
926 IF D>=.1 THEN 932
|
||
928 PRINT "SLITS ARE SO CLOSE THEY APPROXIMATE A SINGLE SLIT."
|
||
929 PRINT "TRY ANOTHER VALUE."
|
||
930 GO TO 922
|
||
932 IF D<=.1*1000*L THEN 940
|
||
933 PRINT "FOR A VALID INTERFERENCE PATTERN, THE SLIT SEPARATION"
|
||
934 PRINT "SHOULD BE LESS THAN ".1*1000*L" MILLIMETERS. TRY";
|
||
935 PRINT " ANOTHER VALUE."
|
||
938 GO TO 922
|
||
940 RETURN
|
||
941 REM
|
||
942 REM W INPUT SUBROUTINE
|
||
944 PRINT "WHAT IS THE NEW WAVELENGTH (W) IN ANGSTROMS";
|
||
946 INPUT W
|
||
947 IF W>=3000 THEN 954
|
||
948 IF W<1000 THEN 959
|
||
949 PRINT "A WAVELENGTH OF "W" IS ULTRAVIOLET LIGHT AND NOT VISIBLE."
|
||
950 GO TO 956
|
||
954 IF W<=8000 THEN 965
|
||
955 PRINT "A WAVELENGTH OF "W" IS INFRARED LIGHT AND NOT VISIBLE."
|
||
956 PRINT "THE INTERFERENCE PATTERN WILL BE VISIBLE USING DETECTORS"
|
||
957 PRINT "ONLY. TRY ANOTHER WAVELENGTH."
|
||
958 GO TO 944
|
||
959 PRINT "A WAVELENGTH OF "W" IS X-RAYS AND NOT VISIBLE."
|
||
960 GO TO 956
|
||
965 RETURN
|
||
966 REM
|
||
967 PRINT
|
||
968 PRINT "*****"
|
||
969 PRINT
|
||
970 REM MISCELLANEOUS RUNS
|
||
972 PRINT "WOULD YOU LIKE A PLOT WITH YOUR OWN VALUES FOR WAVELENGTH"
|
||
973 PRINT " (W), SLIT SEPARATION (D), AND DISTANCE FROM SLITS TO"
|
||
974 PRINT "SCREEN (L) (1-YES, 0-NO)";
|
||
976 INPUT Q9
|
||
980 IF Q9<1 THEN 995
|
||
982 GOSUB 944
|
||
984 GOSUB 922
|
||
986 GOSUB 902
|
||
988 GOSUB 855
|
||
990 PRINT "ANOTHER ONE (1-YES, 0-NO)"
|
||
992 INPUT Q8
|
||
993 IF Q8>0 THEN 982
|
||
994 REM
|
||
995 PRINT
|
||
996 PRINT "**********"
|
||
997 PRINT
|
||
998 PRINT "HOPE YOU HAD FUN!"
|
||
999 END
|
||
`*U*!3[ |