Swiss Micros DM41X and HP 41C: Numeric Derivatives
Introduction
The program DFX calculates one of three types of derivative:
1. Normal Derivative (DX)
2. Logarithmic Derivative (LN)
3. Power Derivative (PWR)
Where:
Normal Derivative: f'(x)
Logarithmic Derivative: d/dx( ln f(x) ) = f'(x) / f(x)
Power Derivative: d/dx( f^n(x) ) = n * f^(n-1)(x) * f'(x), n doesn't have to be an integer
where f'(x) is estimated by:
f'(x) ≈ ( f(x + h) - f(x) ) / h
Variables: x, h
The program uses a subroutine FX, see the examples for details.
DM41X and HP 41C Program: DFX
Uses program FX as a subroutine as f(x).
01 LBL ^T FX
02 RCL 01
03 ^T X?
04 ARCL 01
05 PROMPT
06 STO 01
07 RCL 02
08 ^T H?
09 ARCL 02
10 PROMPT
11 STO 02
12 RCL 01
13 XEQ ^T FX
14 RCL 03
15 RCL 01
16 RCL 02
17 +
18 XEQ ^T FX
19 RCL 03
20 -
21 RCL 02
22 /
23 STO 04
24 ^T 1 DX 2 LN 3 ↑N
25 PROMPT
26 INT
27 STO 05
28 GTO IND 05
29 LBL 01
30 RCL 04
31 LBL 02
32 RCL 04
33 RCL 03
34 /
35 GTO 04
36 LBL 03
37 RCL 03
38 ^T N?
39 PROMPT
40 1
41 -
42 Y↑X
43 LASTX
44 1
43 +
44 *
45 RCL 04
46 *
50 LBL 04
51 RTN
The function FX:
x is loaded in the X stack register (and on display)
01 LBL ^FX
02 execute f(x)
...
## RTN
For DFX, do not use R01, R02, R03, R04, and R05 in FX.
Notes:
Sequences such as:
02 RCL 01
03 ^T X?
04 ARCL 01
05 PROMPT
Puts the prompt as X? [contents of R1]. If you want the previous value, press R/S. Otherwise enter a new value, then press R/S.
This program uses indirect goto statements. R05 is used to hold the person's choice and uses it to direct which label is executed.
Examples
Example 1: f(x) = x * sin x
Set FX as:
01 LBL^T FX
02 RAD
03 ENTER
04 ENTER
05 SIN
06 *
07 RTN
Setting H to 10^-6 (1E-6):
DF: f'(x)
x = 0.5, Result: 0.9182; x = 1.6, Result: 0.9530
LN: ln f'(x)
x = 0.5, Result: 3.8305; x = 1.6, Result: 0.5959
PWR: with n = 3, (f'(x))^3
x = 0.5; Result: 0.1583; x = 1.6; Result: 7.3128
Example 2: f(x) = x^2 + 3 * x + 1 = x * (x + 3) + 1
Set FX as:
01 LBL^T FX
02 ENTER
03 ENTER
04 3
05 +
06 *
07 1
08 +
09 RTN
Setting H to 10^-6 (1E-6):
DF: f'(x)
x = 3.2, Result: 9.4000; x = 6.8, Result: 16.6000
LN: ln f'(x)
x = 3.2, Result: 0.4511; x = 6.8, Result: 0.2454
PWR: with n = 1.5, (f'(x))^1.5
x = 3.2, Result: 64.3677; x = 6.8, Result: 204.7864
Until next time,
Eddie
All original content copyright, © 2011-2022. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.