BASIC Code
1 REM Copyright 1987
2 REM John H. Mathews
3 REM Dept. of
Mathematics
4 REM California State
University, Fullerton
5 REM Secant Method
10 DEF FNF (X) = X*X*X - 3*X + 2
25 GOTO 100
30 REM SUBROUTINE PRINT FUNCTION
40 PRINT"F(X) = X*X*X -
3*X + 2"
50 RETURN
100 REM PROGRAM SECANT METHOD
110 DELTA=5E-6
120 EPSILON=1E-7
130 MAX=100
140 GOSUB 300: REM SUBROUTINE INPUTS
150 Q0=P0
155 Q1=P1
160 GOSUB 500 : REM SUBROUTINE SECANT METHOD
170 GOSUB 1000: REM SUBROUTINE RESULTS
180 PRINT
190 PRINT "WANT TO USE A DIFFERENT STARTING VALUE?
<Y/N> ";
200 INPUT ANS$
210 IF ANS$ = "Y" OR ANS$ = "y" GOTO 140
220 GOTO 5000
300 REM SUBROUTINE INPUTS
310 CLS
320 PRINT"THE SECANT METHOD IS USED"
330 PRINT
340 PRINT"TO FIND A ZERO OF THE FUNCTION: "
350 PRINT
360 GOSUB 30: REM PRINT FUNCTION
370 PRINT
380 PRINT"TWO INITIAL APPROXIMATION P0, P1 ARE
NEEDED."
390 PRINT
400 PRINT"ENTER P0 = ";
410 INPUT P0
420 PRINT
430 PRINT"ENTER P1 = ";
440 INPUT P1
450 PRINT
460 RETURN
500 REM SUBROUTINE SECANT METHOD
510 SMALL=1E-10
520 K=0
530 COND=0
540 Y0=FNF(P0)
550 Y1=FNF(P1)
560 WHILE K < MAX AND COND = 0
570 DF=(Y1-Y0)/(P1-P0)
580 IF DF = 0 THEN 590 ELSE
630
590 COND=1
600 DP=P1-P0
610 P2=P1
620 GOTO 660
630 REM ELSE
640 DP=Y1/DF
650 P2=P1-DP
660 REM ENDIF
670 Y2=FNF(P2)
680 RELERR=ABS(DP)/(ABS(P2)+SMALL)
690 IF RELERR <
DELTA THEN COND=2
700 IF ABS(Y2) <
EPSILON THEN COND=3
710 IF RELERR<DELTA AND
ABS(Y2)<EPSILON THEN COND=4
720 P0=P1
730 P1=P2
740 Y0=Y1
750 Y1=Y2
760 K=K+1
770 WEND
780 RETURN
1000 REM SUBROUTINE RESULTS
1010 CLS
1020 Y2=FNF(P2)
1030 PRINT"THE SECANT METHOD WAS USED TO FIND A ZERO OF
THE FUNCTION"
1040 PRINT
1050 GOSUB 30: REM PRINT FUNCTION
1060 PRINT
1070 PRINT"STARTING WITH THE TWO APPROXIMATIONS:"
1080 PRINT
1090 PRINT"P0 =",P0," AND P1 =",P1
1100 PRINT
1110 PRINT"AFTER ",K," ITERATIONS AN APPROXIMATE VALUE FOR
THE ZERO IS:"
1120 PRINT
1130 PRINT" P =",P2
1140 PRINT
1150 PRINT" DP =",ABS(DP)," IS THE
ESTIMATED ACCURACY FOR P."
1160 PRINT
1170 PRINT" F(",P2," ) =
",Y2
1180 PRINT
1190 IF Y2 = 0 THEN PRINT"THE
COMPUTED FUNCTION VALUE IS EXACTLY ZERO!"
1200 IF COND = 0 THEN 1210 ELSE
1240
1210 PRINT"CONVERGENCE IS DOUBTFUL
BECAUSE"
1220 PRINT
1230 PRINT"THE MAXIMUM NUMBER OF
ITERATIONS WAS EXCEEDED."
1240 REM ELSEIF
1250 IF COND = 1 THEN 1260 ELSE 1290
1260 PRINT"CONVERGENCE IS DOUBTFUL
BECAUSE "
1270 PRINT
1280 PRINT"DIVISION BY ZERO WAS
ENCOUNTERED."
1290 REM ELSEIF
1300 IF COND = 2 THEN 1310 ELSE 1340
1310 PRINT"THE APPROXIMATION P
IS"
1320 PRINT
1330 PRINT"WITHIN THE DESIRED
TOLERANCE."
1340 REM ELSEIF
1350 IF COND = 3 THEN 1360 ELSE 1390
1360 PRINT"THE COMPUTED FUNCTION
VALUE F(P)"
1370 PRINT
1380 PRINT"IS WITHIN THE DESIRED
TOLERANCE."
1390 REM ELSEIF
1400 IF COND = 4 THEN 1410 ELSE 1440
1410 PRINT"THE APPROXIMATION P AND
THE FUNCTION VALUE "
1420 PRINT
1430 PRINT"F(P) ARE BOTH WITHIN
THE DESIRED TOLERANCES."
1440 REM ENDIF
1450 RETURN
5000 END
(c) John H. Mathews 2004