Re: HP 35s derivatives/extremums Message #12 Posted by Dieter on 15 Sept 2013, 8:23 a.m., in response to message #11 by Richard Berler
You are absolutely right  RND is the round function, but that's not what the code says. D011 is not RND, but RDN. ;)
Finally, here's a complete solution for zeros and extremes of a function. This time I tried the 35s emulator. Compared to the previous version the handling is much nicer and more comfortable.
Y001 LBL Y
Y002 RCL X
Y003 ...
Y004 < your function here >
Y005 ...
Ynnn RTN
F001 LBL F
F002 STO X
F003 XEQ Y001
F004 STO F
F005 VIEW F
D001 LBL D
D002 STO X
D003 XEQ M001
D004 STO D
D005 VIEW D
M001 LBL M
M002 RCL H
M003 x=0?
M004 1E6
M005 STO H
M006 i
M007 *
M008 RCL+ X
M009 x<> X
M010 STO Y
M011 XEQ Y001
M012 x<> Y
M013 STO X
M014 RCL Y
M015 ENTER
M016 ARG
M017 COS
M018 RCL Y
M019 ABS
M020 *
M021 
M022 ABS
M023 LASTx
M024 ARG
M025 SGN
M026 *
M027 RCL/ H
M028 RTN
Z001 LBL Z
Z002 25 ; code for function Y
Z003 26 ; code for variable Z
Z004 GTO E004
E001 LBL E
E002 13 ; code for function M
E003 5 ; code for variable E
E004 STO J
E005 Roll down
E006 STO I
E007 Roll down
E008 STO X
E009 x<>y
E010 FN=(I)
E011 SOLVE X
E012 RCL X
E013 STO(J)
E014 VIEW(J)
E015 RTN
And here's how to use it:
0. Enter program
1. Provide function y = f(x) at LBL Y. Assume x is stored in variable X.
If extremes have to be found, be sure that all operators and functions are defined in the complex domain.
GTO Y [ENTER]
[PRGM]
RCL X
...
RTN
2. Evaluate f(x)
<x> XEQ F [ENTER] => F= f(x)
3. Evalute the derivative f'(x)
Optional: provide a value for h
<h> STO H
If h = 0 the program assumes h = 1E6
<x> XEQ D [ENTER] => D= f'(x)
4. Find zeroes of f(x)
Provide two guesses x1 and x2
<x1> [ENTER] <x2> XEQ Z [ENTER] => Z= <x_root>
5. Find potential extremes of f(x)
Provide two guesses x1 and x2
<x1> [ENTER] <x2> XEQ E [ENTER] => E= <x_extr>
Check f(x) near x_extr to see whether it's a minimum, a maximum or a saddle point
<x> XEQ F [ENTER] => F= f(x)
Here's an example:
y = x^3  x^2  x + 1/2
= ((x  1)*x  1)*x + 0,5
Y001 LBL Y
Y002 RCL X
Y003 1
Y004 
Y005 RCL* X
Y006 1
Y007 
Y008 RCL* X
Y009 0,5
Y010 +
Y011 RTN
Assume h = 1E6
1E6 STO H
Evaluate f(x)
3 XEQ F [ENTER] => F= 32,5000
2 XEQ F [ENTER] => F= 9,5000
1 XEQ F [ENTER] => F= 0,5000
0 XEQ F [ENTER] => F= 0,5000
1 XEQ F [ENTER] => F= 0,5000
2 XEQ F [ENTER] => F= 2,5000
3 XEQ F [ENTER] => F= 15,5000
Find the three real roots in x = 1...0, x = 0...1 and x = 1...2
1 [ENTER] 0 XEQ Z [ENTER] => SOLVING... Z= 0,8546
0 [ENTER] 1 XEQ Z [ENTER] => SOLVING... Z= 0,4030
1 [ENTER] 2 XEQ Z [ENTER] => SOLVING... Z= 1,4516
Find the two extremes between the roots
0,9 [ENTER] 0,4 XEQ E [ENTER] => SOLVING... E= 0,3333
Check the derivative
XEQ D [ENTER] => D= 2,5560 E12
0,3 XEQ F [ENTER] => F= 0,6830
0,3333 XEQ F [ENTER] => F= 0,6852
0,4 XEQ F [ENTER] => F= 0,6760
So there is a maximum at x = 0,3333 and f(x) = 0,6852
Find the second extreme:
0,4 [ENTER] 1,5 XEQ E [ENTER] => SOLVING... E= 1,0000
Check the derivative
XEQ D [ENTER] => D= 0,0000
1 XEQ F [ENTER] => F= 0,5000
So there must be a minimum at x = 1 and f(x) = 0,5
And finally here's the function used in the May 2013 thread:
Y001 LBL Y
Y002 RCL X
Y003 20
Y004 /
Y005 e^x
Y006 1
Y007 
Y008 25
Y009 *
Y010 RCL+ X
Y011 200
Y012 *
Y013 RTN
0 [ENTER] 12 XEQ E [ENTER] => SOLVING... E= 4,4629
XEQ F [ENTER] => F= 107,4258
4,4 XEQ F [ENTER] => F= 107,4060
4,5 XEQ F [ENTER] => F= 107,4189
=> maximum at x = 4,4629 and f(x) = 107,4258
Again, this program is a quick and dirty version that may have errors and other flaws. Use at your own risk, improve as you like and don't forget to share your improvements here. ;)
Dieter
Edited: 15 Sept 2013, 10:07 a.m.
