hp41programs

Euler-Lagrange

Euler-Lagrange Equation for the HP-41


Overview
 

 1°)  First Order Lagrangian - One Function

  a)  Without Calculus
  b)  With Calculus

 2°)  Second Order Lagrangian - One Function

  a)  Without Calculus
  b)  With Calculus

 3°)  First Order Lagrangian - Two Functions

  a)  Without Calculus
  b)  With Calculus
 

-These programs solve problems of variational calculus of the type: find an extremum of  the integral     I = §ab  L dx

  where L is a function of x , y , y' in paragraph 1 , a function of  x , y , y' , y"  in paragraph 2  and a function of  x , y , z , y' , z'  in paragraph 3

-In paragraphs 1a) 2a) 3a) , you only have to program the function L
-In paragraphs 1b) 2b) 3b) , you also have to calculate and program the Euler-Lagrange equation(s)

-In the first case, the derivatives are approximated by 2nd order formulae.
-In the second case, the Euler-Lagrange equation is solved by a Runge-Kutta method: the precision is much better and the routine is much faster !
 

1°)  First Order Lagrangian - One Function
 

     a)  Without Calculus
 

-The following programs try to find an extremum of the integral     I = §ab  L( x , y , y' ) dx       ( § = integral )

   where y(x) is an unknown function satisfying    y(a) = A , y(b) = B

-The Euler-Equation is   L / y = (d/dx) ( L / y' )                where  = partial derivative

   whence     L / y = 2L / x y' + y' 2L / x y' + y'' 2L / y'2
 

>>> Here, we assume that  2L / y'2  # 0    so,    y'' =  ( L / y - 2L / x y' - y' 2L / x y' ) / ( 2L / y'2 )

-In this routine, the derivatives are approximated by 2nd order formulas and the integral is computed by Simpson's rule.
-The value of y'(a) is found by the secant method ( lines 19 to 40 )
 
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R04 are to be initialized before executing "EULAG" )

                                      •  R01 = a     •  R03 = y(a)       R05 = y'(a)      R07 =  Imin = §ab  L( x , y , y' ) dx     R09 to R19: temp
                                      •  R02 = b     •  R04 = y(b)      R06 = y'(b)      R08 =  20.eee

        And if  F00 is clear:    R20 = y(a)  R21 = y(a+h)  R22 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N

Flags:  F00 & F10       CF 00  ->  the values of the function y(x)  are stored in  R20 , R21 , .....
                                     SF 00  ->  no !

Subroutine:   A program, called  LBL "L"  calculating  L( x , y , y' )  in X-register with x , y , y'  in registers  X , Y , Z  respectively.
 

-Line 207 is a three-byte GTO
 
 

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

 
     ( 338 bytes / SIZE 021 or 022 + N )
 
 

      STACK        INPUTS      OUTPUTS
           T             /   20.eee  or  0
           Z             /          y'(b)
           Y             m          y'(a) 
           X             n             I

   Where  m & n are your initial guesses for y'(a) ,  I = §ab  L( x , y , y' ) dx

Example:     Minimize  I  =  §12  ( x2 + y2 + y'2 ) dx  with  y(1) = y(2) = 1

-Load in main memory:
 
 

 01 LBL "L"
 02 X^2
 03 X<>Y
 04 X^2
 05 +
 06 X<>Y
 07 X^2
 08 +
 09 RTN

 
-Store a , b , y(a) , y(b)  into  R01 thru R04:

   1  STO 01    1  STO 03  STO 04
   2  STO 02

-If you choose  N = 10    and the initial guesses 1 & -1 for y'(a)

   10  STO 00   FIX 4

    1   ENTER^
   CHS  XEQ "EULAG"  >>>>      Imin   =  3.2575                                            ---Execution time = 5mn33s---
                                       RDN      y'(1)   = -0.4661
                                       RDN      y'(2)   =  0.4587
                                       RDN    20.eee  = 20.0300
 

-And we find in R20 to R30:
 
 

      x      1    1.1    1.2    1.3    1.4    1.5    1.6    1.7    1.8    1.9      2
      y      1  0.9584  0.9266  0.9042  0.8909  0.8867  0.8913  0.9048  0.9273  0.9589      1

 
-With N = 50 & FIX 6  it yields  I = 3.257563
-With N = 100 & FIX 9 ------   I = 3.257566529

-The exact solution is y(x) = [ Cosh ( x - 3/2 ) ] / Cosh (1/2)
 
 

      y      1  0.9587  0.9270  0.9046  0.8913  0.8868  0.8913  0.9046  0.9270  0.9587     1

 
-And the exact minimum integral is  Imin = 3.257567648  ( rounded to 9 decimals )

Notes:

-The precision is controlled by the display format ( line 38 )
-The HP41 displays the successive approximations of y'(a) in R05

-However, the derivatives are not calculated by very accurate formulae and the differential equation is solved by

    y(x+h) ~ y(x) + h.y'(x) + (h2/2).y"(x)  &  y'(x+h) ~ y'(x) + h.y"(x)

 so we cannot expect a great precision...
 

     b)  With Calculus
 

-Before using this program, you have to compute  y" = T(x,y,y')
-Thus, we can use a Runge-Kutta formula to find the solution, with a much better precision.
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R04 are to be initialized before executing "EULAG" )

                                      •  R01 = a     •  R03 = y(a)       R05 = y'(a)      R07 =  Imin = §ab  L( x , y , y' ) dx     R09 to R19: temp
                                      •  R02 = b     •  R04 = y(b)      R06 = y'(b)      R08 =  20.eee

        And if  F00 is clear:    R20 = y(a)  R21 = y(a+h)  R22 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N

Flags:  F00 & F10       CF 00  ->  the values of the function y(x)  are stored in  R20 , R21 , .....
                                     SF 00  ->  no !

