Polynomials(III) for the HP-41
Overview
2°) Quartic Equations
3°) Palindromic Polynomials
a) Degree = 4
b) Degree = 5
c) Degree = 6
d) Degree = 7
e) Degree = 8
f) Degree = 9
4°) Integer Roots
a) Real Roots
b) Complex Roots
5°) A few Quintic Equations
a) Program#1
b) Program#2
c) Program#3
6°) A few Sextic Equations
7°) A few Septic Equations
a) Program#1
b) Program#2
8°) A few Octic Equations
-The following ones are sometimes more accurate... and sometimes less accurate !
-If the polynomial is palindromic, we can find its roots easily, provided its degree is < 10.
-In paragraph 4°), the routines employ the brute force to find the roots if all the roots are integers ( Gaussian integrers with complex polynomials )
-It's impossible to solve all polynomial equations of degree > 4 with similar formulae
-But there are special cases where it's still possible.
1°) Cubic Equations
-"P3" solves a.x3+b.x2+c.x+d = 0
Data Registers: R00 .... R05: temp
Flag: F01
( indicates complex roots )
Subroutines: /
01 LBL "P3" 02 CF 01 03 R^ 04 ST/ T 05 ST/ Z 06 / 07 27 08 * 09 X<>Y 10 STO 02 11 9 12 * 13 R^ 14 STO 01 15 X^2 16 ST+ X 17 - 18 RCL 01 19 * 20 - 21 STO 00 22 X^2 |
23 RCL 01 24 X^2 25 RCL 02 26 3 27 ST/ 01 28 * 29 - 30 STO 04 31 3 32 Y^X 33 4 34 * 35 X<Y? 36 GTO 00 37 DEG 38 X#0? 39 / 40 SQRT 41 RCL 00 42 SIGN 43 CHS 44 * |
45 ACOS 46 3 47 / 48 STO 05 49 120 50 STO 03 51 + 52 COS 53 RCL 05 54 RCL 03 55 - 56 COS 57 RCL 04 58 SQRT 59 1.5 60 / 61 RCL 05 62 COS 63 X<>Y 64 ST* T 65 ST* Z 66 * |
67 RCL 01 68 ST- T 69 GTO 01 70 LBL 00 71 - 72 SQRT 73 RCL 00 74 ABS 75 + 76 2 77 / 78 3 79 1/X 80 Y^X 81 RCL 00 82 SIGN 83 * 84 CHS 85 STO 05 86 RCL 04 87 RCL 05 88 / |
89 STO 03 90 - 91 12 92 SQRT 93 / 94 RCL 03 95 RCL 05 96 + 97 3 98 / 99 STO 03 100 2 101 / 102 CHS 103 RCL 03 104 RCL 01 105 SF 01 106 LBL 01 107 ST- Z 108 - 109 END |
( 134 bytes / SIZE 006 )
STACK | INPUTS | OUTPUTS |
T | a # 0 | / |
Z | b | z |
Y | c | y |
X | d | x |
-If CF 01 the 3 solutions are x ; y ; z
-If SF 01 the 3 solutions are x ; y+i.z
; y-i.z
Example: Solve 2.x3-5.x2-7.x+1 = 0 and 2.x3-5.x2+7.x+1 = 0
2 ENTER^
-5 ENTER^
-7 ENTER^
1
XEQ "P3" >>>> 3.467727065
RDN 0.131206041 RDN -1.098933110
which are the 3 real solutions since flag F01 is clear.
2 ENTER^
-5 ENTER^
7
ENTER^
1
R/S >>>>
-0.130131633 RDN 1.315065816
RDN -1.453569820
Note:
-It's better to replace lines 78-79-80 by the M-Code routine CBRT ( cf "A few M-Code routines for the HP41" )
2°) Quartic Equations
-"P4" solves the equation x4+a.x3+b.x2+c.x+d = 0
Data Registers: R00 thru R05: temp
Flags: F01 F02
Subroutines: /
01 LBL "P4" 02 CF 01 03 STO 04 04 X<>Y 05 STO 03 06 R^ 07 STO 01 08 * 09 X<>Y 10 4 11 * 12 - 13 STO 00 14 X<>Y 15 STO 02 16 4 17 * 18 RCL 01 19 X^2 20 - 21 RCL 04 22 * 23 RCL 03 24 X^2 25 - 26 27 |
27 * 28 RCL 02 29 X^2 30 ST+ X 31 RCL 00 32 9 33 * 34 - 35 RCL 02 36 * 37 - 38 STO 05 39 X^2 40 RCL 02 41 X^2 42 RCL 00 43 3 44 * 45 - 46 STO 00 47 3 48 Y^X 49 4 50 * 51 X<Y? 52 GTO 00 |
53 DEG 54 X#0? 55 / 56 SQRT 57 RCL 05 58 SIGN 59 CHS 60 * 61 ACOS 62 3 63 / 64 COS 65 RCL 00 66 SQRT 67 ST+ X 68 * 69 GTO 01 70 LBL 03 71 STO 02 72 LASTX 73 X=0? 74 SIGN 75 / 76 ABS 77 E-8 78 X<Y? |
79 GTO 03 80 CLX 81 STO 02 82 LBL 03 83 RCL 02 84 SQRT 85 RTN 86 LBL 02 87 CF 02 88 2 89 / 90 CHS 91 ENTER 92 X^2 93 RCL Z 94 - 95 X<0? 96 GTO 02 97 SQRT 98 RCL Y 99 SIGN 100 * 101 + 102 X#0? 103 ST/ Y 104 RTN |
105 LBL 02 106 CHS 107 SQRT 108 X<>Y 109 SF 02 110 RTN 111 LBL 00 112 - 113 SQRT 114 RCL 05 115 ABS 116 + 117 2 118 / 119 3 120 1/X 121 Y^X 122 RCL 05 123 SIGN 124 CHS 125 * 126 RCL 00 127 RCL Y 128 / 129 + |
130 LBL 01 131 RCL 02 132 + 133 3 134 / 135 STO 00 136 RCL 02 137 - 138 RCL 01 139 2 140 ST/ 00 141 ST/ 01 142 ST/ 03 143 / 144 X^2 145 + 146 XEQ 03 147 STO 05 148 RCL 00 149 X^2 150 RCL 04 151 - 152 XEQ 03 153 RCL 00 154 RCL 01 |
155 * 156 RCL 03 157 - 158 SIGN 159 * 160 RCL 00 161 X<>Y 162 ST- 00 163 + 164 RCL 01 165 RCL 05 166 ST- 01 167 + 168 XEQ 02 169 FS? 02 170 SF 01 171 STO 03 172 X<>Y 173 STO 04 174 RCL 00 175 RCL 01 176 XEQ 02 177 RCL 04 178 RCL 03 179 END |
( 217 bytes / SIZE 006 )
STACK | INPUTS | OUTPUTS |
T | a | t |
Z | b | z |
Y | c | y |
X | d | x |
-If CF 01 & CF 02 the 4 solutions are x ; y ; z ; t
-If SF 01 & CF 02 the 4 solutions are x+i.y ; x-i.y ; z ; t
-If CF 01 & SF 02 the 4 solutions are x ; y ; z+i.t ; z-i.t
-If SF 01 & SF 02 the 4 solutions are x+i.y ; x-i.y ; z+i.t ; z-i.t
Example1: Solve x4-2.x3-35.x2+36.x+180 = 0
-2 ENTER^
-35 ENTER^
36 ENTER^
180 XEQ "P4" >>>>
-5 RDN -2 RDN 6 RDN
3 Flags F01 & F02 are clear , the 4 solutions
are -5 ; -2 ; 6 ; 3
Example2: Solve x4-5.x3+11.x2-189.x+522 = 0
-5 ENTER^
11
ENTER^
-189 ENTER^
522
R/S >>>> -2 RDN
5 RDN 6 RDN 3 Flag
F01 is set & F02 is clear , the 4 solutions are -2+5.i
; -2-5.i ; 6 ; 3
Example3: Solve x4-8.x3+26.x2-168.x+1305 = 0
-8 ENTER^26 ENTER^
-168 ENTER^
1305 R/S >>>> -2 RDN 5 RDN 6 RDN 3 Flags F01 & F02 are set , the 4 solutions are -2+5.i ; -2-5.i ; 6+3.i ; 6-3.i
Example4: Solve x4 + 2.x3+ 5.x2 + 4.x+ 4 = 0
2 ENTER^
5 ENTER^
4 ENTER^ R/S >>>> -0.5 RDN 1.322875656 RDN -0.5 RDN 1.322875656 Flags F01 & F02 are set , the 4 solutions are -0.5 +/- 1.322875656 i , -0.5 +/- 1.322875656 i
Notes:
-It's better to replace lines 119-120-121 by the M-Code routine CBRT ( cf "A few M-Code routines for the HP41" )
-LBL 03 avoids a small negative number ( instead of 0 ) that would produce a DATAERROR with SQRT
-We can also delete LBL 03 ( lines 70 to 85 ) after replacing lines 152 & 146 by 0? SQRT where 0? is the following M-Code routine:
0BF "?"
030 "0"
2A0 SETDEC
0F8 C=X
10E A=C ALL
138 C=L
2EE ?C#0
01F JC+03
0AE A<>C ALL
01B JNC+03
261 C=
060 A/C
05E C=|C|
10E A=C ALL
04E C
2BE
35C
050 =
21C
250
250
090 -1 10^(-8)
01D C=
060 A+C
2FE ?C<0?
3A0 ?NC RTN
04E C=0
0E8 X=C
3E0 RTN
3°) Palindromic Polynomials
a) Degree
= 4
-Palindromic polynomials are p(x) = an.xn+an-1.xn-1+ ... + a1.x+a0 with an = a0 , an-1 = a1 , an-2 = a2 and so on ......
"PAL4" solves x4 + a x3 + b x2 + a x + 1 = 0 we use x + 1/x = y it becomes a quadratic equation.
Data Registers: R00: unused R01 thru R04 = roots
Flags: F01 F02
Subroutines: /
01 LBL "PAL4" 02 CF 01 03 CF 02 04 2 05 ST/ Z 06 - 07 X<>Y 08 CHS 09 ENTER 10 X^2 11 RCL Z 12 - 13 X<0? 14 GTO 02 15 SQRT 16 RCL Y 17 SIGN 18 * 19 + 20 X#0? 21 ST/ Y 22 2 |
23 ST/ Z 24 / 25 STO 03 26 X<>Y 27 STO 01 28 X^2 29 1 30 - 31 X<0? 32 GTO 00 33 SQRT 34 RCL 01 35 SIGN 36 * 37 RCL 01 38 + 39 STO 01 40 1/X 41 STO 02 42 GTO 01 43 LBL 00 44 CHS |
45 SQRT 46 STO 02 47 SF 01 48 LBL 01 49 RCL 03 50 X^2 51 1 52 - 53 X<0? 54 GTO 00 55 SQRT 56 RCL 03 57 SIGN 58 * 59 RCL 03 60 + 61 STO 03 62 1/X 63 STO 04 64 GTO 03 65 LBL 00 66 CHS |
67 SQRT 68 STO 04 69 SF 02 70 GTO 03 71 LBL 02 72 CHS 73 SQRT 74 2 75 ST/ Z 76 / 77 STO 02 78 STO 04 79 X<>Y 80 STO 01 81 STO 03 82 R-P 83 X^2 84 X<>Y 85 ST+ X 86 X<>Y 87 P-R 88 1 |
89 - 90 R-P 91 SQRT 92 X<>Y 93 2 94 / 95 X<>Y 96 P-R 97 ST+ 01 98 ST- 03 99 X<>Y 100 ST+ 02 101 ST- 04 102 SF 01 103 SF 02 104 LBL 03 105 RCL 04 106 RCL 03 107 RCL 02 108 RCL 01 109 END |
( 141 bytes / SIZE 005 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | a | y |
X | b | x |
-If CF 01 & CF 02 the 4 solutions are x ; y ; z ; t
-If SF 01 & CF 02 the 4 solutions are x+i.y ; x-i.y ; z ; t
-If CF 01 & SF 02 the 4 solutions are x ; y ; z+i.t ; z-i.t
-If SF 01 & SF 02 the 4 solutions are x+i.y ; x-i.y ; z+i.t ; z-i.t
Example: x4 + 4 x3 - 7 x2 + 4 x + 1 = 0
4 ENTER^
-7 XEQ "PAL4" >>>> 0.802775638 = R01
RDN 0.596281205 = R02
RDN -5.421086406 = R03
RDN -0.184464870 = R04
-F01 is set & F02 is clear, so the solutions are 0.802775638 +/- 0.596281205 i ; -5.421086406 ; -0.184464870
b) Degree = 5
"PAL5" solves p(x) = x5 + a x4 + b x3 + b x2 + a x + 1 = 0
(-1) is always a root, so we can divide p by (x+1) thus p(x) = (x+1) q(x) where q(x) is a palindromic polynomial of degree 4
Data Registers: R00: unused R01 thru R04 = roots R05 = -1
Flags: F01 F02
Subroutine: "PAL4"
01 LBL "PAL5" 02 RCL Y 03 - 04 1 05 CHS 06 STO 05 07 ST+ Z 08 - 09 XEQ "PAL4" 10 END |
( 26 bytes / SIZE 006 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | a | y |
X | b | x |
-If CF 01 & CF 02 the 4 solutions are x ; y ; z ; t
-If SF 01 & CF 02 the 4 solutions are x+i.y ; x-i.y ; z ; t and the 5th root = -1 = R05
-If CF 01 & SF 02 the 4 solutions are x ; y ; z+i.t ; z-i.t
-If SF 01 & SF 02 the 4 solutions are x+i.y ; x-i.y ; z+i.t ; z-i.t
Example: x5 + 4 x4 -7 x3 - 7 x2 + 4 x + 1 = 0
4 ENTER^
-7 XEQ "PAL5" >>>> 1.679502968 = R01
RDN 0.595414250 = R02
RDN -5.077988862 = R03
RDN -0.196928356 = R04
-Since F01 & F02 are clear, these numbers are the first 4 roots and the 5th root = -1 is stored in R05
c) Degree = 6
"PAL6" solves p(x) = x6 + a x5 + b x4 + c x3 + b x2 + a x + 1 = 0 with x + 1/x = y , it becomes a cubic equation.
Data Registers: R00: temp R01 thru R06 = roots
Flags: F01 F02 F03
Subroutine: "P3"
01 LBL "PAL6" 02 RCL Z 03 ST+ X 04 - 05 X<>Y 06 3 07 - 08 X<>Y 09 1 10 RDN 11 XEQ "P3" 12 CF 02 13 CF 03 14 2 15 ST/ T 16 ST/ Z 17 / 18 STO 05 19 RDN 20 FS?C 01 21 GTO 02 22 STO 03 23 X<>Y 24 STO 01 25 X^2 |
26 1 27 - 28 X<0? 29 GTO 00 30 SQRT 31 RCL 01 32 SIGN 33 * 34 RCL 01 35 + 36 STO 01 37 1/X 38 STO 02 39 GTO 01 40 LBL 00 41 CHS 42 SQRT 43 STO 02 44 SF 01 45 LBL 01 46 RCL 03 47 X^2 48 1 49 - 50 X<0? |
51 GTO 00 52 SQRT 53 RCL 03 54 SIGN 55 * 56 RCL 03 57 + 58 STO 03 59 1/X 60 STO 04 61 GTO 03 62 LBL 00 63 CHS 64 SQRT 65 STO 04 66 SF 02 67 GTO 03 68 LBL 02 69 STO 01 70 STO 03 71 X<>Y 72 STO 02 73 STO 04 74 X<>Y 75 R-P |
76 X^2 77 X<>Y 78 ST+ X 79 X<>Y 80 P-R 81 1 82 - 83 R-P 84 SQRT 85 X<>Y 86 2 87 / 88 X<>Y 89 P-R 90 ST+ 01 91 ST- 03 92 X<>Y 93 ST+ 02 94 ST- 04 95 SF 01 96 SF 02 97 LBL 03 98 RCL 05 99 X^2 100 1 |
101 - 102 X<0? 103 GTO 00 104 SQRT 105 RCL 05 106 SIGN 107 * 108 RCL 05 109 + 110 STO 05 111 1/X 112 STO 06 113 GTO 01 114 LBL 00 115 CHS 116 SQRT 117 STO 06 118 SF 03 119 LBL 01 120 RCL 04 121 RCL 03 122 RCL 02 123 RCL 01 124 END |
( 161 bytes / SIZE 007 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | a | z |
Y | b | y |
X | c | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-If CF 03 the last 2 roots are u ; v u , v = R05 R06
-If SF 03 the last 2 roots are u+i.v ; u-i.v
Example: x6 + 2 x5 - 4 x4 + 3 x3 - 4 x2 + 2 x + 1 = 0
2 ENTER^
-4 ENTER^
3 XEQ "PAL6" >>>> -3.495175097 = R01
RDN -0.286108699 = R02
RDN -0.068902601 = R03
RDN 0.997623392 = R04
and R05 = 0.959544499 & R06 = 0.281557020 we have CF 01 SF 02 & SF 03
-So the 6 roots are -3.495175097 ; -0.286108699 ; -0.068902601 +/- 0.997623392 i ; 0.959544499 +/- 0.281557020 i
d) Degree = 7
-Like all the palindromic polynomials with an odd degree, -1 is a root
-So, there is a ploynomial q such that (x) = ( x + 1 ) q(x) and deg q = -1 + deg p
-Thus "PAL7" calls "PAL6" as a subroutine
Data Registers: R00: temp R01 thru R06 = roots R07 = -1
Flags: F01 F02 F03
Subroutine: "PAL6"
01 LBL "PAL7" 02 RCL Z 03 1 04 CHS 05 STO 07 06 + 07 R^ 08 RCL Y 09 - 10 R^ 11 RCL Y 12 - 13 XEQ "PAL6" 14 END |
( 31 bytes / SIZE 008 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | a | z |
Y | b | y |
X | c | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-If CF 03 the 3rd 2 roots are u ; v u , v = R05 R06 and R07 = -1
-If SF 03 the 3rd 2 roots are u+i.v ; u-i.v
Example: x7 + 2 x6 - 4 x5 + 3 x4 + 3 x3 - 4 x2 + 2 x + 1 = 0
2 ENTER^
-4 ENTER^
3 XEQ "PAL7" >>>> -3.346973965 = R01
RDN -0.298777347 = R02
RDN 0.500000000 = R03
RDN 0.866025404 = R04
and R05 = 0.822875656 & R06 = 0.568221485 & R07 = -1 we have CF 01 SF 02 & SF 03
-So the 7 roots are -3.346973965 ; -0.298777347 ; 0.5 +/- 0.866025404 i ; 0.822875656 +/- 0.568221485 i ; -1
e) Degree = 8
"PAL8" solves p(x) = x8 + a x7 + b x6 + c x5 + d x4 + c x3 + b x2 + a x + 1 = 0 with x + 1/x = y , it becomes a quartic equation.
Data Registers: R00: temp R01 thru R08:
roots
Flags: F01 F02 F03 F04
Subroutine: "P4"
01 LBL "PAL8" 02 CF 03 03 CF 04 04 STO 00 05 RDN 06 STO 01 07 CLX 08 SIGN 09 - 10 ST- 00 11 ST- 00 12 3 13 - 14 RCL Y 15 LASTX 16 * 17 CHS 18 RCL 01 19 + 20 RCL 00 21 XEQ "P4" 22 STO 01 23 RDN 24 STO 03 25 CLX |
26 2 27 ST/ 01 28 ST/ 03 29 ST/ Z 30 / 31 FS?C 02 32 GTO 02 33 STO 07 34 X<>Y 35 STO 05 36 X^2 37 1 38 - 39 X<0? 40 GTO 00 41 SQRT 42 RCL 05 43 SIGN 44 * 45 RCL 05 46 + 47 STO 05 48 1/X 49 STO 06 50 GTO 01 |
51 LBL 04 52 R-P 53 X^2 54 X<>Y 55 ST+ X 56 X<>Y 57 P-R 58 1 59 - 60 R-P 61 SQRT 62 X<>Y 63 2 64 / 65 X<>Y 66 P-R 67 RTN 68 LBL 00 69 CHS 70 SQRT 71 STO 06 72 SF 03 73 LBL 01 74 RCL 07 75 X^2 |
76 1 77 - 78 X<0? 79 GTO 00 80 SQRT 81 RCL 07 82 SIGN 83 * 84 RCL 07 85 + 86 STO 07 87 1/X 88 STO 08 89 GTO 03 90 LBL 00 91 CHS 92 SQRT 93 STO 08 94 SF 04 95 GTO 03 96 LBL 02 97 STO 05 98 STO 07 99 X<>Y 100 STO 06 |
101 STO 08 102 X<>Y 103 XEQ 04 104 ST+ 05 105 ST- 07 106 X<>Y 107 ST+ 06 108 ST- 08 109 SF 03 110 SF 04 111 LBL 03 112 FS?C 01 113 GTO 02 114 RCL 01 115 X^2 116 1 117 - 118 X<0? 119 GTO 00 120 SQRT 121 RCL 01 122 SIGN 123 * 124 RCL 01 125 + |
126 STO 01 127 1/X 128 STO 02 129 GTO 01 130 LBL 00 131 CHS 132 SQRT 133 STO 02 134 SF 01 135 LBL 01 136 RCL 03 137 X^2 138 1 139 - 140 X<0? 141 GTO 00 142 SQRT 143 RCL 03 144 SIGN 145 * 146 RCL 03 147 + 148 STO 03 149 1/X 150 STO 04 151 GTO 03 |
152 LBL 00 153 CHS 154 SQRT 155 STO 04 156 SF 02 157 GTO 03 158 LBL 02 159 RCL 03 160 STO 02 161 STO 04 162 RCL 01 163 STO 03 164 XEQ 04 165 ST+ 01 166 ST- 03 167 X<>Y 168 ST+ 02 169 ST- 04 170 SF 01 171 SF 02 172 LBL 03 173 RCL 04 174 RCL 03 175 RCL 02 176 RCL 01 177 END |
( 232 bytes / SIZE 009 )
STACK | INPUTS | OUTPUTS |
T | a | t |
Z | b | z |
Y | c | y |
X | d | x |
-If CF 01 the first roots are x ; y
-If SF 01 the first roots are x+i.y ; x-i.y
-If CF 02 the 2nd roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd roots are z+i.t ; z-i.t
-If CF 03 the 3rd roots are u ; v u , v = R05 R06 w , r = R07 R08
-If SF 03 the 3rd roots are u+i.v ; u-i.v
-If CF 04 the last roots are w ; r
-If SF 04 the last roots are w+i.r ; w-i.r
Example: x8 + 2 x7 - 4 x6 + 3 x5 + 7 x4 + 3 x3 - 4 x2 + 2 x + 1 = 0
2 ENTER^
-4 ENTER^
3 ENTER^
7 XEQ "PAL8" >>>> -3.321130852 = R01
RDN -0.301102258 = R02
RDN -0.792609764 = R03
RDN 0.609729254 = R04
and R05 = 1.134460522 R06 = 1.063259900 R07 = 0.469265796 R08 = -0.439813897
-Since we have CF 01 SF 02 SF 03 SF 04 the 8 roots are:
-3.321130852 ; -0.301102258 ; -0.792609764 +/- 0.609729254 i ; 1.134460522 +/- 1.063259900 i ; 0.469265796 +/- 0.439813897 i
f) Degree = 9
-1 is always a root of p(x) = x9 + a x8 + b x7 + c x6 + d x5 + d x4 + c x3 + b x2 + a x + 1 = 0 so p(x) = ( x + 1 ) q(x) with deg q = 8 & q palindromic too.
"PAL9" calls "PAL8" as a subroutine.
Data Registers: R00: temp R01 thru R08 = roots R09 = -1
Flags: F01 F02 F03 F04
Subroutine: "PAL8"
01 LBL "PAL9" 02 STO 00 03 RDN 04 STO 01 05 CLX 06 RCL Z 07 - 08 ST- 01 09 RCL 01 10 ST- 00 11 1 12 CHS 13 STO 09 14 ST+ T 15 ST- Z 16 ST+ Y 17 ST- 00 18 X<> 00 19 XEQ "PAL8" 20 END |
( 42 bytes / SIZE 010 )
STACK | INPUTS | OUTPUTS |
T | a | t |
Z | b | z |
Y | c | y |
X | d | x |
-If CF 01 the first roots are x ; y
-If SF 01 the first roots are x+i.y ; x-i.y
-If CF 02 the 2nd roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd roots are z+i.t ; z-i.t
-If CF 03 the 3rd roots are u ; v u , v = R05 R06 w , r = R07 R08 R09 = -1
-If SF 03 the 3rd roots are u+i.v ; u-i.v
-If CF 04 the last roots are w ; r
-If SF 04 the last roots are w+i.r ; w-i.r
Example: x9 + 2 x8 - 4 x7 + 3 x6 + 7 x5 + 7 x4 + 3 x3 - 4 x2 + 2 x + 1 = 0
2 ENTER^
-4 ENTER^
3 ENTER^
7 XEQ "PAL9" >>>> -3.328907873 = R01
RDN -0.300398821 = R02
RDN -0.428871616 = R03
RDN 0.903365450 = R04
and R05 = 1.289363998 R06 = 1.084685542 R07 = 0.454160965 R08 = -0.382065757 R09 = -1
-Since we have CF 01 SF 02 SF 03 SF 04 the 9 roots are:
-3.328907873 ; -0.300398821 ; -0.428871616 +/- 0.903365450 i ; 1.289363998 +/- 1.084685542 i ; 0.454160965 +/- 0.382065757 i ; -1
4°) Integer Roots
a) Real Roots
-We assume the polynomial p(x) = an.xn+an-1.xn-1+ ... + a1.x+a0 ( a0 # 0 ) has integer coefficients and integer roots
Data Registers: R00 .... R04: temp ( Registers Rbb thru Ree are to be initialized before executing "IROOT" )
• Rbb = an • Rbb+1 = an-1 , ........ , • Ree = a0 ( bb > 04 )
Flag: F10
Subroutines: /
01 LBL "IROOT" 02 CF 10 03 STO 00 04 STO 04 05 FRC 06 E3 07 * 08 RCL 00 09 INT 10 - 11 1 12 STO 01 13 - 14 STO 03 15 GTO 03 16 LBL 00 |
17 RCL 00 18 RCL 01 19 0 20 LBL 01 21 RCL Y 22 * 23 RCL IND Z 24 + 25 ISG Z 26 GTO 01 27 X#0? 28 RTN 29 E-3 30 ST- 00 31 RCL 00 32 STO 02 |
33 CLX 34 DSE 03 35 LBL 02 36 RCL 01 37 * 38 ST+ IND 02 39 RCL IND 02 40 ISG 02 41 GTO 02 42 RCL 01 43 STO IND 02 44 SF 10 45 RTN 46 LBL 03 47 RCL 03 48 X=0? |
49 GTO 05 50 XEQ 00 51 FS?C 10 52 GTO 03 53 RCL 01 54 CHS 55 STO 01 56 LBL 04 57 RCL 03 58 X=0? 59 GTO 05 60 XEQ 00 61 FS?C 10 62 GTO 04 63 1 64 RCL 01 |
65 - 66 STO 01 67 GTO 03 68 LBL 05 69 SIGN 70 RCL 00 71 + 72 RCL IND X 73 RCL IND L 74 / 75 CHS 76 STO IND Y 77 RCL 04 78 ISG X 79 END |
( 121 bytes / SIZE ??? )
STACK | INPUTS | OUTPUTS |
Y | / | Rbb+1 |
X | bbb.eee | 1+bbb.eee |
( with bbb > 004 )
Example: p(x) = x5 - 64 x3 - 66 x2 + 927 x + 1890 = 0
-If you choose bbb = 011 1 STO 11 0 STO 12 -64 STO 13 -66 STO 14 927 STO 15 1890 STO 16
11.016 XEQ "IROOT" >>>> 12.016 ---Execution time = 26s---
X<>Y 7 = R12
R12 = 7 R13 = -6 R14 = 5 R15 = -3 R16 = -3
-Thus, p(x) = ( x - 7 ) ( x+6 ) ( x - 5 ) ( x + 3 )2
Notes:
-In fact, the last root ( stored in Rbb+1 ) might be non-integer.
-The precision is exact, provided the calculations do not involve numbers > 1010
-Of course, this program is slow if the roots are very large...
b) Complex Roots
-The same method is used by "IRZ" to comput the complex roots ( Gaussian integers ) of a polynomial
p(z) = cn zn + cn-1 zn-1 + .................. + c1 z + c0 with ck = ak + i.bk where ak & bk are integers ( c0 # 0 )
Data Registers: R00 .... R09: temp ( Registers Rbb thru Ree are to be initialized before executing "IRZ" )
• Rbb = an • Rbb+1 = bn , ........ , • Ree-1 = a0 • Ree= b0 ( bb > 09 )
Flag: F10
Subroutines: /
01 LBL "IRZ" 02 CF 10 03 STO 00 04 STO 03 05 FRC 06 3 07 10^X 08 * 09 RCL 00 10 INT 11 - 12 3 13 - 14 2 15 STO 08 16 / 17 STO 04 18 GTO 03 19 LBL 00 20 RCL 00 21 STO 05 22 CLST 23 LBL 01 24 STO 06 25 RCL 02 26 * 27 X<>Y 28 STO 07 |
29 RCL 01 30 * 31 + 32 RCL 01 33 RCL 06 34 * 35 RCL 02 36 RCL 07 37 * 38 - 39 RCL IND 05 40 + 41 X<>Y 42 ISG 05 43 RCL IND 05 44 + 45 X<>Y 46 ISG 05 47 GTO 01 48 X=0? 49 X#Y? 50 RTN 51 2 E-3 52 ST- 00 53 RCL 00 54 STO 05 55 CLST 56 DSE 04 |
57 LBL 02 58 STO 06 59 RCL 01 60 * 61 X<>Y 62 STO 07 63 RCL 02 64 * 65 - 66 RCL IND 05 67 + 68 STO IND 05 69 RCL 02 70 RCL 06 71 * 72 RCL 01 73 RCL 07 74 * 75 + 76 ISG 05 77 RCL IND 05 78 + 79 STO IND 05 80 X<>Y 81 ISG 05 82 GTO 02 83 RCL 01 84 STO IND 05 |
85 ISG 05 86 CLX 87 RCL 02 88 STO IND 05 89 SF 10 90 RTN 91 LBL 03 92 RCL 08 93 STO 09 94 DSE X 95 STO 01 96 CLX 97 STO 02 98 LBL 04 99 RCL 04 100 X=0? 101 GTO 09 102 XEQ 00 103 FS?C 10 104 GTO 04 105 RCL 02 106 X=0? 107 GTO 08 108 CHS 109 STO 02 110 LBL 05 111 RCL 04 112 X=0? |
113 GTO 09 114 XEQ 00 115 FS?C 10 116 GTO 05 117 LBL 08 118 RCL 01 119 X=0? 120 GTO 08 121 CHS 122 STO 01 123 LBL 06 124 RCL 04 125 X=0? 126 GTO 09 127 XEQ 00 128 FS?C 10 129 GTO 06 130 RCL 02 131 X=0? 132 GTO 08 133 CHS 134 STO 02 135 LBL 07 136 RCL 04 137 X=0? 138 GTO 09 139 XEQ 00 140 FS?C 10 |
141 GTO 07 142 LBL 08 143 RCL 01 144 ABS 145 STO 01 146 SIGN 147 ST- 01 148 ST+ 02 149 DSE 09 150 GTO 04 151 ST+ 08 152 GTO 03 153 LBL 09 154 RCL 03 155 ISG X 156 RCL IND X 157 STO 04 158 ISG Y 159 RCL IND Y 160 STO 05 161 * 162 ISG Y 163 RCL IND Y 164 STO 06 165 RCL IND 03 166 STO 07 167 * 168 - |
169 RCL 05 170 RCL 07 171 * 172 RCL 04 173 RCL 06 174 * 175 + 176 CHS 177 RCL 04 178 X^2 179 RCL 07 180 X^2 181 + 182 ST/ Z 183 / 184 2 185 ST+ 03 186 RDN 187 STO IND 03 188 ISG 03 189 X<>Y 190 STO IND 03 191 X<>Y 192 RCL 03 193 1 194 - 195 END |
( 268 bytes / SIZE ??? )
STACK | INPUTS | OUTPUTS |
Z |
/ |
Rbb+3 |
Y | / | Rbb+2 |
X | bbb.eee | 2+bbb.eee |
( with bbb > 009 )
Example: p(x) = (2+3.i) z5 + (34-27.i) z4 + (-122-66.i) z3 + (738-466.i) z2 + (-4080-3065.i) z + (-5100+6325.i) = 0
-If you choose bbb = 011
2 STO 11 34 STO 13 -122 STO 15 738 STO 17 -4080 STO 19 -5100 STO 21
3 STO 12 -27 STO 14 -66 STO 16 -466 STO 18 -3065 STO 20 6325 STO 22
11.022 XEQ "IRZ" >>>> 13.022 ---Execution time = 6m45s---
RDN -4
RDN 7
-And we have R13 = -4 R14 = 7 R15 = 3 R16 = 4 R17 = 3 R18 = 4 R19 = 0 R20 = -5 R20 = -1 R21 = 2
-Thus, p(z) = ( 2 + 3.i ) ( z + 4 - 7.i ) ( z - 3 - 4.i )2 ( z + 5.i ) ( z + 1 - 2.i )
Notes:
-In fact, the last root ( stored in Rbb+2 & Rbb+3 ) might be non-integer.
-The precision is exact, provided the calculations do not involve numbers > 1010
-Of course, this program is very slow if the roots are very large...
5°) A Few Quintic Equations
a) Program#1
-We have Sinh 5y = 16 Sinh5 y + 20 Sinh3 y + 5 Sinh y
and Sin 5y = 16 Sin5 y - 20 Sin3 y + 5 Sin y
-So, we can use these formulae to solve x5 + 5 k x3 + 5 k2 x + A = 0
Data Registers: R00 thru R06: temp R05 = 5th root
Flags: F01 F02
Subroutine: "P4"
01 LBL "P5" 02 CF 01 03 CF 02 04 CHS 05 X<>Y 06 STO 01 07 X<0? 08 GTO 00 09 X#0? 10 GTO 01 11 X<>Y 12 SIGN 13 LASTX 14 ABS 15 5 16 1/X 17 Y^X 18 * 19 GTO 03 20 LBL 00 21 CHS 22 X^2 23 LASTX 24 SQRT 25 ST+ X 26 STO 00 27 * 28 / 29 ABS |
30 1 31 X<Y? 32 GTO 02 33 DEG 34 LASTX 35 ASIN 36 5 37 / 38 SIN 39 STO 05 40 LASTX 41 72 42 STO 01 43 + 44 SIN 45 STO 04 46 LASTX 47 RCL 01 48 + 49 SIN 50 STO 03 51 LASTX 52 RCL 01 53 + 54 SIN 55 STO 02 56 LASTX 57 RCL 01 58 + |
59 SIN 60 RCL 00 61 ST* 02 62 ST* 03 63 ST* 04 64 ST* 05 65 * 66 STO 01 67 RCL 04 68 RCL 03 69 RCL 02 70 RCL 01 71 GTO 04 72 LBL 01 73 X^2 74 LASTX 75 SQRT 76 STO T 77 ST+ X 78 * 79 / 80 ENTER 81 X^2 82 1 83 + 84 SQRT 85 + 86 LN 87 5 |
88 / 89 E^X-1 90 LASTX 91 CHS 92 E^X-1 93 - 94 * 95 GTO 03 96 LBL 02 97 X<> L 98 SIGN 99 X<>Y 100 LASTX 101 X^2 102 1 103 - 104 SQRT 105 + 106 LN 107 5 108 / 109 E^X 110 ENTER 111 1/X 112 + 113 * 114 RCL 01 115 CHS 116 SQRT |
117 * 118 LBL 03 119 STO 06 120 RCL 01 121 X^2 122 5 123 * 124 STO 05 125 X<>Y 126 X^2 127 RCL 01 128 5 129 * 130 + 131 STO Y 132 RCL 06 133 * 134 RCL X 135 LASTX 136 * 137 RCL 05 138 + 139 RCL 06 140 RDN 141 XEQ "P4" 142 STO 05 143 X<> 06 144 X<> 05 145 LBL 04 146 END |
( 177 bytes / SIZE 007 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | k | y |
X | A | x |
-If CF 01 & CF 02 the 4 solutions are x ; y ; z ; t
-If SF 01 & CF 02 the 4 solutions are x+i.y ; x-i.y ; z ; t and the 5th root R05 = u
-If CF 01 & SF 02 the 4 solutions are x ; y ; z+i.t ; z-i.t
-If SF 01 & SF 02 the 4 solutions are x+i.y ; x-i.y ; z+i.t ; z-i.t
Example1: x5 - 15 x3 + 45 x + 4 = 0 ( k = -3 , A = 4 )
-3 ENTER^
4 XEQ "P5" >>>> -3.321006904
RDN -1.963370398
RDN 2.107577266
RDN 3.265924783 and R05 = -0.089124743
-Since we have CF 01 & CF 02, these 5 numbers are the 5 roots of this quintic equation
Example2: x5 + 15 x3 + 45 x + 100 = 0 ( k = 3 , A = 100 )
3 ENTER^
100 XEQ "P5" >>>> -0.412527941
RDN 3.530731294
RDN 1.080012167
RDN 2.182111936 and R05 = -1.334968451
-We have SF 01 & SF 02 , so the 5 roots are: -0.412527941 +/- 3.530731294 i ; 1.080012167 +/- 2.182111936 i ; -1.334968451
b) Program#2
-The following program solves x5 + A x3 + a x2 + b x + c = 0 IF A = c / a + a b / c
Data Registers: R00 thru R07: temp
Flags: F00 F01
Subroutine: "P3"
01 LBL "P5" 02 CF 00 03 RCL Z 04 / 05 STO 06 06 STO 07 07 / 08 ST+ 06 09 0 10 X<> Z 11 1 12 RDN 13 XEQ "P3" 14 RCL 07 15 X>0? 16 SF 00 17 ABS 18 SQRT 19 END |
( 34 bytes / SIZE 008 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | a | z |
Y | b | y |
X | c | x |
-If CF 00 & CF 01 the 5 solutions are x ; -x ; y ; z ; t
-If SF 00 & CF 01 the 5 solutions are i.x ; -i.x ; y ; z ; t
-If CF 00 & SF 01 the 5 solutions are x ; -x ; y ; z+i.t ; z-i.t
-If SF 00 & SF 01 the 5 solutions are i.x ; -i.x ; y ; z+i.t ; z-i.t
Example: x5 + A x3 + 3 x2 + 4 x - 9 = 0 with A = - 13/3
3 ENTER^
4 ENTER^
-9 XEQ "P5" >>>> 1.732050808
RDN -1.746676973
RDN 0.873338487
RDN -0.977152498
- CF 00 & SF 01 so the 5 roots are 1.732050808 ; -1.732050808 ; -1.746676973 ; 0.873338487 +/- 0.977152498 i
Notes:
A is calculated and stored in R06. In this example, R06 = A = -4.333333333
-We have solved ( x2 + c/a ) ( x3 + (ab/c) x + a ) = 0
c) Program#3
-The following program solves x5 + A x4 + B x3 + C x2 + D x + E = 0 after rewriting it ( x2 + a x + b ) ( x3 + a x2 + b x + c ) = 0
-You choose B , C , D and "P5" solves an equivalent quartic equation
If the quartic equation has no real root, no result.
If the quartic equation has 2 real roots, , there are 2 solutions.
If the quartic equation has 4 real roots , there are 4 solutions.
-When there is no more solutions, the HP41 displays " END"
Data Registers: R00 thru R17: temp R01 thru R05 = 5 roots R06 = A , R07 = B , R08 = C , R09 = D , R10 = E
Flags: F00 F01 F02
Subroutines: "P2" "P3" "P4"
01 LBL "P5" 02 STO 09 03 RDN 04 STO 08 05 X<>Y 06 STO 07 07 6 08 * 09 CHS 10 X<>Y 11 4 12 * 13 RCL 09 14 LASTX 15 * 16 CHS 17 RCL 07 18 X^2 19 + 20 5 |
21 ST/ T 22 ST/ Z 23 / 24 0 25 RDN 26 XEQ "P4" 27 STO 11 28 RDN 29 STO 12 30 RDN 31 STO 13 32 X<>Y 33 STO 14 34 FS? 01 35 GTO 00 36 RCL 11 37 XEQ 01 38 RCL 12 39 XEQ 01 40 LBL 00 |
41 FS?C 02 42 GTO 00 43 RCL 13 44 XEQ 01 45 RCL 14 46 XEQ 01 47 GTO 00 48 LBL 01 49 STO 06 50 X^2 51 CHS 52 RCL 07 53 + 54 2 55 / 56 STO 15 57 1 58 X<>Y 59 RCL 06 60 X<>Y |
61 XEQ "P2" 62 STO 16 63 X<>Y 64 STO 17 65 RCL 08 66 RCL 07 67 RCL 06 68 * 69 - 70 RCL 06 71 3 72 Y^X 73 + 74 STO 10 75 1 76 RCL 06 77 RCL 15 78 R^ 79 XEQ "P3" 80 STO 05 81 RDN |
82 STO 03 83 X<>Y 84 STO 04 85 RCL 15 86 ST* 10 87 RCL 06 88 ST+ 06 89 RCL 17 90 STO 02 91 X<> 16 92 STO 01 93 RCL 04 94 RCL 03 95 RCL 02 96 RCL 01 97 STOP 98 RTN 99 LBL 00 100 " END" 101 AVIEW 102 END |
( 143 bytes / SIZE 018 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | B | z |
Y | C | y |
X | D | x |
-If CF 00 & CF 01 the 4 roots are x ; y ; z ; t
-If SF 00 & CF 01 the 4 roots are x+i.y ; x-i.y ; z ; t and the 5th root R05 = u
-If CF 00 & SF 01 the 4 roots are x ; y ; z+i.t ; z-i.t
-If SF 00 & SF 01 the 4 roots are x+i.y ; x-i.y ; z+i.t ; z-i.t
Example: x5 + A x4 + 3 x3 + 7 x2 + 6 x + E = 0
3 ENTER^
7 ENTER^
6 XEQ "P5" >>>> 3.052611654
RDN -0.541473338
RDN -0.326247858
RDN 0.552188522 and R05 = 3.163634031
CF 00 & SF 01 so the roots are 3.052611654 ; -0.541473338 ; -0.326247858 +/- 0.552188522 i ; 3.163634031
-The equation is x5 - 5.022276632 x4 + 3 x3 + 7 x2 + 6 x + 2.151028651 = 0 because R06 = A = -5.022276632 & R10 = E = 2.151028651
R/S >>>> -0.500000000
RDN 0.866025405
RDN 0.440619700
RDN -1.569610322 and R05 = -1.881239400
SF 00 & SF 01 so the roots are -0.5 +/- 0.866025405 i ; 0.440619700 +/- 1.569610322 i ; -1.881239400
-The equation is x5 + 2 x4 + 3 x3 + 7 x2 + 6 x + 5 = 0 because R06 = A = 1.999999999 & R10 = E = 5.000000005
R/S >>>> " END" thus, there is nomore solution.
6°) A Few Sextic Equations
"P6" solves x6 + A x4 + B x3 + C x2 + D x + E = 0 if E = B2/4 - ( -C + (D/B)2 )2 / 4 / ( -A + 2D/B )
Data Registers: R00 thru R15: temp R01 thru R06 = 6 roots R11= A , R12 = B , R13 = C , R14 = D , R15 = E
Flags: F01 F02
Subroutine: "P3"
01 LBL "P6" 02 CF 02 03 STO 14 04 RDN 05 STO 13 06 RDN 07 STO 12 08 X<>Y 09 STO 11 10 RCL 14 11 RCL 12 12 / 13 STO 09 14 ST+ X |
15 - 16 STO 08 17 RCL 09 18 X^2 19 RCL 13 20 - 21 2 22 / 23 STO 07 24 X^2 25 X<>Y 26 / 27 RCL 12 28 2 |
29 / 30 STO 10 31 X^2 32 + 33 STO 15 34 RCL 08 35 CHS 36 SQRT 37 ST/ 07 38 STO 08 39 CHS 40 RCL 09 41 RCL 10 42 RCL 07 |
43 - 44 1 45 RDN 46 XEQ "P3" 47 FS? 01 48 SF 02 49 STO 06 50 RDN 51 X<> 10 52 X<>Y 53 X<> 07 54 + 55 1 56 RCL 08 |
57 RCL 09 58 R^ 59 XEQ "P3" 60 STO 05 61 RDN 62 STO 01 63 X<>Y 64 STO 02 65 RCL 07 66 STO 04 67 RCL 10 68 STO 03 69 RCL 02 70 RCL 01 71 END |
( 91 bytes / SIZE 016 )
STACK | INPUTS | OUTPUTS |
T | A | t |
Z | B | z |
Y | C | y |
X | D | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-The last 2 roots are always real u ; v u , v = R05 R06
Example: x6 + x4 - 4 x3 - x2 - 4 x + E = 0
1 ENTER^
-4 ENTER^
-1 ENTER^
-4 XEQ "P6" >>>> -0.771844506
RDN 1.115142508
RDN -0.287371537
RDN 1.349996398 and R05 = 0.543689012 R06 = 1.574743073
SF 01 & SF 02 thus the 6 roots are -0.771844506 +/- 1.115142508 i ; -0.287371537 +/- 1.349996398 i ; 0.543689012 ; 1.574743073
-R15 = E = 3.000000000 so the equation is x6 + x4 - 4 x3 - x2 - 4 x + 3= 0
7°) A Few Septic Equations
a) Program#1
-We have: Sinh 7y = 64 Sinh7 y + 112 Sinh5 y + 56 Sinh3 y + 7 Sinh y and Sin 7y = -64 Sin7 y + 112 Sin5 y - 56 Sin3 y + 7 Sin y
-So we can use these formulae to solve x7 + 7 k x5 + 14 k2 x3 + 7 k3 x + A = 0
Data Registers: R00: temp R01 thru R07 = roots R08: temp
Flags: F01 F02 F03
Subroutine: /
-Lines 19 & 49 are three-byte GTOs
01 LBL "P7" 02 RAD 03 PI 04 ST+ X 05 7 06 / 07 STO 08 08 RDN 09 CF 00 10 CF 01 11 CF 02 12 CF 03 13 CHS 14 X<>Y 15 STO 01 16 X<0? 17 GTO 01 18 X#0? 19 GTO 03 20 X<>Y 21 SIGN 22 LASTX 23 ABS 24 7 25 1/X 26 Y^X 27 * 28 STO 07 29 RCL 08 30 X<>Y 31 P-R 32 STO 01 33 X<>Y |
34 STO 02 35 RCL 08 36 ST+ X 37 ST+ 08 38 RCL 07 39 P-R 40 STO 03 41 X<>Y 42 STO 04 43 RCL 08 44 RCL 07 45 P-R 46 STO 05 47 X<>Y 48 STO 06 49 GTO 05 50 LBL 00 51 RCL 06 52 RCL Y 53 RCL 06 54 E^X 55 P-R 56 R^ 57 CHS 58 R^ 59 CHS 60 E^X 61 P-R 62 CHS 63 X<>Y 64 CHS 65 ST+ T 66 RDN |
67 + 68 FS? 00 69 X<>Y 70 RTN 71 LBL 01 72 CHS 73 ENTER 74 X^2 75 LASTX 76 SQRT 77 ST+ X 78 STO 00 79 * 80 * 81 / 82 ABS 83 1 84 X<Y? 85 GTO 02 86 LASTX 87 ASIN 88 7 89 / 90 SIN 91 STO 07 92 LASTX 93 RCL 08 94 + 95 SIN 96 STO 01 97 LASTX 98 RCL 08 99 + |
100 SIN 101 STO 02 102 LASTX 103 RCL 08 104 + 105 SIN 106 STO 03 107 LASTX 108 RCL 08 109 + 110 SIN 111 STO 04 112 LASTX 113 RCL 08 114 + 115 SIN 116 STO 05 117 LASTX 118 RCL 08 119 + 120 SIN 121 RCL 00 122 CHS 123 ST* 01 124 ST* 02 125 ST* 03 126 ST* 04 127 ST* 05 128 ST* 07 129 * 130 STO 06 131 GTO 06 132 LBL 02 |
133 SF 00 134 X<> L 135 SIGN 136 CHS 137 ST* 00 138 X<>Y 139 ENTER 140 X^2 141 2 142 ST/ 00 143 SIGN 144 - 145 SQRT 146 + 147 PI 148 CHS 149 2 150 / 151 STO 04 152 RDN 153 LN 154 7 155 / 156 STO 06 157 E^X 158 ENTER 159 1/X 160 + 161 CHS 162 GTO 04 163 LBL 03 164 X^2 165 LASTX |
166 ST* Y 167 SQRT 168 STO 00 169 ST+ X 170 * 171 / 172 ENTER 173 X^2 174 0 175 STO 04 176 SIGN 177 + 178 SQRT 179 + 180 LN 181 7 182 / 183 E^X-1 184 LASTX 185 STO 06 186 CHS 187 E^X-1 188 - 189 LBL 04 190 STO 07 191 RCL 04 192 RCL 08 193 + 194 XEQ 00 195 STO 01 196 X<>Y 197 STO 02 198 RCL 08 |
199 ST+ X 200 ST+ 08 201 RCL 04 202 + 203 XEQ 00 204 STO 03 205 X<>Y 206 X<> 04 207 RCL 08 208 + 209 XEQ 00 210 STO 05 211 X<>Y 212 RCL 00 213 ST* 01 214 ST* 02 215 ST* 03 216 ST* 04 217 ST* 05 218 ST* 07 219 * 220 STO 06 221 LBL 05 222 SF 01 223 SF 02 224 SF 03 225 LBL 06 226 DEG 227 CF 00 228 RCL 04 229 RCL 03 230 RCL 02 231 RCL 01 232 END |
( 289 bytes / SIZE 009 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | k | y |
X | A | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-If CF 03 the 3rd 2 roots are u ; v u , v = R05 R06 and R07 = w = the 7th root ( always real )
-If SF 03 the 3rd 2 roots are u+i.v ; u-i.v
Example1: x7 + 49 x5 + 686 x3 + 2401 x - 100 = 0 ( k = 7 , A = -100 )
7 ENTER^
-100 XEQ "P7" >>>> 0.025955070
RDN 4.137191362
RDN -0.009263257
RDN 5.158993245 and R05 = -0.037506163 R06 = 2.295967991 R07 = 0.041628699
SF 01 & SF 02 & SF 03 so the 7 roots are:
0.025955070 +/- 4.137191362 i ; -0.009263257 +/- 5.158993245 i ; -0.037506163 +/- 2.295967991 i ; 0.041628699
Example2: x7 - 49 x5 + 686 x3 - 2401 x + 4 = 0 ( k = -7 , A = 4 )
-7 ENTER^
4 XEQ "P7" >>>> -4.136024417
RDN -5.159204061
RDN -2.297397818
RDN 2.294395841 and R05 = 5.158462634 R06 = 4.138101851 R07 = 0.001665974
-Since we have CF 01 & CF 02 & CF 03 these 7 real numbers are the 7 roots.
b) Program#2
-The following routine solves the equation x7 + A x6 + B x5 + C x4 + D x3 + E x2 + F x + G = 0 if it may be re-written: ( x4 + a x3 + b x + c ) ( x3 + d x + e ) = 0
-You choose A , B , C , D , E
Data Registers: R00 thru R17: temp ( Registers R11 thru R15 are to be initialized before executing "P7" )
R01 thru R07 = 7 roots • R11= A , • R12 = B , • R13 = C , • R14 = D , • R15 = E and when the program stops: R16 = F R17 = G
Flags: F01 F02 F03
Subroutines: "P3" "P4"
01 LBL "P7" 02 CF 03 03 RCL 12 04 RCL 13 05 RCL 11 06 RCL 12 07 * 08 - 09 RCL 15 10 RCL 12 11 / 12 STO 16 |
13 - 14 STO 10 15 ST* 16 16 STO 17 17 1 18 0 19 RDN 20 RDN 21 XEQ "P3" 22 FS? 01 23 SF 03 24 STO 07 |
25 RDN 26 STO 08 27 X<>Y 28 STO 09 29 RCL 11 30 RCL 14 31 RCL 10 32 RCL 11 33 * 34 - 35 STO 00 36 ST* 17 |
37 RCL 15 38 RCL 12 39 ST* 00 40 / 41 RCL 00 42 ST+ 16 43 CLX 44 X<> Z 45 XEQ "P4" 46 STO 01 47 RDN 48 STO 02 |
49 RDN 50 STO 03 51 X<>Y 52 STO 04 53 RCL 08 54 STO 05 55 RCL 09 56 STO 06 57 RCL 04 58 RCL 03 59 RCL 02 60 RCL 01 61 END |
( 85 bytes / SIZE 018 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | / | z |
Y | / | y |
X | / | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-If CF 03 the 3rd 2 roots are u ; v u , v = R05 R06 and R07 = w = the 7th root ( always real )
-If SF 03 the 3rd 2 roots are u+i.v ; u-i.v
Example: x7 + 3 x6 + 2 x5 - 7 x4 + 5 x3 + 4 x2 + F x + G = 0 ( A = 3 , B = 2 , C = -7 , D = 5 , E = 4 )
3 STO 11 -7 STO 13 4 STO 15
2 STO 12 5 STO 14
XEQ "P7" >>>> -2.825275998
RDN 1.404195934
RDN 1.325275998
RDN 1.807422116 and R05 = -1.098545526 R06 = 2.370739719 R07 = 2.197091051
SF 01 & SF 02 & SF 03 so the 7 roots are:
-2.825275998 +/- 1.404195934 i ; 1.325275998 +/- 1.807422116 i ; -1.098545526 +/- 2.370739719 i ; 2.197091051
-And we have R16 = 70 & R17 = -750
-So, we have found the 7 roots of x7 + 3 x6 + 2 x5 - 7 x4 + 5 x3 + 4 x2 + 70 x - 750 = 0
8°) A Few Octic Equations
-The following routine solves the equation x8 + A x4 + B x2 + C x + D = 0 if it may be re-written: ( x4 + a x + b ) ( x4 - a x + c ) = 0
-You choose A , B < 0 & C
Data Registers: R00 thru R15: temp R11= A , R12 = B , R13 = C , R14 = D
R01 thru R08 = 8 roots
Flags: F01 F02 F03 F04
Subroutine: "P4"
01 LBL "P8" 02 CF 03 03 CF 04 04 STO 13 05 RDN 06 STO 12 07 CHS 08 SQRT 09 STO 14 10 X<>Y 11 STO 11 12 * 13 STO 15 |
14 RCL 13 15 ST+ 15 16 - 17 RCL 14 18 ST+ X 19 ST/ 15 20 / 21 STO 08 22 0 23 ENTER 24 ENTER 25 RCL 14 26 R^ |
27 XEQ "P4" 28 FS? 01 29 SF 03 30 FS? 02 31 SF 04 32 STO 09 33 RDN 34 STO 10 35 RDN 36 STO 07 37 X<>Y 38 X<> 08 39 RCL 15 |
40 * 41 X<> 14 42 CHS 43 LASTX 44 0 45 ENTER 46 R^ 47 R^ 48 XEQ "P4" 49 STO 01 50 RDN 51 STO 02 52 RDN |
53 STO 03 54 X<>Y 55 STO 04 56 RCL 10 57 STO 06 58 RCL 09 59 STO 05 60 RCL 04 61 RCL 03 62 RCL 02 63 RCL 01 64 END |
( 88 bytes / SIZE 016 )
STACK | INPUTS | OUTPUTS |
T | / | t |
Z | A | z |
Y | B < 0 | y |
X | C | x |
-If CF 01 the first 2 roots are x ; y
-If SF 01 the first 2 roots are x+i.y ; x-i.y
-If CF 02 the 2nd 2 roots are z ; t x , y , z , t = R01 R02 R03 R04
-If SF 02 the 2nd 2 roots are z+i.t ; z-i.t
-If CF 03 the 3rd 2 roots are u ; v
-If SF 03 the 3rd 2 roots are u+i.v ; u-i.v u , v , w , p = R05 R06 R07 R08
-If CF 04 the last 2 roots are w ; p
-If SF 04 the last 2 roots are w+i.p ; w-i.p
Example: x8 + 4x4 - 9 x2 + 6 x + D = 0
4 ENTER^
-9 ENTER^
6 XEQ "P8" >>>> -0.973561484 = R01
RDN 1.310797213 = R02
RDN 0.973561484 = R03
RDN 0.421253594 = R04
and R05 = -1.307486100 R06 = -0.337666766 R07 = 0.822576433 R08 = 1.260317961
-We have SF 01 SF 02 CF 03 SF 04 thus, the roots are:
-0.973561484 +/- 1.310797213 i ; 0.973561484 +/- 0.421253594 i ; -1.307486100 ; -0.337666766 ; 0.822576433 +/- 1.260317961 i and R14 = 3
-So these numbers are the 8 roots of the equation: x8 + 4x4 - 9 x2 + 6 x + 3 = 0
References:
[1] Abramowitz and Stegun - "Handbook of Mathematical Functions" - Dover Publications - ISBN 0-486-61272-4[2] David J. Wolters - "Tutorial on Analytic Algorithms to Solve Cubic and Quartic Equations"
[3] Raghavendra G. Kulkarni - "Solving certain quintics"
[4] Raghavendra G. Kulkarni - "Solving Sextic Equations"