|Re: Silver 17BII+ - General remarks and a solver example|
Message #8 Posted by Karl Schneider on 21 Mar 2008, 2:29 a.m.,
in response to message #7 by cyrille de Brébisson
Hello, Cyrille --
Glad to see your input!
... there is a "direct" solver on the 17BII+ just like on the 17BII that allows the solver to return results with no iterations, but the algorithm is slightly different.
Are there substantive differences in the functional description of the solver in the HP-17BII+ and those in earlier HP-17B models?
My main complaint with the solver on the HP-33s and HP-35s is the way that the direct-solve logic was incorporated. The logic was apparently based upon that of the original HP-17B/27S solver.
Each of these calculators will always return the directly-determined solution whenever one can be obtained. Such a solution may not even reside within the range of values specified by the user's two input "guesses" even when a valid solution is within that range, but that is of no consequence to these calculators.
I object to this aspect of the logic or functional description, because the user's "guess" values might explicitly specify the vicinity of the solution of interest and relevance to the problem.
Here's my recommended approach:
1. Determine if the form of the equation will permit a directly-determined solution.
-- 1A. If "YES", proceed to Step 2.
-- 1B. If "NO", proceed to Step 4.
2. Attempt to find the directly-determined ("direct") solution.
-- 2A. If a direct solution was found, proceed to Step 3.
-- 2B. If no direct solution was found, proceed to Step 4.
3. Does the direct solution reside within the range bounded by the two guesses entered by the user?
-- 3A. If "YES", return the direct solution and terminate.
-- 3B. If "NO", store the direct solution and proceed to Step 4.
4. Attempt to find an iteratively-determined ("iterated") solution.
-- 4A. If an iterated solution was found, proceed to Step 5.
-- 4B. If no iterated solution was found, proceed to Step 6.
5. Does the iterated solution reside within the range bounded by the two guesses entered by the user?
-- 5A. If "YES", return the iterated solution and terminate.
-- 5B. If "NO", proceed to Step 6.
6. Was a direct solution found?
-- 6A. If "YES", return whichever solution is closer to one limit of the user's guess range, or the direct solution if only that one was found.
-- 6B. If "NO", return the iterated solution if it was found, or the appropriate error-termination code if none was found.
Here's a table of what would be returned under this procedure.
No DS DS outside range DS inside range
No IS Error code DS DS*
IS outside range IS "Closer to range" DS*
IS inside range IS IS DS*
(*) = IS will not be attempted
There was a discussion about this a few years back. My functional specification posted back then was incomplete, and I didn't understand that the direct-solution logic originated with the HP-17B/27S:
Basis of HP-33s SOLVE question:
-- Karl S.
Edited: 22 Mar 2008, 1:32 a.m.