Subroutines:   A program, called  LBL "L"  calculating  L( x , y , y' )  in X-register with x , y , y'  in registers  X , Y , Z  respectively.
                         and another one     LBL "T"  ----------  y" = T(x,y,y') --------------------------------------------------------------
 

-Line 147 is a three-byte GTO 03
 
 

 01 LBL "EULAG"
 02 STO 06          
 03 X<>Y
 04 STO 05
 05 RCL 00
 06 2
 07 MOD
 08 ST+ 00
 09 RCL 02
 10 RCL 01
 11 -
 12 RCL 00
 13 ST+ X
 14 /
 15 STO 10
 16 SF 10
 17 RCL 06
 18 XEQ 02
 19 STO 14
 20 LBL 01
 21 VIEW 05
 22 RCL 05
 23 XEQ 02
 24 ENTER
 25 ENTER
 26 X<> 14
 27 -
 28 X#0?
 29 /
 30 RCL 06          
 31 RCL 05
 32 STO 06
 33 STO T
 34 -
 35 *
 36 +
 37 STO 05
 38 -
 39 RND
 40 X#0?
 41 GTO 01
 42 2
 43 STO 15
 44 X^2
 45 STO 18
 46 20
 47 STO 19
 48 RCL 05
 49 CF 10
 50 LBL 02
 51 STO 09
 52 RCL 01
 53 STO 07
 54 RCL 00
 55 STO 16          
 56 RCL 03
 57 STO 08
 58 FS? 10
 59 GTO 03
 60 RCL 09
 61 X<>Y
 62 STO 20
 63 RCL 07
 64 XEQ "L"
 65 STO 17
 66 LBL 03
 67 RCL 09
 68 RCL 08
 69 RCL 07
 70 XEQ "T"
 71 RCL 10
 72 ST+ 07
 73 *
 74 STO 12
 75 RCL 09
 76 +
 77 STO 13
 78 LASTX
 79 RCL 10          
 80 *
 81 STO 11
 82 RCL 08
 83 +
 84 RCL 07
 85 XEQ "T"
 86 RCL 10
 87 ST* 13
 88 *
 89 ST+ 12
 90 ST+ 12
 91 RCL 09
 92 +
 93 ENTER
 94 X<> 13
 95 ST+ 11
 96 ST+ 11
 97 RCL 08
 98 +
 99 RCL 07
100 XEQ "T"
101 RCL 10
102 ST+ 07
103 ST+ X
104 ST* 13
105 *
106 ST+ 12
107 RCL 09          
108 +
109 ENTER
110 X<> 13
111 ST+ 11
112 RCL 08
113 +
114 RCL 07
115 XEQ "T"
116 RCL 10
117 ST* 13
118 *
119 RCL 12
120 +
121 3
122 /
123 ST+ 09
124 RCL 11
125 RCL 13
126 +
127 3
128 /
129 ST+ 08
130 FS? 10
131 GTO 03
132 ISG 19
133 CLX
134 RCL 09          
135 RCL 08
136 FC? 00
137 STO IND 19
138 RCL 07
139 XEQ "L"
140 RCL 15
141 X<> 18
142 STO 15
143 *
144 ST+ 17
145 LBL 03
146 DSE 16
147 GTO 03
148 RCL 08
149 RCL 04
150 -
151 FS? 10
152 RTN
153 STO 14
154 CLX
155 2
156 /
157 ST- 17
158 RCL 10
159 RCL 17          
160 *
161 1.5
162 /
163 STO 07
164 RCL 19
165 .1
166 %
167 20
168 +
169 FS? 00
170 CLX
171 STO 08
172 RCL 09
173 STO 06
174 RCL 05
175 RCL 07
176 CLD
177 END

 
     ( 254 bytes / SIZE 021 or 022 + N )
 
 

      STACK        INPUTS      OUTPUTS
           T             /   20.eee  or  0
           Z             /          y'(b)
           Y             m          y'(a) 
           X             n             I

   Where  m & n are your initial guesses for y'(a) ,  I = §ab  L( x , y , y' ) dx

Example:     Minimize  I  =  §12  ( x2 + y2 + y'2 ) dx  with  y(1) = y(2) = 1

-Here, Euler-Lagrange equation gives:   L / y = (d/dx) ( L / y' )  --->  2.y = (d/dx) (2.y')

   whence   y" = y

-Load in main memory:
 
 

 01 LBL "L"
 02 X^2
 03 X<>Y
 04 X^2
 05 +
 06 X<>Y
 07 X^2
 08 +
 09 RTN
 10 LBL "T"
 11 X<>Y
 12 RTN

 
-Store a , b , y(a) , y(b)  into  R01 thru R04:

   1  STO 01    1  STO 03  STO 04
   2  STO 02

-If you choose  N = 10    and the initial guesses 1 & -1 for y'(a)

   10  STO 00   FIX 6

    1   ENTER^
   CHS  XEQ "EULAG"  >>>>      Imin   =  3.257576                                            ---Execution time = 1mn58s---
                                       RDN      y'(1)   = -0.462117
                                       RDN      y'(2)   =  0.462117
                                       RDN    20.eee  = 20.0300
 

-And we find in R20 to R30:
 
 

         x         1        1.1        1.2       1.3       1.4       1.5       1.6       1.7       1.8       1.9          2
         y         1   0.958715   0.927026   0.904615   0.891257   0.886819   0.891257   0.904615   0.927026   0.958715          1

 
-With N = 50 & FIX 9  it yields  I = 3.257567662
-With N = 100 & FIX 9 ------   I = 3.257567651

-The exact solution is y(x) = [ Cosh ( x - 3/2 ) ] / Cosh (1/2)
-So the errors are smaller than E-6
-The exact values of y'(a) & y'(b) are -/+ 0.462117157...

-And the exact minimum integral is  Imin = 3.257567648  ( rounded to 9 decimals )

Notes:

-The precision is controlled by the display format ( line 39 )
-The HP41 displays the successive approximations of y'(a) in R05
 

2°)  Second Order Lagrangian - One Function
 

     a)  Without Calculus
 

