fx-5800p: Bisection Method
The program BISECT finds a root for f(X) given an initial open interval of (A, B). I have the tolerance set to 10^-9. To prevent calculations from going "forever", I set the maximum number of iterations to 150. You can adjust these factors in the program as desired.
The first point to be tested is (A+B)/2. If this is a root, the program stops and it will return this root as a result.
The program BISECT calls on a subroutine program FX. The function f(X) is stored in FX.
While programming, use the Prog to call subroutines. The syntax is:
Prog "name of subroutine in quotes"
Press [SHIFT] [FILE].
Remember for the fx-5800p, all variables (A-Z, and Z[#]s) are global, meaning they will carry over from programs and subroutines.
Anything following the double slash (//) is a comment.
Program FX
insert function of X here → Y
//store result in Y
// A Return command is implied.
Program BISECT
1 → I // I = iteration count
"A"? → A
"B"? → B
A → X
Prog "FX"
Y → C
B → X
Prog "FX"
Y → D
While Abs(A-B) > 10^(-9) // tolerance setting
(A + B) ÷ 2 → X
Prog "FX"
If Y = 0
Then
Break
IfEnd
If Y*C > 0
Then
X → A
Y → C
Else
X → B
Y → D
IfEnd
I + 1 → I
If I > 150 // iteration limit
"ITER. EXCEEDED" ◢
Stop
IfEnd
WhileEnd // finish the loop
"ITERATIONS:" ◢ // optional
I ◢ // optional
"ROOT=" ◢ // result
X
Example:
f(X) = X^(3)-2X+1, for the intervals (-2,0), (0,2), and (0,1).
Program FX would look like this:
Program FX
X^3 - 2*X + 1 → Y
Run BISECT.
For (-2,0), results are:
ITERATIONS: 32
ROOT = -1.618033989
For (0,2), results are:
ITERATIONS: 1
ROOT = 1
For (0,1), results are:
ITERATIONS: 31
ROOT = 0.6180339893
This blog is property of Edward Shore. 2015
A blog is that is all about mathematics and calculators, two of my passions in life.
Sunday, January 4, 2015
fx-5800p: Bisection Method
Fun with the HP 30b
Fun with the HP 30 b Introduction The following programs are for the HP 30b Business Professional. Did you know that the 30b...