hp41programs

QuadHyperSurf

Quadratic Hypersurfaces for the HP-41


Overview
 

-The following program reduces the cartesian equation of a quadratic hypersurface (QHS) in a n-dimensional space  ( n > 1 )

-Given    (QHS):  a11 x12 + a22 x22 + .............. + ann xn2 + Sum i < j  ai j xi xj  +  b1 x1 + b2 x2 + ............. + bn xn =  c

    the elements  ai j ( i < j ) are gradually zeroed by the Jacobi's iterative method.

-When all these elements are smaller than 10 -8 ( line 27 ) , the quadratic form is diagonalized.
 ( the n eigenvalues are in registers R01 thru Rnn at this step )
-Then ( lines 211 to 265 ) several translations and/or rotations are performed to reduce the equation further.
 

Data Registers:           •  R00 = n                        ( All these registers are to be initialized before executing "QUAD"  )

           I              •  R01 = a11    • Rn+1 = a1,2   • R2n    = a2,3   ..................................  • R(n2+n)/2 = an-1,n       • R(n2+n)/2+1 = b1        • R(n2+3n)/2+1 = c
          N             •  R02 = a22    • Rn+2 = a1,3   • R2n+1 = a2,4     ...................                                                    • R(n2+n)/2+2 = b2
          P                ...............         .................      ...................                                                                               ........................
          U               ...............         .................    • R3n-2 = a2,n
          T               ................      • R2n-1 = a1,n
          S              •  Rnn = ann                                                                                                                              • R(n2+3n)/2 = bn

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------

                  When the program stops:

                                       R00 = n
          O
          U              R01 = a'11      Rn+1 =  b'1       R2n+1 = c'
          T               R02 = a'22      Rn+2 =  b'2
          P              ...............         .................
          U
          T
          S               Rnn = a'nn      R2n =   b'n

The reduced equation is:    (QHS):  a'11 X12 + a'22 X22 + .............. + a'nn Xn2  + b'1 X1 + b'2 X2 + ............. + b'n Xn =  c'

 where   b'i  = 0  if  a'ii # 0  and  c' = 0 or 1

Flags: /
Subroutines: /
 

Program Listing
 

-The synthetic registers  M , N , O , P  may be replaced by  any unused standard registers,
  for instance,  R92  R93  R94  R95  , provided  n < 13

-Lines 29-143 are three-byte GTOs
-Lines 170 to 185 replace by zero all the coefficients smaller than  10 -7 in magnitude ( line 173 )
-Lines 192 to 208 move the coefficients bi & c  from registers   R(n2+n)/2+1  thru  R(n2+3n)/2+1    to registers   Rn+1  thru  R2n+1
 
 

  01  LBL "QUAD"
  02  LBL 01
  03  RCL 00
  04  ENTER^
  05  X^2
  06  +
  07  2
  08  /
  09  RCL 00
  10   E3
  11  /
  12  +
  13  ENTER^
  14  ENTER^
  15  CLX
  16  LBL 02
  17  RCL IND Z
  18  ABS
  19  X>Y?
  20  STO Z
  21  X>Y?
  22  +
  23  RDN
  24  DSE Z
  25  GTO 02
  26  VIEW X
  27   E-8    
  28  X>Y?
  29  GTO 11  
  30  CLX
  31  ENTER^
  32  R^
  33  INT
  34  STO M
  35  RCL 00
  36  -
  37  X<>Y
  38  LBL 03
  39  ISG Z
  40  CLX
  41  RCL 00
  42  +
  43  R^
  44  -
  45  X<Y?
  46  GTO 03
  47  -
  48  RCL 00
  49  +
  50  RCL IND X
  51  RCL IND Z
  52  -
  53  RCL IND M
  54  X<>Y
  55  R-P
  56  CLX
  57  2
  58  /
  59  1
  60  P-R
  61  STO N
  62  RDN
  63  STO O
  64  X^2
  65  RCL IND Z
  66  *
  67  STO P   
  68  CLX
  69  RCL IND Y
  70  RCL N
  71  X^2
  72  *
  73  ST+ P
  74  CLX
  75  X<> IND M
  76  RCL N
  77  *
  78  RCL O
  79  *
  80  ENTER^
  81  X<> P
  82  +
  83  X<> IND Y
  84  RCL O
  85  X^2
  86  *
  87  RCL P
  88  -
  89  X<> IND Z
  90  RCL N
  91  X^2
  92  *
  93  ST+ IND Z
  94  CLX
  95  RCL 00
  96  ENTER^
  97  X^2
  98  +
  99  2
