home *** CD-ROM | disk | FTP | other *** search
- 1 REM **********************
- 2 REM * INTEGRATOR *
- 3 REM * BY GLEN BREDON *
- 4 REM * COPYRIGHT (C) 1985 *
- 5 REM * BY MICROSPARC, INC *
- 6 REM * CONCORD, MA 01742 *
- 7 REM **********************
- 10 REM *** INITIALIZE VARIABLES FOR MORE SPEED
- 20 S = 0:X = 0:Y = 0:L = 0:D = 0:I = 0:J = 0:N = 0
- 30 PRINT CHR$(4)"BRUN DEF.AND.VAL"
- 40 HOME : VTAB 2: HTAB 9: INVERSE : PRINT SPC( 22): PRINT : ONERR GOTO 400
- 50 HTAB 9: PRINT " NUMERICAL INTEGRATOR "
- 60 HTAB 9: PRINT SPC( 22): PRINT
- 70 NORMAL
- 80 PRINT : PRINT TAB( 8)"(SIMPSON'S RULE ROUTINE)": PRINT : PRINT "* COPYRIGHT 1985 BY MICROSPARC, INC. *"
- 90 VTAB 10: HTAB 1: CALL -958: PRINT "ENTER YOUR FUNCTION F(X). YOU MAY USE 'PI' IN YOUR FORMULA.": PRINT : INPUT "Y=";F$
- 100 Z$ = F$: & DEF Z$
- 110 HOME : VTAB 3: PRINT " Y=";F$
- 120 PI = ATN(1) *4
- 130 PRINT : PRINT : INPUT "GIVE LEFT END POINT->";L$:T$ = L$: & DEF T$: & VALT$ TO L
- 140 PRINT : PRINT : INPUT "GIVE RIGHT END POINT->";R$:T$ = R$: & DEF T$: & VALT$ TO R
- 150 SG = SGN(R -L): IF L <R THEN 170
- 160 LL = R:R = L:L = LL
- 170 PRINT : PRINT : INPUT "GIVE THE NUMBER OF (DOUBLE) SUBDIVISIONSYOU WISH TO USE->";N
- 180 IF N >0 AND N = INT(N) THEN 200
- 190 HOME : PRINT : PRINT " N SHOULD BE A POSITIVE INTEGER. PLEASE TRY AGAIN.": GOTO 170
- 200 IF N > = 2000 THEN VTAB 15: HTAB 5: FLASH : PRINT "YOU ARE IN FOR A LONG, LONG WAIT!!": GOTO 230
- 210 IF N > = 500 THEN VTAB 15: HTAB 7: FLASH : PRINT "THIS MAY TAKE QUITE A WHILE!": GOTO 230
- 220 VTAB 15: HTAB 10: FLASH : PRINT "ONE MOMENT PLEASE."
- 230 NORMAL
- 240 D = (R -L)/(N +N)
- 250 S = 0
- 260 FOR I = 0 TO N: FOR J = 0 TO 1
- 270 X = L +(I +I +J) *D
- 280 & VALZ$ TO Y: IF J THEN Y = Y +Y
- 290 S = S +Y: NEXT : NEXT
- 300 S = S -Y
- 310 X = L: & VALZ$ TO Y:X = R: & VALZ$ TO YY:S = 2 *S -(Y +YY)
- 320 S = SG *D *S/3
- 330 PRINT ""
- 340 HOME : VTAB 10: PRINT "THE INTEGRAL OF ";F$: PRINT : PRINT "FROM X="L$" TO X="R$" IS": PRINT : PRINT TAB( 5)S
- 350 VTAB 20: PRINT "PRESS 'S' TO REUSE THE SAME FUNCTION.": PRINT : PRINT "PRESS 'E' TO EXIT OR 'R' TO RERUN.";
- 360 GET A$: IF A$ = "E" THEN END
- 370 IF A$ = "S" THEN PRINT : GOTO 110
- 380 IF A$ < >"R" THEN 360
- 390 RUN
- 400 CALL -3288:E = PEEK(222):EL = PEEK(218) +256 * PEEK(219): POKE 216,0
- 410 HOME : VTAB 12: PRINT "ERROR "E" IN LINE "EL"."
- 420 PRINT : PRINT "PRESS ANY KEY TO CONTINUE.": GET Z$: PRINT : GOTO 40