home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib25a.dsk
/
AUGUST.1985
/
INTEGRATOR.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
2KB
|
49 lines
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