100 REM Schroedinger equation by symmentry method
110 REM energy and function are automattically found
120 REM y''=z'=(V(x)-E)*y y'=z,  y:wave function
130 console 0,25,0,1 : SCREEN 3,0,0,1
140 DIM e(39), ph(29), yyd(29)
150 DEFDBL A-H: DEFDBL K-O: DEFINT Q: DEFDBL R-Z
160 DIM y(1001), e(20)
170 VIEW (0, 0)-(639, 399): CLS 3
180 VIEW (330, 90)-(630, 390), , 2
190 WINDOW (-5, -25)-(5, 10): CLS 3
200 VIEW (20, 90)-(320, 390), , 2
210 WINDOW (-5, -25)-(5, 10): CLS 3
220 DEF fnp (x) = x * x: REM potential function
230 DEF fnf (z) = z
240 DEF fng (x, y, e) = (x * x - e) * y
250 CLS 3
260 LOCATE 15, 1:PRINT "Trial Energy E<8  "
270 XX = -.5: yy = 0: zz = .00001
280 h = .01
290 x2 = -5
300 FOR i = 0 TO 1000: REM display potential
310 PSET (x2, -fnp(x2)), 7
320 x2 = x2 + h
330 NEXT i
340 INPUT " ODD OR EVEN LEVEL ? O / E "; o$
350 IF o$ = "O" OR o$ = "E" THEN GOTO 360 ELSE GOTO 340
360 IF o$ = "O" THEN q = 2
370 IF o$ = "E" THEN q = 1
380 INPUT "Guess value of energy"; e(1): e(2) = e(1) + .05
390 FOR j = 1 TO 20
400 e = e(j): x = -5: y = yy: z = zz: PRINT j, e(j): y2 = 0
410 GOSUB *runge
420 IF j = 1 THEN GOTO 450
430 e(j + 1) = e(j) - (e(j) - e(j - 1)) * ph(j) / (ph(j) - ph(j - 1))
440 IF ABS((e(j + 1) - e(j)) / e(j)) < .00002 THEN GOTO *owari
450 NEXT j
460 END
470 *runge
480 FOR i = 1 TO 500
490 PSET (x, -50 * y * e * e - e), 6: yb = y
500 PSET (x, -25 * z * e * e - e), 2
510 k1 = h * fnf(z): l1 = h * fng(x, y, e)
520 k2 = h * fnf(z + l1 / 2): l2 = h * fng(x + h / 2, y + k1 / 2, e)
530 k3 = h * fnf(z + l2 / 2): l3 = h * fng(x + h / 2, y + k2 / 2, e)
540 k4 = h * fnf(z + l3): l4 = h * fng(x + h, y + k3, e)
550 x = x + h
560 y = y + (k1 + 2 * k2 + 2 * k3 + k4) / 6: z = z + (l1 + 2 * l2 + 2 * l3 + l4) / 6
570 y2 = y2 + y * y: y(i) = y
580 IF o$ = "E" THEN ph(j) = z
590 IF o$ = "O" THEN ph(j) = y
600 NEXT i
610 RETURN 
620 *owari
630 LOCATE 43, 3:
640 PRINT "wave function of v= "; CINT((e(j) - 1) / 2); " level ";
650 LOCATE 43, 4: PRINT "blue:wave function, yellow:square"
660 x = -5: NL = SQR(2 * y2)
670 VIEW (330, 90)-(630, 390), , 2
680 WINDOW (-5, -25)-(5, 5)
690 LINE (-5, -e)-(5, -e), 7
700 FOR i = 0 TO 500
710 PSET (x, -y(i) * 50 / NL - e), 5
720 PSET (x, -fnp(x)), 5: PSET (x, -y(i) * y(i) * 750 / y2 - e), 6
730 x = x + h
740 NEXT i
750 FOR i = 500 TO 1000
760 PSET (x, (-1) ^ q * y(1000 - i) * 50 / NL - e), 5
770 PSET (x, -fnp(x)), 5
780 PSET (x, -y(1000 - i) * y(1000 - i) * 750 / y2 - e), 6
790 x = x + h
800 NEXT i
810 LOCATE 1, 25
820 VIEW (0, 0)-(639, 399)
830 END