100  /
101  STO P  
102  ST+ Z
103  +
104  XEQ 07
105  RCL 00
106  DSE X
107  X<> P
108  ST- Z
109  -
110  LBL 04
111  RCL P
112  ST+ Z
113  +
114  RCL M
115  X=Y?
116  GTO 00
117  RDN
118  XEQ 07
119  DSE P
120  GTO 04
121  LBL 00
122  RDN
123  LBL 05
124  RCL P
125  ENTER^
126  SIGN
127  ST+ T
128  -
129  +
130  X<>Y
131  RCL M
132  X=Y?
133  GTO 00
134  X<> Z
135  XEQ 07
136  DSE P
137  GTO 05
138  LBL 00
139  X<> Z
140  LBL 06
141  DSE P
142  X=0?
143  GTO 01 
144  ISG X
145  CLX
146  ISG Y
147  CLX
148  XEQ 07
149  GTO 06
150  LBL 07
151  RCL IND X
152  RCL O
153  *
154  SIGN
155  CLX
156  RCL IND Z
157  RCL N
158  ST* Y
159  X<> L
160  -
161  X<> IND Z
162  RCL O
163  *
164  X<> IND Y
165  RCL N
166  *
167  ST+ IND Y
168  RDN
169  RTN
170  LBL 08   
171  RCL 00
172  ST+ X
173   E-7
174  ISG Y
175  LBL 09
176  RCL IND Y
177  ABS
178  X<Y?
179  CLX
180  X=0?
181  STO IND Z
182  RDN
183  DSE Y
184  GTO 09
185  RTN
186  LBL 10
187  ST/ IND M
188  DSE M
189  GTO 10
190  RTN
191  LBL 11 
192  RCL 00 
193  ENTER^
194  X^2
195  +
196  2
197  /
198  RCL 00
199  1
200  ST+ Z
201  +
202   E3
203  /
204  ST+ Y
205  LASTX
206  /
207  +
208  REGMOVE
209  CLD
210  XEQ 08
211  RCL 00
212  ENTER^
213  ST+ X
214  STO M
215  ISG M
216  LBL 12
217  RCL IND Y
218  X=0?
219  GTO 12
220  4
221  *
222  RCL IND Y
223  X^2
224  X<>Y
225  /
226  ST+ IND M
227  CLX
228  STO IND Y
229  LBL 12
230  RDN
231  DSE X
232  DSE Y
233  GTO 12
234  XEQ 08
235  RCL IND M
236  X#0?
237  XEQ 10
238  RCL 00
239  STO N
240  ST+ X
241  STO M
242  ENTER^
243  ENTER^
244  CLX
245  ISG Z
246  LBL 13
247  RCL IND Y
248  X=0?
249  GTO 13
250  R-P
251  STO IND Z
252  X<>Y
253  CLX
254  STO IND T
255  ENTER^
256  +
257  LBL 13
258  RDN
259  DSE Y
260  DSE N
261  GTO 13
262  X#0?
263  XEQ 10
264  CLA
265  END
 

 
   ( 397 bytes / SIZE ( n2+3n+4 )/2 )
 
 

      STACK        INPUTS      OUTPUTS
           X             /             /

Example:    (QHS):  3 x2 + 4 y2 + 7 z2 + 6 t2 + 9 x.y + 3 x.z + 7 x.t + 4 y.z + 8 y.t + 2 z.t + 9 x + 2 y + 5 z + 4 t = 10  in a 4-dimensional space.

       SIZE 016  or greater

   4  STO 00  and we store these ( n2+3n+2 )/2 = 15 coefficients as shown below:

           3     9     4      2       9       10                      R01     R05     R08     R10      R11       R15
           4     3     8               2                     in          R02     R06     R09                  R12                     respectively
           7     7                      5                                  R03     R07                             R13
           6                             4                                  R04                                         R14
 

 XEQ "QUAD"  the HP-41 displays the successive greatest  | ai j |  ( which tend to zero )  and when the program stops,
  the results are in registers R01 thru R2n+1

         R01 =  -0.209131158     R05 = 0      R09 = 1                       Execution time = 2mn28s
         R02 =   0.297006169     R06 = 0
         R03 =   1.235467092     R07 = 0
         R04 =   2.716166061     R08 = 0

  So, the reduced equation is   -0.209131158 X2 +  0.297006169 Y2 + 1.235467092 Z2 + 2.716166061 T2 = 1    a "hyper-hyperboloid"?
 

Notes:

-The 4 eigenvalues of the initial quadratic form are     -1.035428817  ,   1.470506591  ,  6.116918408  ,  13.44800383
-These 4 numbers are in registers R01 thru R04  when the program reaches line 191 or line 209

-If you want to save these values, for instance in registers R2n+2 to R3n+1,

      add  RCL 00   RCL 00  .1   %   +   +   2   +   E3   /    1   +   REGMOVE   after line 209 or 210

-In the above example, n = 4 and the eigenvalues will be eventually in registers  R10 R11 R12 R13

-If you want to compute the n eigenvalues only,

   store  n into R00 , the coefficients ai i & ai j  into R01 thru  R(n2+n)/2  and
   replace lines 170 to 265  by  LBL 11   CLA  CLD  END
   replace lines 95 to 109 by  RCL 00   DSE X   STO P  ( synthetic )  RDN           >>  They will be in R01 thru Rnn at the end.

-Actually, these eigenvalues are the n eigenvalues of the symmetric matrix  M = [ mi j ]  defined by   mi i = ai i  and  mi j = mj i = (1/2) ai j  for i # j

-The results are quite similar to those given by "QUADRIC"  in a 3-dimensional space ( cf "Quadrics for the HP-41" )
  but here, the names of the hypersurfaces have been omitted for 2 reasons:

    1°) This would require many extra bytes.
    2°) I don't know the exact terminology !

-For n = 7 , the execution time is of the order of  18 minutes.
-If this program is executed from extended memory, n could reach 23.
 

Exercise:    (QHS):   2 x2 + 3 y2 + 4 z2 + 2 t2 + 2 x.y + 6 x.z + 4 x.t + 12 y.z + 2 y.t + 6 z.t + 2 x + 3 y + 4 z + 5 t = 10  in a 4-dimensional space.

Answer:    The reduced equation is:     Y = 1.461929785 X2 -  1.113606716 Z2 -  5.533772793 T2    a kind of hyperbolic hyperparaboloid ?

  and the 4 eigenvalues of the original quadratic form are:    -3.101221397 ,  0  ,  2.362316584  ,  11.73890481