 (71B) Bisection Plus for the HP-71B - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Software Libraries (/forum-10.html) +--- Forum: General Software Library (/forum-13.html) +--- Thread: (71B) Bisection Plus for the HP-71B (/thread-419.html) (71B) Bisection Plus for the HP-71B - Namir - 01-12-2014 05:44 PM This program implements the new Bisection Plus algorithm for the HP-Prime. Click here to download a pdf file that discusses the new algorithm. I have attached a ZIP file that contains the program for the Windows HP-71B emulator. Algorithm Code: ```Given f(x)=0, the root-bracketing interval [A,B], and the tolerance for the root of f(x): Calculate Fa = f(A) and Fb=f(B). Exit if Fa*Fb > 0 X2 = A Repeat    LastX2 = X2   X1=(A+B)/2   Fx1 = f(X1)   If Fx1*Fa > 0 then     Slope = (Fb – Fx1)/(B – X1)     Intercept = Fb – Slope * B   Else     Slope = (Fa – Fx1)/(A – X1)     Intercept = Fa – Slope * A   End If     X2=-Intercept / Slope   Fx2 = f(X2)   If Fx1*Fx2 < 0 then     A = X1     Fa = Fx1     B = X2     Fb = Fx2   Else     If Fx2*Fa > 0 then       A=X2       Fa=Fx2     Else       B=X2       Fb=Fx2     End If   End If   Until |A-B| < tolerance OR |X2 - LastX2| < toelrance Return X2``` HP-71B Implementation Code: ```10 REM BISECTION PLUS 20 DESTROY ALL 30 DEF FNX(X)=EXP(X)-3*x^2 40 INPUT "A? ";A 50 INPUT "B? ";B 60 INPUT "TOLER? ";T 70 IF T<=0 OR T>=1 THEN T=1E-8 80 F7=FNX(A) @ F8=FNX(B) 90 IF F7*F8>0 THEN 380 95 X2=A @ I9=0  100 I9=I9+1 @ L=X2 @ X1=(A+B)/2 110 F1=FNX(X1) 120 IF F1*F7<0 THEN 160 130 S = (F7 – F1)/(A – X1) 140 I = F7 – S * A 150 GOTO 180 160 S = (F8 – F1)/(B – X1) 170 I = F8 – S * B 180 X2 = -I / S # DISP x2 @ WAIT .2 190 F2 = FNX(X2) 200 if F1*F2 > 0 THEN 260 210 A = X1 220 F7 = F1 230 B = X2 240 F8 = F2 250 GOTO 320 260 If F2*F7 < 0 THEN 300 270 A=X2 280 F7=F2 290 GOTO 320 300 B=X2 310 F8=F2 320 IF ABS(A - B) < T THEN 350 330 IF ABS(X2 - L) < T THEN 350 340 GOTO 100 350 DISP "ROOT = ";X2 @ PAUSE 360 DISP "ITERS = ";I9 370 GOTO 390 380 DISP "FA AND FB HAVE SAME SIGN" 390 END``` Usage 1. Press [RUN]. The program prompts you to enter the the value of A. 2. Key in the value of A and press [ENTER]. The program prompts you to enter the the value of B. 3. Key in the value of B and press [ENTER]. The program prompts you to enter the the value for the tolerance. 4. Key in the value for the tolerance and press [ENTER]. 5. The program displays intermediate refinement for the guess. When it converges the program displays "ROOT=" followed by the root value. 6. Press [CONT]. The program displays the number of iterations. Example Find the root for f(x)=exp(x)-3*X^2 in the range [3, 4]. 1. Press [RUN]. The program prompts you to enter the the value of A. 2. Key in 3 and press [ENTER]. The program prompts you to enter the the value of B. 3. Key in 4 and press [ENTER]. The program prompts you to enter the the value for the tolerance. 4. Key in 1E-8 and press [ENTER]. 5. The program displays intermediate refinement for the guess. When it converges the program displays "ROOT=3.73308". 6. Press [CONT]. The program displays the number of iterations as "ITER=7". Customization Line 30 contains the definition of f(X). Edit this line to reflect your function.