Overview
-This program uses the same method that is described in "A Successive Approximation Method for the HP-41":
-If F is a contraction mapping on a complete metric space, then the
equation F ( X ) = X has a unique solution
which is the limit of the sequence: X(k+1) =
F(X(k)) where X(0) is arbitrary.
-This theorem is used to solve a system of n equations in n unknowns
which must be re-written under the form:
q1 = f1 ( q1
, ... , qn )
q2 = f2 ( q1
, ... , qn )
.............................
qn = fn ( q1
, ... , qn )
Program Listing
Data Registers: • R20 = n = the number of unknowns ( Registers R20 thru R20+5n are to be initialized before executing "FNQ" )
• R21 to R24 = q1
• R21+4n = f1 name
( q1 , ... , qn ) is an initial guess that
you have to choose.
• R25 to R28 = q2
• R22+4n = f2 name
...............................................................................
R00 to R16 are unused
• R17+4n to R20+4n = qn • R20+5n = fn name R17-R18-R19: temp
Flags: /
Subroutines: The
n functions fi computing fi
( q1 , ... , qn ) in registers X Y Z T assuming
q1 , ...... , qn are in R21 to R20+4n
01 LBL "FNQ"
02 LBL 01 03 VIEW 21 04 RCL 20 05 4 06 * 07 20.02 08 + 09 STO 17 10 RCL 20 11 + 12 STO 18 |
13 CLX
14 STO 19 15 LBL 02 16 RCL IND 18 17 XEQ IND X 18 R^ 19 STO L 20 X<> IND 17 21 ST- L 22 X<> L 23 ABS 24 ST+ 19 |
25 X<> T
26 ENTER^ 27 DSE 17 28 X<> IND 17 29 - 30 ABS 31 R^ 32 ENTER^ 33 DSE 17 34 X<> IND 17 35 - 36 ABS |
37 +
38 X<>Y 39 ENTER^ 40 DSE 17 41 X<> IND 17 42 - 43 ABS 44 + 45 ST+ 19 46 DSE 18 47 DSE 17 48 GTO 02 |
49 X<> 19
50 RND 51 X#0? 52 GTO 01 53 RCL 24 54 RCL 23 55 RCL 22 56 RCL 21 57 END |
( 99 bytes / SIZE 5n+21 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | / | y |
X | / | x |
with q = x + y i + z j + t k = one solution
Example: Find 3 quaternions u , v , w such that
u = ArcSinh ( u v w )
v = ( u + v + w2 ) 1/3
w = ( 1 + 2 i + 3 j + 4 k + u + v + w ) 1/2
-We have to load 3 subroutines - for instance:
01 LBL "U"
02 RCL 21 03 STO 01 04 RCL 22 05 STO 02 06 RCL 23 07 STO 03 08 RCL 24 09 STO 04 10 RCL 25 11 STO 05 12 RCL 26 13 STO 06 14 RCL 27 15 STO 07 16 RCL 28 17 STO 08 18 XEQ "Q*Q" 19 STO 01 20 RDN 21 STO 02 22 RDN 23 STO 03 |
24 X<>Y
25 STO 04 26 RCL 29 27 STO 05 28 RCL 30 29 STO 06 30 RCL 31 31 STO 07 32 RCL 32 33 STO 08 34 XEQ "Q*Q" 35 XEQ "ASHQ" 36 RTN 37 LBL "V" 38 2 39 STO 00 40 RCL 32 41 RCL 31 42 RCL 30 43 RCL 29 44 XEQ "Q^R" 45 STO 01 46 RDN |
47 STO 02
48 RDN 49 STO 03 50 CLX 51 RCL 24 52 + 53 RCL 28 54 + 55 RCL 03 56 RCL 27 57 + 58 RCL 23 59 + 60 3 61 1/X 62 STO 00 63 CLX 64 RCL 21 65 RCL 25 66 + 67 ST+ 01 68 CLX 69 RCL 22 |
70 RCL 26
71 + 72 ST+ 02 73 X<> 02 74 RCL 01 75 XEQ "Q^R" 76 RTN 77 LBL "W" 78 RCL 21 79 RCL 25 80 + 81 RCL 29 82 + 83 1 84 + 85 STO 01 86 RCL 24 87 RCL 28 88 + 89 RCL 32 90 + 91 4 92 + |
93 RCL 23
94 RCL 27 95 + 96 RCL 31 97 + 98 3 99 + 100 RCL 22 101 RCL 26 102 + 103 RCL 30 104 + 105 .5 106 STO 00 107 1/X 108 + 109 RCL 01 110 XEQ "Q^R" 111 RTN 112 END |
( "Q*Q" "Q^R" "ASHQ" are listed in "Quaternions for the HP-41" )
• n = 3 STO 20 and if we choose u = v = w = 1 as initial guesses:
• 1 STO 21 STO 25 STO
29
• 0 STO 22 STO 26
STO 30
• 0 STO 23 STO 27
STO 31
• 0 STO 24 STO 28
STO 32
• "U" ASTO 33 "V" ASTO 34 "W" ASTO 35
FIX 9 XEQ "FNQ" >>>> the HP-41 displays the successive approximations and finally, it yields: ( Execution time = 14m47s )
>>>> 4.541667578 = R21
RDN 0.195336787 = R22
RDN 0.293005181 = R23
RDN 0.390673575 = R24
-So, u = 4.541667578 + 0.195336787 i + 0.293005181 j + 0.390673575 k
-Likewise, we find in registers R25 thru R28 & R29 thru R32:
v = 2.725387904 + 0.137399822 i + 0.206099734 j + 0.274799645 k
w = 3.590282794 +
0.377430929 i + 0.566146393 j + 0.754861857 k
Notes:
-The accuracy is controlled by the display settings ( line 50 RND )
-FIX 9 may lead to infinite loops: FIX 8 or FIX 7 are often better.
-Press XEQ 01 if you want to improve the accuracy then.
-Instead of displaying R21, you could prefer displaying R19:
-Add VIEW X after line 49 and delete line 03:
-The successive values must tend to zero if there is convergence.
-It's seldom easy to re-write a given system in the appropriate form
and to get convergence...