Bisecting Hyperplanes for the HP-41
Overview
1°) Bisecting Lines
a) Program#1
b) Program#2
2°) Bisecting Hyperplanes
a) Program#1
b) Program#2
-Given 2 hyperplanes,
(H) : a1 x1
+ ........ + an xn + b = 0
(H') : a'1 x1
+ ........ + a'n xn + b' = 0 ,
we seek the set of points that are equidistant from (H) & (H')
-If a12 + ..... + an2 = a'12 + ..... + a'n2 = 1 , ( otherwise, we simply have to normalize the coefficients )
the answer is given by a1 x1 + ........ + an xn + b = +/- ( a'1 x1 + ........ + a'n xn + b' ) which are in general the equations of 2 hyperplanes (H") & (H''')
-We assume that the basis are orthonormal.
1°) Bisecting Lines
a) Program#1
-Though the programs listed in paragraph 2°) could be applied in this
case, simpler routines may be written.
-Here, we suppose that the equations of the straight-lines are expressed in
the slope-intercept form:
(D1) : y = m1 x + p1
, (D2) : y = m1 x + p1
Data Registers: R00 to R04: temp
Flag: F01
Subroutines: /
01 LBL "BISL" 02 CF 01 03 STO 03 04 RDN 05 STO 02 06 RDN 07 STO 01 08 X<>Y 09 STO 00 10 X^2 |
11 1 12 + 13 SQRT 14 ST/ 00 15 ST/ 01 16 1/X 17 STO 04 18 RCL 02 19 X^2 20 1 |
21 + 22 SQRT 23 ST/ 02 24 ST/ 03 25 1/X 26 RCL 01 27 RCL 03 28 ST+ 01 29 - 30 RCL 00 |
31 RCL 02 32 ST+ 00 33 - 34 RCL 04 35 R^ 36 ST+ 04 37 - 38 X=0? 39 SF 01 40 X#0? |
41 ST/ Z 42 X#0? 43 / 44 RCL 01 45 RCL 04 46 ST/ 00 47 / 48 RCL 00 49 END |
( 69 bytes / SIZE 005 )
STACK | INPUTS | OUTPUTS |
T | m1 | p' |
Z | p1 | m' |
Y | m2 | p |
X | p2 | m |
If F01 is set at the end, do not take into account m' and p'
Example: (D1) : y = 3 x + 4 , (D2) : y = -2 x + 1
3 ENTER^
4 ENTER^
-2 ENTER^
1 XEQ "BISL" >>>>
0.071067812
RDN 2.242640687
RDN -14.07106780
RDN -6.242640680
-F01 is clear, so we get 2 lines: (D) : y = 0.071067812
x + 2.242640687
and (D') : y = -14.07106780 x - 6.242640680
Notes:
-If flag F01 is set, i-e if | m1 | = | m2 |
, then "forget" m' & p'
b) Program#2
-Now, the equations of the straight-lines are expressed in the general form:
(D1) : a1 x + b1 y + c1 = 0 , (D2) : a2 x + b2 y + c2 = 0 with ( a1 , b1 ) # ( 0 , 0 ) and ( a2 , b2 ) # ( 0 , 0 )
-The equations of the bisecting lines (D) & (D') replace the
original coefficients in R01 thru R06.
Data Registers: R00 is unused ( Registers R01 thru R06 are to be initialized before executing "BISL" )
• R01 = a1
• R04 = a2
R01 = a
R04 = a'
• R02 = b1
• R05 = b2
and when the program stops: R02 = b
R05 = b'
• R03 = c1
• R06 = c2
R03 = c
R06 = c'
Flags: /
Subroutines: /
01 LBL "BISL" 02 RCL 01 03 RCL 02 04 R-P 05 RCL 04 06 RCL 05 |
07 R-P 08 RCL Z 09 / 10 ST* 01 11 ST* 02 12 ST* 03 |
13 RCL 01 14 RCL 04 15 ST+ 01 16 - 17 STO 04 18 RCL 02 |
19 RCL 05 20 ST+ 02 21 - 22 STO 05 23 RCL 03 24 RCL 06 |
25 ST+ 03 26 - 27 STO 06 28 END |
( 44 bytes / SIZE 007 )
STACK | INPUT | OUTPUT |
X | / | / |
Example: (D1) : 2 x + 9 y + 1 = 0
, (D2) : 6 x + 7 y + 4 = 0
2 STO 01 6 STO 04
9 STO 02 7 STO 05
1 STO 03 4 STO 06 XEQ "BISL"
gives in 2 seconds:
R01 = 8 R04 = -4
R02 = 16 R05 = 2
whence (D) : 8 x + 16 y + 5 = 0 and (D')
: -4 x + 2 y - 3 = 0
R03 = 5 R06 = -3
2°) Bisecting Hyperplanes
a) Program#1
-For planes and hyperplanes, we use the same method.
-First, the equations are supposed to be written in the form:
(H) : xn = a1 x1+ ........ + an-1 xn-1 + b , (H') : xn = a'1 x1 + ........ + a'n-1 xn-1 + b'
-At the end, the equations of the bisecting hyperplanes (H") & (H''')
replace the original coefficients in registers R01 to R2n
Data Registers: • R00 = n ( Registers R00 thru R2n are to be initialized before executing "BISHP" )
• R01 = a1
• Rn+1 = a'1
• R02 = a2
• Rn+2 = a'2
..............
................
• Rn-1 = an-1
• R2n-1 = a'n-1
• Rnn = b
• R2n = b'
Flag: F01
Subroutines: /
01 LBL "BISHP" 02 CF 01 03 RCL 00 04 ENTER^ 05 ST+ Y 06 E3 07 / 08 + 09 ENTER^ 10 ENTER^ 11 SIGN 12 ST- Y 13 LBL 01 14 RCL IND Y 15 X^2 |
16 + 17 DSE Y 18 GTO 01 19 SQRT 20 LBL 02 21 ST/ IND Z 22 DSE Z 23 GTO 02 24 1/X 25 STO M 26 STO N 27 RCL 00 28 RCL 00 29 1 30 ST- Y |
31 LBL 03 32 RCL IND Y 33 X^2 34 + 35 DSE Y 36 GTO 03 37 SQRT 38 LBL 04 39 ST/ IND Z 40 DSE Z 41 GTO 04 42 1/X 43 ST+ M 44 ST- N 45 RCL 00 |
46 ENTER^ 47 ST+ Y 48 LBL 05 49 RCL IND Y 50 RCL IND Y 51 ST- IND T 52 + 53 STO IND Y 54 RDN 55 DSE Y 56 DSE X 57 GTO 05 58 RCL 00 59 ENTER^ 60 ST+ Y |
61 RCL N 62 X=0? 63 SF 01 64 RCL M 65 LBL 06 66 X<>Y 67 X#0? 68 ST/ IND T 69 X<>Y 70 ST/ IND Z 71 DSE T 72 DSE Z 73 GTO 06 74 CLA 75 END |
( 123 bytes / SIZE 2n+1 )
STACK | INPUT | OUTPUT |
X | / | / |
Example: (P) : z = 3 x + y + 25 ,
(P') : z = x/7 - y + 13/7 ( 2 planes in a 3-Dimensional space
)
-We are in a 3-Dimensional space so 3 STO 00
3 STO 01
7 1/X STO 04
1 STO 02
1 CHS STO 05
25 STO 03 13
ENTER 7 / STO 06
XEQ "BISHP" returns in 5 seconds
R01 = 1
R04 = -2
R02 = -0.4
R05 = -2.5
thus, (P") : z = x - 0.4 y + 8.8 &
(P''') : z = -2 x -2.5 y - 15.5
R03 = 8.8
R06 = -15.5
Notes:
-If F01 is set, the coefficients in R01 to Rnn give the equation of one
hyperplane.
-It may happen if the second hyperplane is parallel to (Oxn) or
if (H) // (H')
b) Program#2
-Now, the equations are written in the general form:
(H) : a1 x1 + ........ + an xn + b = 0 , (H') : a'1 x1 + ........ + a'n xn + b' = 0
with ( a1 , ..... , an ) # ( 0 , ........ , 0 ) and ( a'1 , ..... , a'n ) # ( 0 , ........ , 0 )
-At the end, the equations of the bisecting hyperplanes (H") & (H''')
replace the original coefficients in registers R01 to R2n+2
Data Registers: • R00 = n ( Registers R00 thru R2n+2 are to be initialized before executing "BISHP" )
• R01 = a1
• Rn+2 = a'1
• R02 = a2
• Rn+3 = a'2
..............
................
• Rnn = an
• R2n+1 = a'n
• Rn+1 = b
• R2n+2 = b'
Flags: /
Subroutines: /
01 LBL "BISHP" 02 RCL 00 03 0 04 LBL 01 05 RCL IND Y 06 X^2 07 + 08 DSE Y 09 GTO 01 10 STO M 11 RCL 00 |
12 ENTER^ 13 ST+ Y 14 1 15 ST+ Z 16 + 17 E3 18 / 19 + 20 0 21 LBL 02 22 RCL IND Y |
23 X^2 24 + 25 DSE Y 26 GTO 02 27 0 28 X<> M 29 / 30 SQRT 31 X<>Y 32 INT 33 X<>Y |
34 LBL 03 35 ST* IND Y 36 DSE Y 37 GTO 03 38 RCL 00 39 1 40 + 41 ENTER^ 42 ST+ X 43 LBL 04 44 RCL IND Y |
45 RCL IND Y 46 ST+ IND T 47 - 48 STO IND Y 49 RDN 50 DSE X 51 DSE Y 52 GTO 04 53 END |
( 85 bytes / SIZE 2n+3 )
STACK | INPUT | OUTPUT |
X | / | n+1 |
Example: (H) : x + y +
2 z + 5 t + 3 = 0 , (H') : x + 5 y + 7 z + 7 t + 2 = 0
( in a 4-dimensional space )
4 STO 00 ( 4-dimensional space )
1 STO 01
1 STO 06
1 STO 02
5 STO 07
2 STO 03
7 STO 08
5 STO 04
7 STO 09
3 STO 05
2 STO 10
XEQ "BISHP" yields in 5 seconds:
R01 = 3
R06 = 1
R02 = 7
R07 = -3
R03 = 11
R08 = -3 whence
(H") : 3 x + 7 y + 11 z + 17 t + 8 = 0 , (H''') : x - 3
y - 3 z + 3 t + 4 = 0
R04 = 17
R09 = 3
R05 = 8
R10 = 4
Notes:
-In this example, all the coefficients are integers, but in most cases,
the exact results are irrational numbers.
-With n = 50 , execution time = 51 seconds.