# HP Forums

Full Version: (41C) Euler-Taylor method (updated)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Euler-Taylor method
===================

To integrate f'(x,y) from x=a to x=b, give y(a), we use an extended version of the Euler method that includes the first AND second derivatives. Since we know f'(x,y) we can derive f''(x,y) and use the following formula:

y = y + h*f'(x,y) + h^2/2*f''(x,y)

Memory Map
==========
Code:

R00 = a,x
R01 = b
R02 = h
R03 = y
R04 = nsteps
R05 = used

LABELS
======

A - Main routine.
B - calculate first derivative f'(x,y).
C - calculate second derivative f''(x,y).
E - calculate exact f(x,y) (used for results comparison). If the exact solution is not known, then just have the label just return a value like 0 or insert "N/A" into register X.

Listing
=======

Code:
1  LBL "EULTLR"
2  LBL A
3  A/^B?
4  PROMPT
5  STO 01
6  RDN
7  STO 00
8  Y/^H?
9  PROMPT
10  STO 02
11  RDN
12  stO 03
13  RCL 01
14  RCL 00
15  -
16  RCL 02
17  /
18  0.5
19  +
20  INT
21  0.001
22  +
23  STO 04  # calclate and store nsteps
24  LBL 00
25  XEQ B   # calculate f'(x,y)
26  RCL 02
27  *
28  STO 05
29  XEQ C   # calculate f''(x,y)
30  RCL 02
31  STO+00
32  X^2
33  *
34  2
35  /
36  STO+ 05
37  RCL 05
38  STO+ 03
39  VIEW 03
40  DSE 04
41  GTO 00
42  CLD
43  RCL 01
44  XEQ E
45  RCL 03  # recall calculated y at x=b
46  RTN
47  LBL B  # calculate f'(x,y) = y * x
48  RCL 03
49  RCL 00
50  *
51  RTN
52  LBL C # calculate f''(x,y) = x*dy/dx + y
53  XEQ B
54  RCL 00
55  *
56  RCL 03
57  +
58  RTN
59  LBL E  # exact f(x,y) = g(x) = exp(0.5*x^2)
60  X^2
61  2
62  /
63  EXP
64  RTN

Usage
=====

1. Run the program using XEQ "ELRTLR" or pressing key [A].
2. Program prompts "A/^B?". Key in the value for a, press [ENTER], key in the value for b, and then press [R/S] key.
3. Program prompts "Y/^H?". Key in the value for y(a), press [ENTER], key in the value for increment h, and then press [R/S] key.
4) Program displays intermediate values of the integrated y. The program stops with the calculated value of y at x=b.
5) Press [X<>Y] to view the exact value of y at x=b.

You calculate the value for y at any value of x by entering the value of x and the pressing the [E] key.
The next version of the Euler-Taylor program uses the approximation for the second derivative that Albert Chan came up with (click here). Thus we can eliminate LBL C and its code. The program interacts with the user like in the first version:

Code:

01    LBL "EULTLR"
02     LBL A
03    "A/^B?"
04     PROMPT
05     STO 01
06    RDN
07    STO 00
08    "Y/^H?"
09    PROMPT
10    STO 02
11    RDN
12    StO 03
13     RCL 01
14    RCL 00
15    -
16    RCL 02
17    /
18    0.5
19     +
20    INT
21     0.001
22    +
23    STO 04  # calclate and store nsteps
24    LBL 00
25    XEQ B   # calculate f'(x,y)
26    STO 05 # Calculate D1=f'(x,y)
27    RCL 02
28    STO+ 00 # x = x +h
29    *
30    STO+ 03 # y = y + h*D1
31    XEQ B   # calculate f'(x,y)
32    RCL 05
33    -
34    RCL 02
35    *
36    2
37    /
38    STO+ 03 # y = y + h/2*(f'(x,y)-D1)
39    VIEW 03
40     DSE 04
41    GTO 00
42    CLD
43    RCL 01
44    XEQ E
45    RCL 03  # recall calculated y at x=b
46    RTN
47    LBL B  # calculate f'(x,y) = y * x
48    RCL 03
49    RCL 00
50    *
51    RTN
52    LBL E  # exact f(x,y) = g(x) = exp(0.5*x^2)
53    X^2
54    2
55    /
56    EXP
57    RTN
A third version of the program uses approximations for the second and third function derivatives, yielding better accuracy.

Memory Map
==========

Code:
R00 = a,x
R01 = b
R02 = h
R03 = y
R04 = nsteps
R05 = D1
R06 = D2
R07 = D3

LABELS
======

Code:
A - Main routine.
B - calculate first derivative f'(x,y).
E - calculate exact f(x,y) (used for results comparison). If the exact solution is not known, then just have the label just return a value like 0 or insert "N/A" into register X.

Listing
=======

Code:
1    LBL "EULTL3"
2    LBL A
3    A/^B?
4    PROMPT
5    STO 01
6    RDN
7    STO 00
8    Y/^H?
9    PROMPT
10    STO 02
11    RDN
12    StO 03
13    RCL 01
14    RCL 00
15    -
16    RCL 02
17    /
18    0.5
19    +
20    INT
21    0.001
22    +
23    STO 04  # calclate
24    SF 00   # set flag
25    LBL 00
26    XEQ B   # calculate
27    STO 05 # Calculate
28    RCL 02
29    STO+ 00 # x = x +h
30    *
31    STO+ 03 # y = y + h
32    XEQ B   # calculate
33    RCL 05
34    -
35    RCL 02
36    *
37    2
38    /
39    STO 06
40    STO+ 03 # y = y + D
41    FS?C 00
42    GTO 01
43    RCL 06
44    RCL 07
45    -
46    3
47    /
48    STO+ 03  # y =y + (
49    LBL 01
50    VIEW 03
51    RCL 06
52    STO 07  # D3 = D2
53    DSE 04
54    GTO 00
55    CLD
56    RCL 01
57    XEQ E
58    RCL 03  # recall ca
59    RTN
60    LBL B  # calculate
61    RCL 03
62    RCL 00
63    *
64    RTN
65    LBL E  # exact f(x,
66    X^2
67    2
68    /
69    EXP
70    RTN
Reference URL's
• HP Forums: https://www.hpmuseum.org/forum/index.php
• :