hp41programs

Curvature &Torsion

Curvature Center for the HP-41


Overview
 

1°)  Y = F(X)
2°)  X = X(t) & Y = Y(t)
3°)  R = R(µ)


-These programs use approximate derivative formulae of order 6:

   y'  ~ (1/(60.h)) ( -y-3 + 9.y-2 - 45.y-1 + 45.y1 - 9.y2 + y3 )
  y''  ~ (1/(90.h2)) [ y-3 - (27/2).y-2 + 135.y-1 - 245.y0 + 135.y1 - (27/2).y2 + y3 ]

-They compute the coordinates X & Y of the curvature center & the curvature Khi

 

1°)  Y = F(X)

 
Formula:

    Khi = y" / ( 1 + y'2 )3/2   

     X = x - y' ( 1 + y'2 ) / y"
     Y = y + ( 1 + y'2 ) / y"
 

Data Registers:           •  R00 = f name                                  ( Register R00 is to be initialized before executing "CCR" )

                                         R01 = x                                           R04 = f '(x)        
                                         R02 = y                                           R05 = f ''(x)       
                                         R03 = h

Flags: /
Subroutine:   A program that takes x in X-register and returns f(x) in X-register
 
 

 01 LBL "CCR"
 02 STO 01
 03 X<>Y
 04 STO 03
 05 4
 06 *
 07 STO 07
 08 RCL 01
 09 XEQ IND 00
 10 STO 02          
 11 XEQ 01
 12 STO 05
 13 RCL 06
 14 STO 04
 15 XEQ 01
 16 13.5
 17 *
 18 ST- 05
 19 RCL 06
 20 9
 21 *
 22 ST- 04
 23 XEQ 01
 24 135
 25 *
 26 ST+ 05
 27 RCL 06          
 28 45
 29 *
 30 ST+ 04
 31 GTO 02
 32 LBL 01
 33 RCL 03
 34 ST- 07
 35 RCL 01
 36 RCL 07
 37 +
 38 XEQ IND 00
 39 STO 06
 40 RCL 01          
 41 RCL 07
 42 -
 43 XEQ IND 00
 44 RCL 06
 45 X<>Y
 46 ST- 06
 47 +
 48 RCL 02
 49 ST+ X
 50 -
 51 RTN
 52 LBL 02
 53 RCL 03          
 54 60
 55 *
 56 ST/ 04
 57 1.5
 58 *
 59 RCL 03
 60 *
 61 ST/ 05
 62 RCL 05
 63 RCL 04
 64 X^2
 65 1
 66 +
 67 STO 06
 68 ST/ Y
 69 SQRT
 70 /
 71 RCL 02          
 72 RCL 06
 73 RCL 05
 74 /
 75 ST+ Y
 76 RCL 04
 77 *
 78 CHS
 79 RCL 01
 80 +
 81 END

 
   ( 119 bytes / SIZE 008 )
 
 

      STACK        INPUTS      OUTPUTS
           Z             /         Khi(x)
           Y             h            Y
           X             x            X

 

Example:     y = Ch x   ;    x = 2


01  LBL "T"
02  E^X
03  LASTX
04  CHS
05  E^X
06  +
07  2
08  /
09  END

 
 "T"  ASTO 00

-And if we choose   h = 0.04

   0.04  ENTER^
     2     XEQ "CCR"  >>>>   X   = -11.64495785                                ---Execution time = 9s---
                                  RDN   Y   =    7.524391171
                                  RDN  Khi =    0.070650829

Note:

-Exact results are    -11.644958599...    7.524391382...   0.070650825...


2°)  X = X(t) & Y = Y(t)
 

( parametric )


Formula:

    Khi = ( x' y" - x" y' ) / ( x'2 + y'2 )3/2   

     X = x - y' ( x'2 + y'2 ) / ( x' y" - x" y' )
     Y = y + x' ( x'2 + y'2 ) / ( x' y" - x" y' )



