Swiss Micros DM42/HP42S: Polynomial Solver
Introduction
The solver PSOL (pmatsolver.raw) uses a two column matrix PMAT to evaluate and solve for polynomials in the form:
p(x) = a1 * x^b1 + a2 * x^b2 + a3 * x^b3 + ...
And PMAT has the matrix in the form of:
[ [ a1, b1 ],
[ a2, b2 ],
[ a3, b3 ] ... ]
The PMAT Matrix
The solver uses the matrix PMAT. It must first be created in order for the solver to work.
Creating PMAT:
1. Enter the number of terms, press [ENTER], type 2, press [(shift)] [ 9 ] (MATRIX), select (NEW).
2. Select (EDIT) from the MATRIX menu.
3. Enter the coefficients and powers. For terms in form of a1, the power is 0. For terms in form of x^b1, the coefficient is 1.
4. Press [EXIT], then [STO], [(shift)] [ENTER] (ALPHA), type PMAT.
Editing PMAT:
1. Enter the number of terms, press [ENTER], type 2, press [(shift)] [ 9 ] (MATRIX), select (DIM), select PMAT.
2. From the MATRIX menu, select (EDITN), select PMAT. Be sure to select EDITN (edit named matrix).
Running the Solver
To run the polynomial solver:
1. Press [(shift)] [ 7 ] (SOLVER), select PSOL.
2. To evaluate p(x), enter a value for X and solve for P.
3. To solve for x, enter a value for P, enter a guess for X, and then press X again to solve.
Note: The solver cannot evaluate 0^0. Hopefully you can see why in the program listing.
The best part of PSOL is that you don't have to use just integer powers, put powers in order, or fill in zero terms (0 * x^n).
Examples
Example 1: p(x) = 2 + 3x^1.5 - x^3
Set PMAT to be this:
[ [ 2, 0 ],
[ 3, 1.5 ]
[ -1, 3 ] ]
If X = 2.2, solving for P yields 1.141382003
If P = -1, solving for X with guess 0 yields 2.431407988
Example 2: p(x) = -5 + 3*x + 4*x^2
Set PMAT to be this:
[ [ -5, 0 ],
[ 3, 1 ],
[ 4, 2 ]]
If X =1.8, solving for P yields 13.36
If P = 10, solving for X with guess 0 yields 1.59746673
DM42/HP42S (Free42) Solver Program PSOL
00 { 65-Byte Prgm }
01 LBL "PSOL"
02 MVAR "P"
03 MVAR "X"
04 0
05 STO 01
06 INDEX "PMAT"
07 RCL "PMAT"
08 DIM?
09 R↓
10 STO 02
11 LBL 00
12 RCLEL
13 RCL "X"
14 J+
15 RCLEL
16 Y↑X
17 ×
18 STO+ 01
19 RCLIJ
20 R↓
21 RCL 02
22 X=Y?
23 GTO 01
24 J-
25 I+
26 GTO 00
27 LBL 01
28 RCL 01
29 RCL- "P"
30 .END.
Eddie
All original content copyright, © 2011-2022. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.