-Here, we try to find the extremum of  I = §ab  L( x , y , y' , y" ) dx   with  y(a) = A , y(b) = B , y'(a) = A' , y'(b) = B'

-In this case, the Euler-Lagrange equation becomes:   L / y - (d/dx) ( L / y' ) + (d2/dx2) ( L / y'' ) = 0            where  = partial derivative
 

>>> We assume that  2L / y''2  # 0
 

-The derivatives are also approximated by second order formulae.
-The values of y"(a) & y'''(a) are found by a 2-dimensional secalt method ( lines 20 to 90 )
 
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R06 are to be initialized before executing "2ELG" )

                                      •  R01 = a     •  R03 = y(a)     •  R05 = y'(a)     R07 = y"(a)   R09 = y'''(a)   R11 =  Imin = §ab  L( x , y , y' , y" ) dx
                                      •  R02 = b     •  R04 = y(b)     •  R06 = y'(b)    R08 = y"(b)   R10 = y'''(b)   R12 = 33.eee    R13 to R32: temp

        And if  F00 is clear:    R33 = y(a)  R34 = y(a+h)  R35 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N

Flags:  F00 & F02-F03-F10       CF 00  ->  the values of the function y(x)  are stored in  R33 , R34 , .....
                                                    SF 00  ->  no !

Subroutine:   A program, called  LBL "L"  calculating  L( x , y , y' ,y" )  in X-register with x , y , y' , y"  in registers  X , Y , Z , T  respectively.
 
 

-Lines 100 & 630 are three-byte GTOs
 
 

 01 LBL "2ELG"
 02 STO 10         
 03 RDN
 04 STO 09
 05 RDN
 06 STO 08
 07 X<>Y
 08 STO 07
 09 RCL 00
 10 2
 11 MOD
 12 ST+ 00
 13 RCL 02
 14 RCL 01
 15 -
 16 RCL 00
 17 /
 18 STO 15
 19 SF 10
 20 LBL 01
 21 VIEW 07
 22 RCL 09
 23 RCL 08
 24 XEQ 12
 25 STO 20
 26 X<>Y
 27 STO 19
 28 RCL 10
 29 RCL 07
 30 XEQ 12
 31 STO 22
 32 X<>Y
 33 STO 21
 34 RCL 09
 35 RCL 07
 36 XEQ 12
 37 STO 18
 38 ST- 20
 39 ST- 22
 40 X<>Y
 41 STO 17
 42 ST- 19
 43 ST- 21
 44 RCL 19
 45 RCL 22
 46 *
 47 RCL 20
 48 RCL 21
 49 *
 50 -
 51 STO 23
 52 X=0?
 53 GTO 13
 54 RCL 18
 55 RCL 21
 56 *
 57 RCL 17
 58 RCL 22
 59 *
 60 -
 61 RCL 23
 62 /
 63 RCL 08
 64 RCL 07
 65 STO 08
 66 -
 67 *
 68 ST+ 07
 69 ABS
 70 RCL 17
 71 RCL 20
 72 *
 73 RCL 18
 74 RCL 19
 75 *
 76 -
 77 RCL 23
 78 /
 79 RCL 10
 80 RCL 09
 81 STO 10
 82 -
 83 *
 84 ST+ 09
 85 ABS
 86 +
 87 RND
 88 X#0?
 89 GTO 01
 90 LBL 13
 91 33
 92 STO 32
 93 2
 94 STO 25
 95 X^2
 96 STO 24
 97 RCL 09         
 98 RCL 07
 99 CF 10
100 GTO 12
101 LBL 07
102 RCL 14
103 RCL 13
104 RCL 12
105 RCL 15
106 ST+ Z
107 +
108 RCL 11
109 XEQ 04
110 STO 30
111 RCL 14
112 RCL 13
113 RCL 12
114 RCL 15
115 ST- Z
116 +
117 RCL 11
118 XEQ 04
119 ST- 30
120 RCL 14
121 RCL 13
122 RCL 12
123 RCL 15
124 ST- Z
125 -
126 RCL 11
127 XEQ 04
128 ST+ 30
129 RCL 14
130 RCL 13
131 RCL 12
132 RCL 15
133 ST+ Z
134 -
135 RCL 11
136 XEQ 04
137 ST- 30
138 RCL 30
139 4
140 /
141 RTN
142 LBL 08
143 RCL 14
144 RCL 13
145 RCL 12
146 RCL 15
147 ST+ T
148 +
149 RCL 11
150 XEQ 05
151 STO 30
152 STO 31
153 RCL 14
154 RCL 13
155 RCL 12
156 RCL 15
157 ST- T
158 -
159 RCL 11
160 XEQ 05
161 ST- 30
162 ST- 31
163 RCL 14
164 RCL 13
165 RCL 12
166 RCL 15
167 ST+ T
168 -
169 RCL 11
170 XEQ 05
171 ST+ 30
172 ST- 31
173 RCL 14
174 RCL 13
175 RCL 12
176 RCL 15
177 ST- T
178 +
179 RCL 11
180 XEQ 05
181 ST- 30
182 ST+ 31
183 RCL 14
184 RCL 15
185 +
186 RCL 13
187 RCL 12
188 RCL 11
189 XEQ 05
190 ST+ X
191 ST- 30
192 RCL 14         
193 RCL 15
194 -
195 RCL 13
196 RCL 12
197 RCL 11
198 XEQ 05
199 ST+ X
200 ST+ 30
201 RCL 14
202 RCL 13
203 RCL 12
204 RCL 15
205 +
206 RCL 11
207 XEQ 05
208 ST+ X
209 ST- 31
210 RCL 14
211 RCL 13
212 RCL 12
213 RCL 15
214 -
215 RCL 11
216 XEQ 05
217 ST+ X
218 ST+ 31
219 RCL 31
220 RCL 30
221 2
222 ST/ Z
223 /
224 RTN
225 LBL 09
226 RCL 14
227 RCL 13
228 RCL 12
229 RCL 15
230 ST+ T
231 ST+ Z
232 +
233 RCL 11
234 XEQ 06
235 STO 30
236 RCL 14
237 RCL 13
238 RCL 12
239 RCL 15
240 ST+ T
241 ST- Z
242 +
243 RCL 11
244 XEQ 06
245 ST- 30
246 RCL 14
247 RCL 13
248 RCL 12
249 RCL 15
250 ST+ T
251 ST- Z
252 -
253 RCL 11
254 XEQ 06
255 ST+ 30
256 RCL 14
257 RCL 13
258 RCL 12
259 RCL 15
260 ST+ T
261 ST+ Z
262 -
263 RCL 11
264 XEQ 06
265 ST- 30
266 RCL 14
267 RCL 13
268 RCL 12
269 RCL 15
270 ST- T
271 ST+ Z
272 +
273 RCL 11
274 XEQ 06
275 ST- 30
276 RCL 14
277 RCL 13
278 RCL 12
279 RCL 15
280 ST- T
281 ST- Z
282 +
283 RCL 11
284 XEQ 06
285 ST+ 30
286 RCL 14
287 RCL 13         
288 RCL 12
289 RCL 15
290 ST- T
291 ST- Z
292 -
293 RCL 11
294 XEQ 06
295 ST- 30
296 RCL 14
297 RCL 13
298 RCL 12
299 RCL 15
300 ST- T
301 ST+ Z
302 -
303 RCL 11
304 XEQ 06
305 RCL 30
306 +
307 RTN
308 LBL 04
309 FS? 02
310 X<>Y
311 FC? 03
312 GTO "L"
313 R^
314 X<> T
315 RDN
316 GTO "L"
317 LBL 05
318 FS? 02
319 X<>Y
320 FC? 03
321 GTO "L"
322 RDN
323 X<>Y
324 R^
325 GTO "L"
326 LBL 06
327 FS? 02
328 X<>Y
329 FC? 03
330 GTO "L"
331 X<> Z
332 X<>Y
333 GTO "L"
334 LBL 12
335 STO 14
336 X<>Y
337 STO 16
338 RCL 05
339 STO 13
340 RCL 00
341 STO 26
342 RCL 03
343 STO 12
344 RCL 01
345 STO 11
346 FS? 10
347 GTO 03
348 RCL 14
349 RCL 13
350 RCL 12
351 RCL 11
352 XEQ "L"
353 CHS
354 STO 27
355 LBL 03
356 RCL 14
357 RCL 13
358 RCL 15
359 +
360 RCL 12
361 RCL 11
362 XEQ "L"
363 STO 29
364 RCL 14
365 RCL 13
366 RCL 12
367 RCL 11
368 XEQ "L"
369 STO 28
370 ST+ X
371 ST- 29
372 RCL 14
373 RCL 13
374 RCL 15
375 -
376 RCL 12
377 RCL 11
378 XEQ "L"
379 RCL 29
380 +
381 RCL 14
382 *
383 STO 29         
384 RCL 14
385 RCL 13
386 RCL 12
387 RCL 15
388 +
389 RCL 11
390 XEQ "L"
391 STO 30
392 RCL 14
393 RCL 13
394 RCL 12
395 RCL 15
396 -
397 RCL 11
398 XEQ "L"
399 ST- 30
400 RCL 30
401 RCL 15
402 2
403 /
404 *
405 ST- 29
406 CF 02
407 CF 03
408 XEQ 07
409 RCL 13
410 *
411 ST+ 29
412 RCL 11
413 X<> 12
414 STO 11
415 SF 02
416 XEQ 07
417 ST+ 29
418 RCL 11
419 X<> 12
420 STO 11
421 RCL 13
422 X<> 14
423 STO 13
424 CF 02
425 SF 03
426 XEQ 07
427 RCL 13
428 *
429 ST- 29
430 RCL 15
431 ST* 29
432 RCL 13
433 X<> 14
434 STO 13
435 CF 03
436 XEQ 08
437 RCL 13
438 ST* Z
439 X^2
440 *
441 ST- 29
442 CLX
443 RCL 16
444 *
445 ST+ X
446 ST- 29
447 RCL 11
448 X<> 12
449 STO 11
450 SF 02
451 XEQ 08
452 ST- 29
453 CLX
454 RCL 16
455 ST+ X
456 *
457 ST- 29
458 RCL 11
459 X<> 12
460 STO 11
461 RCL 12
462 X<> 13
463 STO 12
464 CF 02
465 SF 03
466 XEQ 08
467 RCL 14
468 ST* Z
469 X^2
470 *
471 ST- 29
472 CLX
473 RCL 16
474 ST+ X
475 *
476 ST- 29
477 RCL 12         
478 X<> 13
479 STO 12
480 CF 03
481 XEQ 09
482 RCL 13
483 *
484 RCL 14
485 *
486 ST- 29
487 RCL 11
488 X<> 12
489 STO 11
490 SF 02
491 XEQ 09
492 RCL 14
493 *
494 ST- 29
495 RCL 11
496 X<> 13
497 STO 11
498 CF 02
499 SF 03
500 XEQ 09
501 RCL 11
502 *
503 ST- 29
504 RCL 11
505 X<> 13
506 X<> 12
507 STO 11
508 RCL 14
509 RCL 15
510 ST+ X
511 +
512 RCL 13
513 RCL 12
514 RCL 11
515 CF 03
516 XEQ "L"
517 2
518 /
519 STO 30
520 RCL 14
521 RCL 15
522 +
523 RCL 13
524 RCL 12
525 RCL 11
526 XEQ "L"
527 ST- 30
528 STO 31
529 RCL 14
530 RCL 15
531 -
532 RCL 13
533 RCL 12
534 RCL 11
535 XEQ "L"
536 ST+ 30
537 ST+ 31
538 RCL 14
539 RCL 15
540 ST+ X
541 -
542 RCL 13
543 RCL 12
544 RCL 11
545 XEQ "L"
546 2
547 /
548 ST- 30
549 RCL 30
550 RCL 16
551 X^2
552 *
553 ST- 29
554 RCL 29
555 RCL 31
556 RCL 28
557 ST+ X
558 -
559 RCL 15
560 *
561 /
562 STO 29
563 RCL 15
564 *
565 4
566 /
567 RCL 16
568 +
569 RCL 15
570 *
571 3
572 /
573 RCL 14         
574 +
575 RCL 15
576 *
577 2
578 /
579 RCL 13
580 +
581 RCL 15
582 *
583 ST+ 12
584 RCL 29
585 RCL 15
586 *
587 3
588 /
589 RCL 16
590 +
591 RCL 15
592 *
593 2
594 /
595 RCL 14
596 +
597 RCL 15
598 *
599 ST+ 13
600 RCL 29
601 RCL 15
602 *
603 2
604 /
605 RCL 16
606 +
607 RCL 15
608 *
609 ST+ 14
610 RCL 29
611 RCL 15
612 ST+ 11
613 *
614 ST+ 16
615 FS? 10
616 GTO 03
617 RCL 28
618 RCL 24
619 X<> 25
620 STO 24
621 *
622 ST+ 27
623 ISG 32
624 CLX
625 RCL 12
626 FC? 00
627 STO IND 32
628 LBL 03
629 DSE 26
630 GTO 03
631 RCL 13
632 RCL 06
633 -
634 RCL 12
635 RCL 04
636 -
637 FS? 10
638 RTN
639 RCL 14
640 RCL 13
641 RCL 12
642 RCL 11
643 XEQ "L"
644 RCL 27
645 +
646 RCL 15
647 *
648 3
649 /
650 STO 11
651 RCL 16
652 STO 10
653 RCL 32
654 .1
655 %
656 33
657 +
658 FS? 00
659 CLX
660 STO 12
661 RCL 14
662 STO 08
663 RCL 07
664 RCL 11
665 CLD
666 END

 
        ( 985 bytes SIZE 033 or 34+N )
 
 

      STACK        INPUTS      OUTPUTS
           T             m   33.eee  or  0
           Z             n          y''(b)
           Y             m'          y''(a) 
           X             n'             I

   Where  m , n & m' , n' are your initial guesses for y''(a) & y'''(a)  and  I = §ab  L( x , y , y' , y" ) dx

Example:     Minimize  I  =  §01  ( x + y2 + 2 y'2 + y''2 ) dx  with  y(0) = 0 ,  y(1) = Cosh 1 , y'(0) = 1 , y'(1) = e

-Load in main memory:
 
 

 01 LBL "L"
 02 X<>Y
 03 X^2
 04 +
 05 X<>Y
 06 X^2
 07 ST+ X
 08 +
 09 X<>Y
 10 X^2
 11 +
 12 RTN

 
-Store a , b , y(a) , y(b) , y'(a) , y'(b)  into  R01 thru R06:

   0  STO 01              0           STO 03    1           STO 05
   1  STO 02    1.543080635  STO 04    1  E^X  STO 06

-If you choose  N = 10    and the initial guesses 0 , 0.1 for y''(0)  and the same for y'''(0)

   10  STO 00   FIX 4

    0       ENTER^
   0.1     ENTER^
    0       ENTER^
   0.1     XEQ "2ELG"  >>>>      Imin   =  10.5164                                        ---Execution time = 8s---               with V41 in turbo mode
                                    RDN      y"(0)   = -0.0230 = R07
                                    RDN      y"(1)   =   3.8681 = R08
                                    RDN    33.eee  = 33.043

-In R09 & R10 we have  y'''(0) = 3.1340  &  y'''(1) = 5.6297

-And we find in R33 to R43:
 
 

      x      0     0.1     0.2     0.3     0.4     0.5     0.6     0.7     0.8     0.9      1
      y      0  0.1004  0.2037  0.3131  0.4318  0.5631  0.7106  0.8781  1.0696  1.2897  1.5431

 
-With N =   50   & FIX 6 it yields  I = 10.515922
-With N = 1000 & FIX 9 -------   I = 10.515916337     ( these 2 results obtained with free42 )

-The exact solution is y(x) = x Cosh x
 
 

      y      0  0.1005  0.2040  0.3136  0.4324  0.5638  0.7113  0.8786  1.0699  1.2898  1.5431

 
-So, y"(0) = 0 & y"(1) = 2 Sinh 1 + Cosh 1 = 3.893483022...  , y'''(0) = 3 & y'''(1) = 3 Cosh 1 + Sinh 1 = 5.804443098...

-And the exact minimum integral is  Imin = ( 3 e2 - 1 - e-2 ) / 2 = 10.515916507   ( rounded to 9 decimals )

Notes:

-The precision is controlled by the display format ( line 87 )
-The HP41 displays the successive approximations of y"(a) in R07

-This program should be used with V41 or free42 !
 

     b)  With Calculus
 

-We try to find the extremum of  I = §ab  L( x , y , y' , y" ) dx   with  y(a) = A , y(b) = B , y'(a) = A' , y'(b) = B'

-The Euler-Lagrange equation is:     L / y - (d/dx) ( L / y' ) + (d2/dx2) ( L / y'' ) = 0            where  = partial derivative
 

>>> We assume that  2L / y''2  # 0
 

-You also have to calculate y''''(x) as a function of  x , y , y' , y" , y'''  and write a program - named LBL "T" - to calculate y'''' = T(x,y,y',y",y''')

-This 4th-order differential equation is solved by the "classical" Runge-Kutta method.
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R06 are to be initialized before executing "2ELG" )

                                      •  R01 = a     •  R03 = y(a)     •  R05 = y'(a)     R07 = y"(a)   R09 = y'''(a)   R11 =  Imin = §ab  L( x , y , y' , y" ) dx
                                      •  R02 = b     •  R04 = y(b)     •  R06 = y'(b)    R08 = y"(b)   R10 = y'''(b)   R12 = 37.eee    R13 to R36: temp

        And if  F00 is clear:    R37 = y(a)  R38 = y(a+h)  R39 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N

Flags:  F00 & F10            CF 00  ->  the values of the function y(x)  are stored in  R37 , R38 , .....
                                          SF 00  ->  no !

Subroutines:   A program, called  LBL "L"  calculating  L( x , y , y' ,y" )  in X-register with x , y , y' , y"  in registers R11-R12-R13-R14  respectively.
                        and another, called LBL "T"  calculating  T( x , y , y' , y" , y''' ) in X-register with x , y , y' , y" , y''' in R11-R12-R13-R14-R15 respectively.
 
 

-Line 266 is a three-byte GTO 03
 
 

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

 
        ( 460 bytes SIZE 037 or 38+N )
 
 

      STACK        INPUTS      OUTPUTS
           T             m   37.eee  or  0
           Z             n          y'''(a)
           Y             m'          y''(a) 
           X             n'             I

   Where  m , n & m' , n' are your initial guesses for y''(a) & y'''(a)  and  I = §ab  L( x , y , y' , y" ) dx

Example:     Minimize  I  =  §01  ( x + y2 + 2 y'2 + y''2 ) dx  with  y(0) = 0 ,  y(1) = Cosh 1 , y'(0) = 1 , y'(1) = e

-Writing    L / y - (d/dx) ( L / y' ) + (d2/dx2) ( L / y'' ) = 0     gives:

   2.y - 4.y" + 2.y'''' = 0   whence  y'''' = 2.y" - y
 

-Load in main memory:
 
 

 01 LBL "L"
 02 RCL 11
 03 RCL 12
 04 X^2
 05 +
 06 RCL 13
 07 X^2
 08 ST+ X
 09 +
 10 RCL 14
 11 X^2
 12 +
 13 RTN
 14 LBL "T"
 15 RCL 14
 16 ST+ X
 17 RCL 12
 18 -
 19 RTN

 
-Store a , b , y(a) , y(b) , y'(a) , y'(b)  into  R01 thru R06:

   0  STO 01              0           STO 03    1           STO 05
   1  STO 02    1.543080635  STO 04    1  E^X  STO 06

-If you choose  N = 10    and the initial guesses 0 , 0.1 for y''(0)  and the same for y'''(0)

   10  STO 00   FIX 6

    0       ENTER^
   0.1     ENTER^
    0       ENTER^
   0.1     XEQ "2ELG"  >>>>      Imin   =  10.516312                                            ---Execution time = 6m15s---
                                    RDN      y"(0)  =  0.000030 = R07
                                    RDN      y'''(0) =  2.999942 = R09
                                    RDN    37.eee  = 37.047

-In R08 & R10 we have  y"(1)   =  3.893458  &  y'''(1) = 5.804386

-And we find in R37 to R47:
 
 

         x         0       0.1       0.2       0.3       0.4       0.5       0.6       0.7       0.8       0.9        1
         y         0  0.100500  0.204013  0.313601  0.432429  0.563813  0.711280  0.878619  1.069949  1.289778  1.543081

 
-The exact solution is y(x) = x Cosh x
 
 

         y         0  0.100500  0.204013  0.313602  0.432429  0.563813  0.711279  0.878618  1.069948  1.289778  1.543081

 
-Of course, the precision is much better !
 

-With N =  40  & FIX 6 , it yields:   I = 10.515918
-With N = 100 & FIX 8 , it yields:   I = 10.51591654

-The exact minimum integral is  Imin = ( 3 e2 - 1 - e-2 ) / 2 = 10.515916507   ( rounded to 9 decimals )
 

Notes:

-The precision is controlled by the display format ( line 88 )
-The HP41 displays the successive approximations of y"(a) in R07
 

3°)  First Order Lagrangian - Two Functions
 

     a)  Without Calculus
 

-The Euler-Lagrange equation becomes a system of 2 differential equations:

      L / y = (d/dx) ( L / y' )
      L / z = (d/dx) ( L / z' )

-After some calculus, it yields:

     y" 2L / y'2 + z" 2L / y'z' = L / y - 2L / xy' - y' 2L / yy' - z' 2L / zy'

     y" 2L / y'z' + z" 2L / z'2 = L / z - 2L / xz' - y' 2L / yz' - z' 2L / zz'
 

>>>> Assuming the determinant    ( 2L / y'2 ) ( 2L / z'2 ) - ( 2L / y'z' )2  #  0     the following routine solves this system.
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R06 are to be initialized before executing "ELG2" )

                                      •  R01 = a     •  R03 = y(a)     •  R05 = z(a)     R07 = y'(a)   R09 = z'(a)   R11 =  Imin = §ab  L( x , y , z , y' , z' ) dx
                                      •  R02 = b     •  R04 = y(b)     •  R06 = z(b)    R08 = y'(b)   R10 = z'(b)   R12 = 43.eee    R13 to R42: temp

        And if  F00 is clear:    R43 = y(a)  R44 = y(a+h)  R45 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N
                                          Ree+1 = z(a)  .............................................................  Ree+N+1 = z(b)

Flags:  F00 & F10            CF 00  ->  the values of the function y(x)  are stored in  R43 , R44 , .....
                                          SF 00  ->  no !

Subroutine: A program, called  LBL "L"  calculating  L( x , y , z , y' , z' )  in X-register with x , y , z , y' , z'  in registers R11-R12-R13-R14-R15  respectively.
 

-Line 325 is a three-byte GTO 03
 
 

 01 LBL "ELG2"
 02 STO 10         
 03 RDN
 04 STO 09
 05 RDN
 06 STO 08
 07 X<>Y
 08 STO 07
 09 RCL 00
 10 2
 11 MOD
 12 ST+ 00
 13 RCL 02
 14 RCL 01
 15 -
 16 RCL 00
 17 /
 18 STO 16
 19 ST+ X
 20 STO 17
 21 11
 22 STO 20
 23 12
 24 STO 21
 25 13
 26 STO 22
 27 14
 28 STO 23
 29 15
 30 STO 24
 31 SF 10
 32 LBL 01
 33 VIEW 07
 34 RCL 09
 35 RCL 08
 36 XEQ 12
 37 STO 33
 38 X<>Y
 39 STO 32
 40 RCL 10
 41 RCL 07
 42 XEQ 12
 43 STO 35
 44 X<>Y
 45 STO 34
 46 RCL 09
 47 RCL 07
 48 XEQ 12
 49 STO 31
 50 ST- 33
 51 ST- 35
 52 X<>Y
 53 STO 30
 54 ST- 32
 55 ST- 34
 56 RCL 32
 57 RCL 35         
 58 *
 59 RCL 33
 60 RCL 34
 61 *
 62 -
 63 STO 36
 64 X=0?
 65 GTO 13
 66 RCL 31
 67 RCL 34
 68 *
 69 RCL 30
 70 RCL 35
 71 *
 72 -
 73 RCL 36
 74 /
 75 RCL 08
 76 RCL 07
 77 STO 08
 78 -
 79 *
 80 ST+ 07
 81 ABS
 82 RCL 30
 83 RCL 33
 84 *
 85 RCL 31
 86 RCL 32
 87 *
 88 -
 89 RCL 36
 90 /
 91 RCL 10
 92 RCL 09
 93 STO 10
 94 -
 95 *
 96 ST+ 09
 97 ABS
 98 +
 99 RND
100 X#0?
101 GTO 01
102 LBL 13
103 43
104 STO 38
105 2
106 STO 39
107 X^2
108 STO 40
109 RCL 09
110 RCL 07
111 CF 10
112 GTO 12
113 LBL 07
114 RCL 16         
115 ST+ IND 25
116 ST+ IND 26
117 XEQ "L"
118 STO 27
119 RCL 17
120 ST- IND 26
121 XEQ "L"
122 ST- 27
123 RCL 17
124 ST- IND 25
125 XEQ "L"
126 ST+ 27
127 RCL 17
128 ST+ IND 26
129 XEQ "L"
130 ST- 27
131 RCL 16
132 ST+ IND 25
133 ST- IND 26
134 RCL 27
135 RTN
136 LBL 12
137 STO 14
138 X<>Y
139 STO 15
140 RCL 05
141 STO 13
142 RCL 00
143 STO 41
144 RCL 01
145 STO 11
146 RCL 03
147 STO 12
148 FS? 10
149 GTO 03
150 STO 43
151 44
152 RCL 00
153 +
154 RCL 13
155 FC? 00
156 STO IND Y
157 XEQ "L"
158 CHS
159 STO 42
160 LBL 03
161 RCL 16
162 ST+ 12
163 XEQ "L"
164 STO 18
165 RCL 17         
166 ST- 12
167 XEQ "L"
168 ST- 18
169 RCL 16
170 ST+ 12
171 ST+ 13
172 XEQ "L"
173 STO 19
174 RCL 17
175 ST- 13
176 XEQ "L"
177 ST- 19
178 RCL 16
179 ST+ 13
180 RCL 17
181 ST* 18
182 ST* 19
183 RCL 20
184 STO 25
185 RCL 23
186 STO 26
187 XEQ 07
188 ST- 18
189 RCL 24
190 STO 26
191 XEQ 07
192 ST- 19
193 RCL 21
194 STO 25
195 XEQ 07
196 RCL 14
197 *
198 ST- 19
199 RCL 23
200 STO 26
201 XEQ 07
202 RCL 14
203 *
204 ST- 18
205 RCL 22
206 STO 25
207 XEQ 07
208 RCL 15
209 *
210 ST- 18
211 RCL 24
212 STO 26
213 XEQ 07
214 RCL 15
215 *
216 ST- 19
217 RCL 23         
218 STO 25
219 XEQ 07
220 STO 28
221 RCL 16
222 ST+ 14
223 XEQ "L"
224 STO 29
225 RCL 17
226 ST- 14
227 XEQ "L"
228 ST+ 29
229 RCL 16
230 ST+ 14
231 ST+ 15
232 XEQ "L"
233 STO 30
234 RCL 17
235 ST- 15
236 XEQ "L"
237 ST+ 30
238 RCL 16
239 ST+ 15
240 XEQ "L"
241 STO 37
242 ST+ X
243 ST- 29
244 ST- 30
245 4
246 ST* 29
247 ST* 30
248 RCL 18
249 RCL 30
250 *
251 RCL 19
252 RCL 28
253 *
254 -
255 RCL 29
256 RCL 30
257 *
258 RCL 28
259 X^2
260 -
261 STO 26
262 /
263 STO 25
264 RCL 19
265 RCL 29
266 *
267 RCL 18
268 RCL 28         
269 *
270 -
271 RCL 26
272 /
273 STO 26
274 RCL 16
275 *
276 2
277 /
278 RCL 15
279 +
280 RCL 16
281 *
282 ST+ 13
283 RCL 25
284 RCL 16
285 *
286 2
287 /
288 RCL 14
289 +
290 RCL 16
291 *
292 ST+ 12
293 RCL 26
294 LASTX
295 *
296 ST+ 15
297 RCL 25
298 LASTX
299 ST+ 11
300 *
301 ST+ 14
302 FS? 10
303 GTO 03
304 ISG 38
305 CLX
306 RCL 12
307 FC? 00
308 STO IND 38
309 RCL 38
310 RCL 00
311 +
312 1
313 +
314 RCL 13
315 FC? 00
316 STO IND Y
317 RCL 37
318 RCL 40
319 X<> 39
320 STO 40         
321 *
322 ST+ 42
323 LBL 03
324 DSE 41
325 GTO 03
326 RCL 13
327 RCL 06
328 -
329 RCL 12
330 RCL 04
331 -
332 FS? 10
333 RTN
334 XEQ "L"
335 RCL 42
336 +
337 RCL 16
338 *
339 3
340 /
341 STO 11
342 RCL 15
343 STO 10
344 RCL 14
345 STO 08
346 RCL 38
347 .1
348 %
349 43
350 +
351 FS? 00
352 CLX
353 STO 12
354 RCL 09
355 RCL 07
356 RCL 11
357 CLD
358 END

 
        ( 605 bytes SIZE 045 or 46+2.N )
 
 

      STACK        INPUTS      OUTPUTS
           T             m   43.eee  or  0
           Z             n          z'(a)
           Y             m'          y'(a) 
           X             n'             I

   Where  m , n & m' , n' are your initial guesses for y'(a) & z'(a)  and  I = §ab  L( x , y , z , y' , z' ) dx

Example:     Minimize  I  =  §12  ( x y2 z - x2 z2 + y'2 + z'2 / 2 ) dx   with  y(1) = 1 ,  y(2) = 2 ,  z(1) = 0 ,  z(2) = 1

-Load this subroutine in main memory:
 
 

 01 LBL "L"
 02 RCL 12
 03 X^2
 04 RCL 11
 05 RCL 13
 06 *
 07 ST* Y
 08 X^2
 09 -
 10 RCL 14
 11 X^2
 12 +
 13 RCL 15
 14 X^2
 15 2
 16 /
 17 +
 18 RTN

 
-Store a , b , y(a) , y(b) , z(a) , z(b)  into  R01 thru R06:

   1  STO 01   1   STO 03   0    STO 05
   2  STO 02   2   STO 04   1    STO 06

-With  N = 10   10  STO 00  and if you choose 0  1  as initial guesses for  y'(1) & z'(1)

        FIX 4  CF 00

    0  ENTER^
    1  ENTER^
    0  ENTER^
    1  XEQ "ELG2"  >>>>       Imin   =  2.7454                                           ---Execution time = 9s---                     With V41 in turbo mode
                               RDN      y'(1)   =  0.7864 = R07
                               RDN      z'(1)   =  0.3864 = R09
                               RDN    43.eee  = 43.0530

-In R08 & R10 we have  y'(2) = 1.7293  &  z'(2) = 1.4937

-And we find in R43 to R53 & R54 to R64
 
 

      x      1     1.1     1.2     1.3     1.4     1.5     1.6     1.7     1.8     1.9      2
      y      1  1.0786  1.1575  1.2374  1.3192  1.4047  1.4960  1.5963  1.7098  1.8420  2.0000
      z      0  0.0436  0.0981  0.1651  0.2459  0.3412  0.4510  0.5743  0.7090  0.8521  1.0000

 
-With  N = 100 & FIX 6   V41 returns  I = 2.746811  ( free42 gives  2.746812734 )
-With  N = 1000 , free42 ->  2.746832062

-Compared to the results obtained by the following program, these values are not very accurate...
 

Notes:

-The precision is controlled by the display format ( line 99 )
-The HP41 displays the successive approximations of y'(a) in R07
 

     b)  With Calculus
 

-The Euler-Lagrange equations are:

      L / y = (d/dx) ( L / y' )
      L / z = (d/dx) ( L / z' )

-This system of 2 differential equations is solved by the "classical" Runge-Kutta method, assuming that we may express

      y" = T(x,y,z,y',z')   &  z" = U(x,y,z,y',z')

-You have to find these 2 differential equtions and write a program to compute T & U
 
 

Data Registers:           •  R00 = N = a positive even integer = Number of subintervals

                                       ( Registers R00 thru R06 are to be initialized before executing "ELG2" )

                                      •  R01 = a     •  R03 = y(a)     •  R05 = z(a)     R07 = y'(a)   R09 = z'(a)   R11 =  Imin = §ab  L( x , y , z , y' , z' ) dx
                                      •  R02 = b     •  R04 = y(b)     •  R06 = z(b)    R08 = y'(b)   R10 = z'(b)   R12 = 37.eee    R13 to R36: temp

        And if  F00 is clear:    R37 = y(a)  R38 = y(a+h)  R39 = y(a+2.h)  .......................   Reee = y(b)       with  h = (b-a) / N
                                          Ree+1 = z(a)  .............................................................  Ree+N+1 = z(b)

Flags:  F00 & F10            CF 00  ->  the values of the function y(x)  are stored in  R37 , R38 , .....
                                          SF 00  ->  no !

Subroutines: A program, called  LBL "L"  calculating  L( x , y , z , y' , z' )  in X-register with x , y , z , y' , z'  in registers R11-R12-R13-R14-R15  respectively.
                        and another, called LBL "T"  calculating  T( x , y , z , y' , z' ) in Y-register
                                                                             and    U( x , y , z , y' , z' ) in X-register with x , y , z , y' , z'  in R11-R12-R13-R14-R15 respectively.
 
 

-Line 278 is a three-byte GTO 03
 
 

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

 
        ( 482 bytes SIZE 038 or 39+2.N )
 
 

      STACK        INPUTS      OUTPUTS
           T             m   37.eee  or  0
           Z             n          z'(a)
           Y             m'          y'(a) 
           X             n'             I

   Where  m , n & m' , n' are your initial guesses for y'(a) & z'(a)  and  I = §ab  L( x , y , z , y' , z' ) dx

Example:     Minimize  I  =  §12  ( x y2 z - x2 z2 + y'2 + z'2 / 2 ) dx   with  y(1) = 1 ,  y(2) = 2 ,  z(1) = 0 ,  z(2) = 1

-The Euler-Lagrange system is:

   y" =   x y z
   z" = - 2 x2 z + x y2

-Load these subroutines in main memory:
 
 

 01 LBL "L"
 02 RCL 12
 03 X^2
 04 RCL 11
 05 RCL 13
 06 *
 07 ST* Y
 08 X^2
 09 -
 10 RCL 14
 11 X^2
 12 +
 13 RCL 15
 14 X^2
 15 2
 16 /
 17 +
 18 RTN
 19 LBL "T"
 20 RCL 12
 21 ENTER^
 22 X^2
 23 RCL 13
 24 ST* Z
 25 ST+ X
 26 RCL 11
 27 ST* T
 28 ST*Z
 29 X^2
 30 *
 31 -
 32 RTN

 
-Store a , b , y(a) , y(b) , z(a) , z(b)  into  R01 thru R06:

   1  STO 01   1   STO 03   0    STO 05
   2  STO 02   2   STO 04   1    STO 06

-With  N = 10      10  STO 00  and if you choose 0  1  as initial guesses for  y'(1) & z'(1)

        FIX 4  CF 00

    0  ENTER^
    1  ENTER^
    0  ENTER^
    1  XEQ "ELG2"  >>>>       Imin   =  2.7473                                                           ---Execution time = 13mn54---
                               RDN      y'(1)   =  0.7200 = R07
                               RDN      z'(1)   =  0.4538 = R09
                               RDN    37.eee  = 37.0470

-In R08 & R10 we have  y'(2) = 1.8909  &  z'(2) = 1.3289

-And we find in R37 to R47 & R48 to R58
 
 

      x      1     1.1     1.2     1.3     1.4     1.5     1.6     1.7     1.8     1.9      2
      y      1  1.0721  1.1448  1.2191  1.2964  1.3788  1.4689  1.5706  1.6887  1.8292  2.0000
      z      0  0.0506  0.1126  0.1871  0.2745  0.3745  0.4862  0.6074  0.7354  0.8672  1.0000

 
-With  N = 100 & FIX 9   V41 returns  I = 2.746832313  ( free42 gives  2.746832312 )
-With  N = 1000 , free42 ->  2.746832261
 

Notes:

-The precision is controlled by the display format ( line 88 )
-The HP41 displays the successive approximations of y'(a) in R07

-I don't know the exact solution of this problem !
 

Reference:

[1] - https://en.wikipedia.org/w/index.php?title=Euler–Lagrange_equation&oldid=912228555