Data Registers:           •  R00 = f name                                           ( Register R00 is to be initialized before executing "CCR" )

                                         R01 = t       R04 = h        R05 = x'(t)         R07 = y'(t)
                                         R02 = x                           R06 = x''(t)        R08 = y"(t)
                                         R03 = y

Flags: /
Subroutine:   A program that takes t in X-register and returns x(t) in X-register & y(t) in Y-register

 
 

 01 LBL "CCR"
 02 STO 01
 03 X<>Y
 04 STO 04
 05 4
 06 *
 07 STO 11
 08 RCL 01
 09 XEQ IND 00
 10 STO 02
 11 X<>Y
 12 STO 03
 13 XEQ 01
 14 STO 08
 15 X<>Y
 16 STO 06
 17 RCL 09          
 18 STO 05
 19 RCL 10
 20 STO 07
 21 XEQ 01
 22 13.5
 23 ST* Z
 24 *
 25 ST- 08
 26 X<>Y
 27 ST- 06
 28 RCL 09
 29 9
 30 ST* 10
 31 *
 32 ST- 05
 33 RCL 10
 34 ST- 07
 35 XEQ 01
 36 135
 37 ST* Z
 38 *
 39 ST+ 08
 40 X<>Y
 41 ST+ 06
 42 RCL 09          
 43 45
 44 ST* 10
 45 *
 46 ST+ 05
 47 RCL 10
 48 ST+ 07
 49 GTO 02
 50 LBL 01
 51 RCL 04
 52 ST- 11
 53 RCL 01
 54 RCL 11
 55 +
 56 XEQ IND 00
 57 STO 09
 58 X<>Y
 59 STO 10
 60 RCL 01
 61 RCL 11
 62 -
 63 XEQ IND 00
 64 RCL 09          
 65 X<>Y
 66 ST- 09
 67 +
 68 RCL 02
 69 ST+ X
 70 -
 71 RCL 10
 72 RCL Z
 73 ST- 10
 74 +
 75 RCL 03
 76 ST+ X
 77 -
 78 RTN
 79 LBL 02
 80 RCL 04
 81 60
 82 *
 83 ST/ 05
 84 ST/ 07
 85 1.5
 86 *
 87 RCL 04          
 88 *
 89 ST/ 06
 90 ST/ 08
 91 RCL 05
 92 RCL 08
 93 *
 94 RCL 06
 95 RCL 07
 96 *
 97 -
 98 STO 10
 99 RCL 05
100 X^2
101 RCL 07
102 X^2
103 +
104 ST/ Y
105 ST/ 10
106 SQRT
107 /
108 RCL 02
109 RCL 07          
110 RCL 10
111 /
112 -
113 RCL 05
114 RCL 10
115 /
116 RCL 03
117 +
118 X<>Y
119 END

 
   ( 170 bytes / SIZE 012 )
 
 

      STACK        INPUTS      OUTPUTS
           Z             /         Khi(t)
           Y             h            Y
           X             t            X

 
Example:     x = ( 3 - 4.t ) / ( 1 + 2.t2 )       y = t ( 3 - 4.t ) / ( 1 + 2.t2 )       t = 1


 01 LBL "T"
 02 ENTER
 03 STO Z
 04 4
 05 *
 06 CHS
 07 3
 08 +
 09 X<>Y
 10 X^2
 11 ST+ X
 12 1
 13 +
 14 /
 15 ST* Y
 16 END

 
 "T"  ASTO 00

-And if we choose   h = 0.04

   0.04  ENTER^
     2     XEQ "CCR"  >>>>   X   =  0.775054442                                ---Execution time = 11s---
                                  RDN   Y   = -1.139433488
                                  RDN  Khi =   0.729650866

Notes:

   x = ( 3 - 4.t ) / ( 1 + 2.t2 )       y = t ( 3 - 4.t ) / ( 1 + 2.t2 )     ->     2.y2 + 4.y + x2 - 3.x = 0

-Exact results are    0.775054466....   -1.139433551...     0.729650836....


