Garden-Hose Method for the HP-41
Overview
1°) Second order Differential Equations: y" = f(x,y,y')
a) 4th-order Formula
b) 6th-order Formula
2°) Third order Differential Equations: y''' = f(x,y,y',y")
a) y(a) = A & y(b) = B &
y"(a) = A" [ or y'(a) = A' ] -> y'(a) = ? [ or y"(a)
= ? ]
a1) 4th-order Formula
a2) 6th-order Formula
b) y(a) = A & y(b)
= B & y(c) = C -> y'(a) = ? & y"(a) = ?
b1) 4th-order Formula
b2) 6th-order Formula
1°) Second Order Differential Equations
a) 4th Order Formula
-We want to find y'(a) such that the solution of y" = f(x,y,y') verifies y(a) = A & y(b) = B
-We know a , A , b , B and GRDH computes y'(a):
-You choose 2 initial guesses y'1 & y'2 and "GRDH" finds y'(a) with the secant method: this is the Garden-Hose method.
Data Registers: • R00 = function name ( Registers R00 thru R05 are to be initialized before executing "GRDH" )
• R01 = a • R03 = A • R05 = N = number of steps R06 thru R16: temp• R02 = b • R04 = B
Flags: /
Subroutine: A program which computes y" = f(x,y,y') assuming x , y , y' are in registers X , Y , Z ( respectively ) upon entry
01 LBL "GRDH" 02 STO 14 03 RCL 02 04 RCL 01 05 - 06 RCL 05 07 ST+ X 08 / 09 STO 09 10 R^ 11 STO 15 12 XEQ 00 13 STO 10 14 GTO 02 15 LBL 00 16 STO 08 17 RCL 05 18 STO 16 19 RCL 03 20 STO 07 21 RCL 01 22 STO 06 23 LBL 01 |
24 RCL 08 25 RCL 07 26 RCL 06 27 XEQ IND 00 28 RCL 09 29 ST+ 06 30 * 31 STO 12 32 RCL 08 33 + 34 STO 13 35 LASTX 36 RCL 09 37 * 38 STO 11 39 RCL 07 40 + 41 RCL 06 42 XEQ IND 00 43 RCL 09 44 ST* 13 45 * 46 ST+ 12 |
47 ST+ 12 48 RCL 08 49 + 50 ENTER 51 X<> 13 52 ST+ 11 53 ST+ 11 54 RCL 07 55 + 56 RCL 06 57 XEQ IND 00 58 RCL 09 59 ST+ 06 60 ST+ X 61 ST* 13 62 * 63 ST+ 12 64 RCL 08 65 + 66 ENTER 67 X<> 13 68 ST+ 11 69 RCL 07 |
70 + 71 RCL 06 72 XEQ IND 00 73 RCL 09 74 ST* 13 75 * 76 RCL 12 77 + 78 3 79 / 80 ST+ 08 81 RCL 11 82 RCL 13 83 + 84 3 85 / 86 ST+ 07 87 DSE 16 88 GTO 01 89 RCL 07 90 RCL 04 91 - |
92 RTN 93 LBL 02 94 VIEW 14 95 RCL 14 96 XEQ 00 97 ENTER 98 ENTER 99 X<> 10 100 - 101 X#0? 102 / 103 RCL 15 104 RCL 14 105 STO 15 106 STO T 107 - 108 * 109 + 110 STO 14 111 X#Y? 112 GTO 02 113 END |
( 155 bytes / SIZE 017 )
STACK | INPUTS | OUTPUTS |
Y | y1'(a) | y'(a) |
X | y2'(a) | y'(a) |
X-inputs are initial guesses
Example: y" = x y y'
y(0) = 1 y(1) = 3
01 LBL "T" 02 * 03 * 04 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 03
b = 1 STO 02 B = 3 STO 04
-If we choose N = 10 ( so h = 0.1 ) and 2 initial guesses: 1 & 2
10 STO 05
1 ENTER^
2 XEQ "GRDH" >>>> y'(0) = 1.411870345 ---Execution time = 238s---
-With N = 100 STO 05, the same initial guesses give y'(0) = 1.411819034
Notes:
-Check that R08 = B ( at least very approximately ) or add RCL 08 X<>Y after line 112.
-If the error is too large, change the initial guesses...
b) 6th Order Formula
-6th order Runge-Kutta formula will give a better precision with the same stepsize:
Data Registers: • R00 = function name ( Registers R00 thru R05 are to be initialized before executing "GRDH" )
• R01 = a • R03 = A • R05 = N = number of steps R06 thru R19: temp• R02 = b • R04 = B
Flags: /
Subroutine: A program which computes y" = f(x,y,y') assuming x , y , y' are in registers X , Y , Z ( respectively ) upon entry
01 LBL "GRDH" 02 STO 17 03 RCL 02 04 RCL 01 05 - 06 RCL 05 07 / 08 STO 09 09 R^ 10 STO 18 11 XEQ 00 12 STO 19 13 GTO 02 14 LBL 00 15 STO 08 16 RCL 05 17 STO 16 18 RCL 03 19 STO 07 20 RCL 01 21 STO 06 22 LBL 01 23 RCL 08 24 RCL 07 25 RCL 06 26 XEQ IND 00 27 RCL 09 28 * 29 STO 10 30 3 31 / 32 RCL 08 33 + 34 RCL 10 35 18 36 / 37 RCL 08 38 3 39 / 40 + 41 RCL 09 42 * 43 RCL 07 44 + 45 RCL 09 46 3 47 / 48 RCL 06 49 + 50 XEQ IND 00 51 RCL 09 52 * 53 STO 11 |
54 ST+ X 55 3 56 / 57 RCL 08 58 + 59 RCL 11 60 ST+ X 61 9 62 / 63 RCL 08 64 ST+ X 65 3 66 / 67 + 68 RCL 09 69 * 70 RCL 07 71 + 72 RCL 09 73 ST+ X 74 3 75 / 76 RCL 06 77 + 78 XEQ IND 00 79 RCL 09 80 * 81 STO 12 82 CHS 83 RCL 11 84 4 85 * 86 + 87 RCL 10 88 + 89 12 90 / 91 RCL 08 92 + 93 RCL 10 94 RCL 12 95 + 96 36 97 / 98 RCL 08 99 3 100 / 101 + 102 RCL 09 103 * 104 RCL 07 105 + 106 RCL 09 |
107 3 108 / 109 RCL 06 110 + 111 XEQ IND 00 112 RCL 09 113 * 114 STO 13 115 90 116 * 117 RCL 12 118 35 119 * 120 + 121 RCL 11 122 110 123 * 124 - 125 RCL 10 126 25 127 * 128 + 129 48 130 / 131 RCL 08 132 + 133 RCL 13 134 270 135 * 136 RCL 12 137 35 138 * 139 + 140 RCL 11 141 330 142 * 143 - 144 RCL 10 145 125 146 * 147 + 148 288 149 / 150 RCL 08 151 5 152 * 153 6 154 / 155 + 156 RCL 09 157 * 158 RCL 07 159 + |
160 RCL 09 161 5 162 * 163 6 164 / 165 RCL 06 166 + 167 XEQ IND 00 168 RCL 09 169 * 170 STO 14 171 10 172 / 173 RCL 13 174 2 175 / 176 + 177 RCL 12 178 8 179 / 180 - 181 RCL 11 182 11 183 * 184 24 185 / 186 - 187 RCL 10 188 3 189 * 190 20 191 / 192 + 193 RCL 08 194 + 195 RCL 14 196 15 197 / 198 CHS 199 RCL 13 200 12 201 / 202 - 203 RCL 12 204 16 205 / 206 + 207 RCL 11 208 11 209 * 210 144 211 / 212 + |
213 RCL 10 214 40 215 / 216 + 217 RCL 08 218 6 219 / 220 + 221 RCL 09 222 * 223 RCL 07 224 + 225 RCL 09 226 6 227 / 228 RCL 06 229 + 230 XEQ IND 00 231 RCL 09 232 * 233 STO 15 234 1600 235 * 236 RCL 14 237 128 238 * 239 + 240 RCL 13 241 2360 242 * 243 - 244 RCL 12 245 215 246 * 247 + 248 RCL 11 249 1980 250 * 251 + 252 RCL 10 253 783 254 * 255 - 256 780 257 / 258 RCL 08 259 + 260 RCL 15 261 4 E3 262 * 263 RCL 14 264 64 265 * |
266 + 267 RCL 13 268 4720 269 * 270 - 271 RCL 12 272 215 273 * 274 + 275 RCL 11 276 3960 277 * 278 + 279 RCL 10 280 2349 281 * 282 - 283 2340 284 / 285 RCL 08 286 + 287 RCL 09 288 * 289 RCL 07 290 + 291 RCL 09 292 RCL 06 293 + 294 XEQ IND 00 295 RCL 09 296 * 297 RCL 15 298 80 299 * 300 RCL 14 301 16 302 * 303 + 304 RCL 13 305 110 306 * 307 + 308 RCL 12 309 55 310 * 311 + 312 RCL 10 313 39 314 * 315 + 316 600 317 / 318 RCL 08 |
319 + 320 RCL 09 321 ST+ 06 322 * 323 ST+ 07 324 CLX 325 RCL 10 326 + 327 13 328 * 329 RCL 12 330 RCL 13 331 + 332 55 333 * 334 + 335 RCL 14 336 RCL 15 337 + 338 32 339 * 340 + 341 200 342 / 343 ST+ 08 344 DSE 16 345 GTO 01 346 RCL 07 347 RCL 04 348 - 349 RTN 350 LBL 02 351 VIEW 17 352 RCL 17 353 XEQ 00 354 ENTER 355 ENTER 356 X<> 19 357 - 358 X#0? 359 / 360 RCL 18 361 RCL 17 362 STO 18 363 STO T 364 - 365 * 366 + 367 STO 17 368 X#Y? 369 GTO 02 370 END |
( 492 bytes / SIZE 020 )
STACK | INPUTS | OUTPUTS |
Y | y1'(a) | y'(a) |
X | y2'(a) | y'(a) |
X-inputs are initial guesses
Example: y" = x y y'
y(0) = 1 y(1) = 3
01 LBL "T" 02 * 03 * 04 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 03
b = 1 STO 02 B = 3 STO 04
-If we choose N = 10 ( so h = 0.1 ) and 2 initial guesses: 1 & 2
10 STO 05
1 ENTER^
2 XEQ "GRDH" >>>> y'(0) = 1.411819270
-With N = 20 STO 05, the same initial guesses give y'(0) = 1.411819031
Notes:
-Check that R08 = B ( at least very approximately ) or add RCL 08 X<>Y after line 369.
-If the error is too large, change the initial guesses...
2°) Third Order Differential Equations
a) y(a) = A & y(b) = B & y"(a) = A" [ or y'(a) = A' ] -> y'(a) = ? [ or y"(a) = ? ]
a1) 4th Order Formula
-We want to find y'(a) such that the solution of y''' = f(x,y,y',y") with y"(a) = A" verifies y(a) = A & y(b) = B
-We know a , A , b , B , A" and "GRDH3" computes y'(a) with the secant method.
Data Registers: • R00 = function name ( Registers R00 thru R06 are to be initialized before executing "GRDH3" )
• R01 = a • R03 = A • R05 = y"(a) R07 thru R20: temp• R02 = b • R04 = B • R06 = N = number of steps
Flags: /
Subroutine: A program which computes y''' = f(x,y,y',y") assuming x , y , y' , y" are in registers X , Y , Z , T ( respectively ) upon entry
-Lines 14 & 118 are three-byte GTOs
01 LBL "GRDH3" 02 STO 17 03 RCL 02 04 RCL 01 05 - 06 RCL 06 07 ST+ X 08 / 09 STO 11 10 R^ 11 STO 18 12 XEQ 00 13 STO 19 14 GTO 02 15 LBL 00 16 STO 09 17 RCL 05 18 STO 10 19 RCL 06 20 STO 20 21 RCL 03 22 STO 08 23 RCL 01 24 STO 07 25 LBL 01 26 RCL 10 27 RCL 09 28 RCL 08 29 RCL 07 |
30 XEQ IND 00 31 RCL 11 32 ST+ 07 33 * 34 STO 14 35 RCL 10 36 + 37 STO 15 38 RCL 11 39 LASTX 40 * 41 STO 13 42 RCL 09 43 + 44 STO 16 45 LASTX 46 RCL 11 47 * 48 STO 12 49 RCL 08 50 + 51 RCL 07 52 XEQ IND 00 53 RCL 11 54 ST* 15 55 ST* 16 56 * 57 ST+ 14 58 ST+ 14 |
59 RCL 10 60 + 61 ENTER 62 X<> 15 63 ST+ 13 64 ST+ 13 65 RCL 09 66 + 67 ENTER 68 X<> 16 69 ST+ 12 70 ST+ 12 71 RCL 08 72 + 73 RCL 07 74 XEQ IND 00 75 RCL 11 76 ST+ 07 77 ST+ X 78 ST* 15 79 ST* 16 80 * 81 ST+ 14 82 RCL 10 83 + 84 ENTER 85 X<> 15 86 ST+ 13 87 RCL 09 |
88 + 89 ENTER 90 X<> 16 91 ST+ 12 92 RCL 08 93 + 94 RCL 07 95 XEQ IND 00 96 RCL 11 97 ST* 15 98 ST* 16 99 * 100 RCL 14 101 + 102 3 103 / 104 ST+ 10 105 RCL 13 106 RCL 15 107 + 108 3 109 / 110 ST+ 09 111 RCL 12 112 RCL 16 113 + 114 3 115 / |
116 ST+ 08 117 DSE 20 118 GTO 01 119 RCL 08 120 RCL 04 121 - 122 RTN 123 LBL 02 124 VIEW 17 125 RCL 17 126 XEQ 00 127 ENTER 128 ENTER 129 X<> 19 130 - 131 X#0? 132 / 133 RCL 18 134 RCL 17 135 STO 18 136 STO T 137 - 138 * 139 + 140 STO 17 141 X#Y? 142 GTO 02 143 END |
( 207 bytes / SIZE 021 )
STACK | INPUTS | OUTPUTS |
Y | y1'(a) | y'(a) |
X | y2'(a) | y'(a) |
X-inputs are initial guesses
Example: y''' = y" + x y y'
y(0) = 1 y(1) = 3
y"(0) = 2
01 LBL "T" 02 * 03 * 04 + 05 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 03 A'' = 2 STO 05
b = 1 STO 02 B = 3 STO 04
-If we choose N = 10 ( so h = 0.1 ) and 2 initial guesses: 1 & 2
10 STO 06
1 ENTER^
2 XEQ "GRDH3" >>>> y'(0) = 0.445253455 ---Execution time = 4m41s---
-With N = 100 STO 06, the same initial guesses give y'(0) = 0.445221983
Notes:
-If the error is too large, change the initial guesses...
-If you know y'(a) and if y"(a) is unknown, simply replace line 16 by STO 10 & line 18 by STO 09 [ or use a flag... ] and store y'(a) into R05...
-With the example above, if y'(0) = 2 , it yields y"(0) = -0.244541152 with N = 10 and y"(0) = -0.244560355 with N = 100
a2) 6th Order Formula
Data Registers: • R00 = function name ( Registers R00 thru R06 are to be initialized before executing "GRDH3" )
• R01 = a • R03 = A • R05 = y"(a) R07 thru R33: temp• R02 = b • R04 = B • R06 = N = number of steps
Flags: /
Subroutine: A program which computes y''' = f(x,y,y',y") assuming x , y , y' , y" are in registers X , Y , Z , T ( respectively ) upon entry
-Lines 13 & 453 are three-byte GTOs
01 LBL "GRDH3" 02 STO 07 03 RCL 02 04 RCL 01 05 - 06 RCL 06 07 / 08 STO 13 09 R^ 10 STO 08 11 XEQ 00 12 STO 32 13 GTO 02 14 LBL 00 15 STO 11 16 RCL 05 17 STO 12 18 RCL 06 19 STO 33 20 RCL 03 21 STO 10 22 RCL 01 23 STO 09 24 LBL 01 25 RCL 12 26 STO 15 27 RCL 11 28 STO 14 29 RCL 10 30 RCL 09 31 XEQ IND 00 32 RCL 13 33 ST* 14 34 ST* 15 35 * 36 STO 16 37 3 38 / 39 RCL 12 40 + 41 STO 18 42 RCL 15 43 3 44 / 45 RCL 11 46 + 47 STO 17 48 RCL 14 49 3 50 / 51 RCL 10 52 + 53 RCL 13 54 3 55 / 56 RCL 09 57 + 58 RCL 18 59 RDN 60 XEQ IND 00 61 RCL 13 62 ST* 17 63 ST* 18 64 * 65 STO 19 66 1.5 67 / 68 RCL 12 |
69 + 70 STO 21 71 RCL 18 72 1.5 73 / 74 RCL 11 75 + 76 STO 20 77 RCL 17 78 1.5 79 / 80 RCL 10 81 + 82 RCL 13 83 1.5 84 / 85 RCL 09 86 + 87 RCL 21 88 RDN 89 XEQ IND 00 90 RCL 13 91 ST* 20 92 ST* 21 93 * 94 STO 22 95 CHS 96 RCL 19 97 4 98 * 99 + 100 RCL 16 101 + 102 12 103 / 104 RCL 12 105 + 106 STO 24 107 RCL 18 108 4 109 * 110 RCL 21 111 - 112 RCL 15 113 + 114 12 115 / 116 RCL 11 117 + 118 STO 23 119 RCL 17 120 4 121 * 122 RCL 20 123 - 124 RCL 14 125 + 126 12 127 / 128 RCL 10 129 + 130 RCL 13 131 3 132 / 133 RCL 09 134 + 135 RCL 24 136 RDN |
137 XEQ IND 00 138 RCL 13 139 ST* 23 140 ST* 24 141 * 142 STO 25 143 90 144 * 145 RCL 22 146 35 147 * 148 + 149 RCL 19 150 110 151 * 152 - 153 RCL 16 154 25 155 * 156 + 157 48 158 / 159 RCL 12 160 + 161 STO 27 162 RCL 24 163 90 164 * 165 RCL 21 166 35 167 * 168 + 169 RCL 18 170 110 171 * 172 - 173 RCL 15 174 25 175 * 176 + 177 48 178 / 179 RCL 11 180 + 181 STO 26 182 RCL 23 183 90 184 * 185 RCL 20 186 35 187 * 188 + 189 RCL 17 190 110 191 * 192 - 193 RCL 14 194 25 195 * 196 + 197 48 198 / 199 RCL 10 200 + 201 RCL 13 202 1.2 203 / 204 RCL 09 |
205 + 206 RCL 27 207 RDN 208 XEQ IND 00 209 RCL 13 210 ST* 26 211 ST* 27 212 * 213 STO 28 214 10 215 / 216 RCL 25 217 2 218 / 219 + 220 RCL 22 221 8 222 / 223 - 224 RCL 19 225 11 226 * 227 24 228 / 229 - 230 RCL 16 231 .15 232 * 233 + 234 RCL 12 235 + 236 STO 30 237 RCL 27 238 10 239 / 240 RCL 24 241 2 242 / 243 + 244 RCL 21 245 8 246 / 247 - 248 RCL 18 249 11 250 * 251 24 252 / 253 - 254 RCL 15 255 .15 256 * 257 + 258 RCL 11 259 + 260 STO 29 261 RCL 26 262 10 263 / 264 RCL 23 265 2 266 / 267 + 268 RCL 20 269 8 270 / 271 - 272 RCL 17 |
273 11 274 * 275 24 276 / 277 - 278 RCL 14 279 .15 280 * 281 + 282 RCL 10 283 + 284 RCL 13 285 6 286 / 287 RCL 09 288 + 289 RCL 30 290 RDN 291 XEQ IND 00 292 RCL 13 293 ST* 29 294 ST* 30 295 * 296 STO 31 297 40 298 X^2 299 * 300 RCL 28 301 128 302 * 303 + 304 RCL 25 305 2360 306 * 307 - 308 RCL 22 309 215 310 * 311 + 312 RCL 19 313 1980 314 * 315 + 316 RCL 16 317 783 318 * 319 - 320 780 321 / 322 RCL 12 323 + 324 X<> 18 325 1980 326 * 327 RCL 30 328 40 329 X^2 330 * 331 + 332 RCL 27 333 128 334 * 335 + 336 RCL 24 337 2360 338 * 339 - 340 RCL 21 |
341 215 342 * 343 + 344 RCL 15 345 783 346 * 347 - 348 780 349 / 350 RCL 11 351 + 352 ENTER 353 X<> 17 354 1980 355 * 356 RCL 29 357 40 358 X^2 359 * 360 + 361 RCL 26 362 128 363 * 364 + 365 RCL 23 366 2360 367 * 368 - 369 RCL 20 370 215 371 * 372 + 373 RCL 14 374 783 375 * 376 - 377 780 378 / 379 RCL 10 380 + 381 RCL 09 382 RCL 13 383 + 384 RCL 18 385 RDN 386 XEQ IND 00 387 RCL 13 388 ST+ 09 389 ST* 17 390 ST* 18 391 * 392 STO 19 393 RCL 16 394 + 395 13 396 * 397 RCL 22 398 RCL 25 399 + 400 55 401 * 402 + 403 RCL 28 404 RCL 31 405 + 406 32 407 * 408 + 409 .5 |
410 % 411 ST+ 12 412 RCL 15 413 RCL 18 414 + 415 13 416 * 417 RCL 21 418 RCL 24 419 + 420 55 421 * 422 + 423 RCL 27 424 RCL 30 425 + 426 32 427 * 428 + 429 .5 430 % 431 ST+ 11 432 RCL 14 433 RCL 17 434 + 435 13 436 * 437 RCL 20 438 RCL 23 439 + 440 55 441 * 442 + 443 RCL 26 444 RCL 29 445 + 446 32 447 * 448 + 449 .5 450 % 451 ST+ 10 452 DSE 33 453 GTO 01 454 RCL 10 455 RCL 04 456 - 457 RTN 458 LBL 02 459 VIEW 07 460 RCL 07 461 XEQ 00 462 ENTER 463 ENTER 464 X<> 32 465 - 466 X#0? 467 / 468 RCL 08 469 RCL 07 470 STO 08 471 STO T 472 - 473 * 474 + 475 STO 07 476 X#Y? 477 GTO 02 478 END |
( 714 bytes / SIZE 034 )
STACK | INPUTS | OUTPUTS |
Y | y1'(a) | y'(a) |
X | y2'(a) | y'(a) |
X-inputs are initial guesses
Example: y''' = y" + x y y'
y(0) = 1 y(1) = 3
y"(0) = 2
01 LBL "T" 02 * 03 * 04 + 05 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 03 A'' = 2 STO 05
b = 1 STO 02 B = 3 STO 04
-If we choose N = 10 ( so h = 0.1 ) and 2 initial guesses: 1 & 2
10 STO 06
1 ENTER^
2 XEQ "GRDH3" >>>> y'(0) = 0.445221967
-With N = 20 STO 06, the same initial guesses give y'(0) = 0.445221981
Notes:
-If the error is too large, change the initial guesses...
-If you know y'(a) and if y"(a) is unknown, simply replace line 15 by STO 12 & line 17 by STO 11 [ or use a flag... ] and store y'(a) into R05...
-With the example above, if y'(0) = 2 , it yields y"(0) = -0.244560336 with N = 10 and y"(0) = -0.244560354 with N = 20
b) y(a) = A &
y(b) = B & y(c) = C -> y'(a) = ? &
y"(a) = ?
b1) 4th Order Formula
-We want to find y'(a) & y"(a) such that the solution of y''' = f(x,y,y',y") that verifies y(a) = A & y(b) = B & y(c) = C
-We know a , b , c , A , B , C and "GRDHC" computes y'(a) & y"(a) with the generalized "secant method".
-It solves a system of 2 equations in 2 unknowns ( like "SXY" listed in "Linear & Non-Linear systems for the HP41" paragraph 2°)b) )
Data Registers: • R00 = function name ( Registers R00 thru R08 are to be initialized before executing "GRDHC" )
• R01 = a • R04 = A • R07 = N = number of steps between a & b R09 thru R29: temp• R02 = b • R05 = B • R08 = N' = number of steps between b & c
• R03 = c • R06 = C
Flags: /
Subroutine: A program which computes y''' = f(x,y,y',y") assuming x , y , y' , y" are in registers X , Y , Z , T ( respectively ) upon entry
-Lines 09-134-201 are three-byte GTOs
01 LBL "GRDHC" 02 STO 21 03 RDN 04 STO 22 05 RDN 06 STO 19 07 X<>Y 08 STO 20 09 GTO 02 10 LBL 00 11 STO 11 12 X<>Y 13 STO 12 14 RCL 02 15 STO 10 16 RCL 01 17 STO 09 18 - 19 RCL 07 20 STO 23 21 ST+ X 22 / 23 STO 13 24 XEQ 01 25 RCL 05 26 - 27 STO 24 28 RCL 03 29 RCL 02 30 - |
31 RCL 08 32 STO 23 33 ST+ X 34 / 35 STO 13 36 XEQ 01 37 RCL 06 38 - 39 RCL 24 40 RTN 41 LBL 01 42 RCL 12 43 RCL 11 44 RCL 10 45 RCL 09 46 XEQ IND 00 47 RCL 13 48 ST+ 09 49 * 50 STO 16 51 RCL 12 52 + 53 STO 17 54 RCL 13 55 LASTX 56 * 57 STO 15 58 RCL 11 59 + 60 STO 18 |
61 LASTX 62 RCL 13 63 * 64 STO 14 65 RCL 10 66 + 67 RCL 09 68 XEQ IND 00 69 RCL 13 70 ST* 17 71 ST* 18 72 * 73 ST+ 16 74 ST+ 16 75 RCL 12 76 + 77 ENTER 78 X<> 17 79 ST+ 15 80 ST+ 15 81 RCL 11 82 + 83 ENTER 84 X<> 18 85 ST+ 14 86 ST+ 14 87 RCL 10 88 + 89 RCL 09 90 XEQ IND 00 |
91 RCL 13 92 ST+ 09 93 ST+ X 94 ST* 17 95 ST* 18 96 * 97 ST+ 16 98 RCL 12 99 + 100 ENTER 101 X<> 17 102 ST+ 15 103 RCL 11 104 + 105 ENTER 106 X<> 18 107 ST+ 14 108 RCL 10 109 + 110 RCL 09 111 XEQ IND 00 112 RCL 13 113 ST* 17 114 ST* 18 115 * 116 RCL 16 117 + 118 3 119 / 120 ST+ 12 |
121 RCL 15 122 RCL 17 123 + 124 3 125 / 126 ST+ 11 127 RCL 14 128 RCL 18 129 + 130 3 131 / 132 ST+ 10 133 DSE 23 134 GTO 01 135 RCL 10 136 RTN 137 LBL 02 138 VIEW 19 139 RCL 20 140 RCL 21 141 XEQ 00 142 STO 27 143 X<>Y 144 STO 26 145 RCL 22 146 RCL 19 147 XEQ 00 148 STO 29 149 X<>Y 150 STO 28 |
151 RCL 20 152 RCL 19 153 XEQ 00 154 STO 25 155 ST- 27 156 ST- 29 157 X<>Y 158 STO 24 159 ST- 26 160 ST- 28 161 RCL 26 162 RCL 29 163 * 164 RCL 27 165 RCL 28 166 * 167 - 168 STO 23 169 X=0? 170 GTO 03 171 RCL 25 172 RCL 28 173 * 174 RCL 24 175 RCL 29 176 * 177 - 178 X<>Y 179 / 180 RCL 21 |
181 RCL 19 182 STO 21 183 - 184 * 185 ST+ 19 186 RCL 24 187 RCL 27 188 * 189 RCL 25 190 RCL 26 191 * 192 - 193 RCL 23 194 / 195 RCL 22 196 RCL 20 197 STO 22 198 - 199 * 200 ST+ 20 201 GTO 02 202 LBL 03 203 RCL 24 204 ABS 205 RCL 25 206 ABS 207 + 208 RCL 20 209 RCL 19 210 END |
( 326 bytes / SIZE 030 )
STACK | INPUTS | OUTPUTS |
T |
y1"(a) |
/ |
Z |
y1'(a) |
| error | |
Y | y2"(a) |
y"(a) |
X |
y2'(a) |
y'(a) |
Inputs are initial guesses
Z-output = | y(b) - B | + | y(c) - C | must be close to zero.
Otherwise, change the initial guesses
Example: y''' = y" + x y y' y(0) = 1 y(1) = 3 y(2) = 4
01 LBL "T" 02 * 03 * 04 + 05 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 04
b = 1 STO 02 B = 3 STO 05
c = 2 STO 03 C = 4 STO 06
-If you choose N = N' = 10 ( so stepsize = h = 0.1 ) and 2 initial guesses: (1;1) & (2;2)
10 STO 07 STO 08
1 ENTER^ ENTER^
2 ENTER^ XEQ "GRDHC" >>>> y'(0) = 2.906612347 ---Execution time = 48m39s--- (!)
RDN y"(0) = -1.561167630
RDN 6 E-9
-With N = N' = 100 STO 07 STO 08, the same initial guesses give ( with V41 in turbo mode ) y'(0) = 2.906622627 & y"(0) = -1.561183524
Notes:
-With free42 and N = N' = 1000 it yields: y'(0) = 2.90662263100... & y"(0) = -1.56118352608...
-It's better to choose a < b < c or c < b < a
-In most cases, N & N' should be chosen such that (b-a) / N ~ (c-b) / N'
-Thus, the stepsizes will be approximately equal...
b2) 6th Order Formula
Data Registers: • R00 = function name ( Registers R00 thru R08 are to be initialized before executing "GRDHC" )
• R01 = a • R04 = A • R07 = N = number of steps between a & b R09 thru R44: temp• R02 = b • R05 = B • R08 = N' = number of steps between b & c
• R03 = c • R06 = C
Flags: /
Subroutine: A program which computes y''' = f(x,y,y',y") assuming x , y , y' , y" are in registers X , Y , Z , T ( respectively ) upon entry
-Lines 09-468-535 are three-byte GTOs
01 LBL "GRDHC" 02 STO 36 03 RDN 04 STO 37 05 RDN 06 STO 34 07 X<>Y 08 STO 35 09 GTO 02 10 LBL 00 11 STO 11 12 X<>Y 13 STO 12 14 RCL 02 15 STO 10 16 RCL 01 17 STO 09 18 - 19 RCL 07 20 STO 33 21 / 22 STO 13 23 XEQ 01 24 RCL 05 25 - 26 STO 32 27 RCL 03 28 RCL 02 29 - 30 RCL 08 31 STO 33 32 / 33 STO 13 34 XEQ 01 35 RCL 06 36 - 37 RCL 32 38 RTN 39 LBL 01 40 RCL 12 41 STO 15 42 RCL 11 43 STO 14 44 RCL 10 45 RCL 09 46 XEQ IND 00 47 RCL 13 48 ST* 14 49 ST* 15 50 * 51 STO 16 52 3 53 / 54 RCL 12 55 + 56 STO 18 57 RCL 15 58 3 59 / 60 RCL 11 61 + 62 STO 17 63 RCL 14 64 3 65 / 66 RCL 10 67 + 68 RCL 13 69 3 70 / 71 RCL 09 72 + 73 RCL 18 74 RDN 75 XEQ IND 00 76 RCL 13 77 ST* 17 78 ST* 18 |
79 * 80 STO 19 81 1.5 82 / 83 RCL 12 84 + 85 STO 21 86 RCL 18 87 1.5 88 / 89 RCL 11 90 + 91 STO 20 92 RCL 17 93 1.5 94 / 95 RCL 10 96 + 97 RCL 13 98 1.5 99 / 100 RCL 09 101 + 102 RCL 21 103 RDN 104 XEQ IND 00 105 RCL 13 106 ST* 20 107 ST* 21 108 * 109 STO 22 110 CHS 111 RCL 19 112 4 113 * 114 + 115 RCL 16 116 + 117 12 118 / 119 RCL 12 120 + 121 STO 24 122 RCL 18 123 4 124 * 125 RCL 21 126 - 127 RCL 15 128 + 129 12 130 / 131 RCL 11 132 + 133 STO 23 134 RCL 17 135 4 136 * 137 RCL 20 138 - 139 RCL 14 140 + 141 12 142 / 143 RCL 10 144 + 145 RCL 13 146 3 147 / 148 RCL 09 149 + 150 RCL 24 151 RDN 152 XEQ IND 00 153 RCL 13 154 ST* 23 155 ST* 24 156 * |
157 STO 25 158 90 159 * 160 RCL 22 161 35 162 * 163 + 164 RCL 19 165 110 166 * 167 - 168 RCL 16 169 25 170 * 171 + 172 48 173 / 174 RCL 12 175 + 176 STO 27 177 RCL 24 178 90 179 * 180 RCL 21 181 35 182 * 183 + 184 RCL 18 185 110 186 * 187 - 188 RCL 15 189 25 190 * 191 + 192 48 193 / 194 RCL 11 195 + 196 STO 26 197 RCL 23 198 90 199 * 200 RCL 20 201 35 202 * 203 + 204 RCL 17 205 110 206 * 207 - 208 RCL 14 209 25 210 * 211 + 212 48 213 / 214 RCL 10 215 + 216 RCL 13 217 1.2 218 / 219 RCL 09 220 + 221 RCL 27 222 RDN 223 XEQ IND 00 224 RCL 13 225 ST* 26 226 ST* 27 227 * 228 STO 28 229 10 230 / 231 RCL 25 232 2 233 / 234 + |
235 RCL 22 236 8 237 / 238 - 239 RCL 19 240 11 241 * 242 24 243 / 244 - 245 RCL 16 246 .15 247 * 248 + 249 RCL 12 250 + 251 STO 30 252 RCL 27 253 10 254 / 255 RCL 24 256 2 257 / 258 + 259 RCL 21 260 8 261 / 262 - 263 RCL 18 264 11 265 * 266 24 267 / 268 - 269 RCL 15 270 .15 271 * 272 + 273 RCL 11 274 + 275 STO 29 276 RCL 26 277 10 278 / 279 RCL 23 280 2 281 / 282 + 283 RCL 20 284 8 285 / 286 - 287 RCL 17 288 11 289 * 290 24 291 / 292 - 293 RCL 14 294 .15 295 * 296 + 297 RCL 10 298 + 299 RCL 13 300 6 301 / 302 RCL 09 303 + 304 RCL 30 305 RDN 306 XEQ IND 00 307 RCL 13 308 ST* 29 309 ST* 30 310 * 311 STO 31 312 40 |
313 X^2 314 * 315 RCL 28 316 128 317 * 318 + 319 RCL 25 320 2360 321 * 322 - 323 RCL 22 324 215 325 * 326 + 327 RCL 19 328 1980 329 * 330 + 331 RCL 16 332 783 333 * 334 - 335 780 336 / 337 RCL 12 338 + 339 X<> 18 340 1980 341 * 342 RCL 30 343 40 344 X^2 345 * 346 + 347 RCL 27 348 128 349 * 350 + 351 RCL 24 352 2360 353 * 354 - 355 RCL 21 356 215 357 * 358 + 359 RCL 15 360 783 361 * 362 - 363 780 364 / 365 RCL 11 366 + 367 ENTER 368 X<> 17 369 1980 370 * 371 RCL 29 372 40 373 X^2 374 * 375 + 376 RCL 26 377 128 378 * 379 + 380 RCL 23 381 2360 382 * 383 - 384 RCL 20 385 215 386 * 387 + 388 RCL 14 389 783 390 * |
391 - 392 780 393 / 394 RCL 10 395 + 396 RCL 09 397 RCL 13 398 + 399 RCL 18 400 RDN 401 XEQ IND 00 402 RCL 13 403 ST+ 09 404 ST* 17 405 ST* 18 406 * 407 STO 19 408 RCL 16 409 + 410 13 411 * 412 RCL 22 413 RCL 25 414 + 415 55 416 * 417 + 418 RCL 28 419 RCL 31 420 + 421 32 422 * 423 + 424 .5 425 % 426 ST+ 12 427 RCL 15 428 RCL 18 429 + 430 13 431 * 432 RCL 21 433 RCL 24 434 + 435 55 436 * 437 + 438 RCL 27 439 RCL 30 440 + 441 32 442 * 443 + 444 .5 445 % 446 ST+ 11 447 RCL 14 448 RCL 17 449 + 450 13 451 * 452 RCL 20 453 RCL 23 454 + 455 55 456 * 457 + 458 RCL 26 459 RCL 29 460 + 461 32 462 * 463 + 464 .5 465 % 466 ST+ 10 467 DSE 33 |
468 GTO 01 469 RCL 10 470 RTN 471 LBL 02 472 VIEW 34 473 RCL 35 474 RCL 36 475 XEQ 00 476 STO 42 477 X<>Y 478 STO 41 479 RCL 37 480 RCL 34 481 XEQ 00 482 STO 44 483 X<>Y 484 STO 43 485 RCL 35 486 RCL 34 487 XEQ 00 488 STO 40 489 ST- 42 490 ST- 44 491 X<>Y 492 STO 39 493 ST- 41 494 ST- 43 495 RCL 41 496 RCL 44 497 * 498 RCL 42 499 RCL 43 500 * 501 - 502 STO 38 503 X=0? 504 GTO 03 505 RCL 40 506 RCL 43 507 * 508 RCL 39 509 RCL 44 510 * 511 - 512 X<>Y 513 / 514 RCL 36 515 RCL 34 516 STO 36 517 - 518 * 519 ST+ 34 520 RCL 39 521 RCL 42 522 * 523 RCL 40 524 RCL 41 525 * 526 - 527 RCL 38 528 / 529 RCL 37 530 RCL 35 531 STO 37 532 - 533 * 534 ST+ 35 535 GTO 02 536 LBL 03 537 RCL 39 538 ABS 539 RCL 40 540 ABS 541 + 542 RCL 35 543 RCL 34 544 END |
( 833 bytes / SIZE 045 )
STACK | INPUTS | OUTPUTS |
T |
y1"(a) |
/ |
Z |
y1'(a) |
| error | |
Y | y2"(a) |
y"(a) |
X |
y2'(a) |
y'(a) |
Inputs are initial guesses
Z-output = | y(b) - B | + | y(c) - C | must be close to zero.
Otherwise, change the initial guesses
Example: y''' = y" + x y y' y(0) = 1 y(1) = 3 y(2) = 4
01 LBL "T" 02 * 03 * 04 + 05 RTN |
"T" ASTO 00
a = 0 STO 01 A = 1 STO 04
b = 1 STO 02 B = 3 STO 05
c = 2 STO 03 C = 4 STO 06
-If you choose N = N' = 10 ( so stepsize = h = 0.1 ) and 2 initial guesses: (1;1) & (2;2)
10 STO 07 STO 08
1 ENTER^ ENTER^
2 ENTER^ XEQ "GRDHC" >>>> y'(0) = 2.906622560
RDN y"(0) = -1.561183430
RDN 7 E-9
-With N = N' = 20 STO 07 STO 08, the same initial guesses yield: y'(0) = 2.906622627 & y"(0) = -1.561183523
Reference:
[1] Francis Scheid - "Numerical Analysis" - ( McGraw-Hill ) ISBN: 07-055197-9