3°)  R = R(µ)


  ( polar coordinates )


Formula:

    Khi = ( r2 + 2 r'2 - r.r" ) / ( r2 + r'2 )3/2

      X = r Cos µ - ( r2 + r'2 ) ( r Cos µ + r' Sin µ ) / ( r2 + 2 r'2 - r.r" )
      Y = r Sin µ  - ( r2 + r'2 ) ( r Sin µ - r' Cos µ ) / ( r2 + 2 r'2 - r.r" )


Data Registers:           •  R00 = f name                       ( Register R00 is to be initialized before executing "CCR" )

                                         R01 = µ       R04 = r'(t)         R06 = Khi
                                         R02 = r       R05 = r''(t)
                                         R03 = h

Flags: /
Subroutine:   A program that takes µ in X-register and returns r(µ) in X-register

 
 

 01 LBL "CCR"
 02 RAD
 03 STO 01
 04 X<>Y
 05 STO 03
 06 4
 07 *
 08 STO 07
 09 RCL 01
 10 XEQ IND 00
 11 STO 02
 12 XEQ 01
 13 STO 05
 14 RCL 06          
 15 STO 04
 16 XEQ 01
 17 13.5
 18 *
 19 ST- 05
 20 RCL 06
 21 9
 22 *
 23 ST- 04
 24 XEQ 01
 25 135
 26 *
 27 ST+ 05
 28 RCL 06
 29 45
 30 *
 31 ST+ 04
 32 GTO 02
 33 LBL 01
 34 RCL 03
 35 ST- 07
 36 RCL 01          
 37 RCL 07
 38 +
 39 XEQ IND 00
 40 STO 06
 41 RCL 01
 42 RCL 07
 43 -
 44 XEQ IND 00
 45 RCL 06
 46 X<>Y
 47 ST- 06
 48 +
 49 RCL 02
 50 ST+ X
 51 -
 52 RTN
 53 LBL 02
 54 RCL 03          
 55 60
 56 *
 57 ST/ 04
 58 1.5
 59 *
 60 RCL 03
 61 *
 62 ST/ 05
 63 RCL 02
 64 X^2
 65 STO 07
 66 RCL 04
 67 X^2
 68 ST+ 07
 69 ST+ X
 70 +
 71 RCL 02
 72 RCL 05
 73 *
 74 -
 75 STO 08          
 76 RCL 07
 77 ST/ Y
 78 ST/ 08
 79 SQRT
 80 /
 81 STO 06
 82 RCL 01
 83 COS
 84 RCL 02
 85 *
 86 STO Y
 87 RCL 04
 88 RCL 01
 89 SIN
 90 *
 91 +
 92 RCL 08
 93 /
 94 -
 95 STO 09
 96 RCL 01
 97 SIN
 98 RCL 02
 99 *
100 STO Y
101 RCL 04        
102 RCL 01
103 COS
104 *
105 -
106 RCL 08
107 /
108 -
109 RCL 06
110 X<>Y
111 RCL 09
112 END

 
   ( 154 bytes / SIZE 010 )
 
 

      STACK        INPUTS      OUTPUTS
           Z             /         Khi(t)
           Y             h            Y
           X           µ (rd)            X

 
Example:     r = 2 / ( 1 - Cos µ )      µ = Arc Tan ( sqrt(8) ) = 1.230959417 rd


 01 LBL "T"
 02 COS
 03 1
 04 X<>Y
 05 -
 06 2
 07 X<>Y
 08 /
 09 END

 
 "T"  ASTO 00

-And if we choose   h = 0.04

           0.04        ENTER^
   1.230959417  XEQ "CCR"  >>>>   X   =  6.999997151                                ---Execution time = 12s---
                                                RDN   Y   = -5.656848738
                                                RDN  Khi =   0.096225102

Notes:

  r = 2 / ( 1 - Cos µ )     ->     y = sqrt(x+1)

-Exact results are   7    -5.656854249...     0.096225045....