HP Forums
Derivatives - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: HP Prime (/forum-5.html)
+--- Thread: Derivatives (/thread-18895.html)



Derivatives - Eddie W. Shore - 09-28-2022 12:53 PM

Any best practices when dealing with numerical first and second derivatives? The diff command is iffy at best in HP Prime PPL non-CAS.

Also, I working on being more comfortable with the CAS mode and make it my primary mode when I am working with the Prime.


RE: Derivatives - Arno K - 09-29-2022 12:51 PM

Hello Eddie,
diff and | (where) seem not to work, doesn't matter how many brackets are used as this is translated to ', that is (diff(x^3))|x=5 provides diff(125,5). You can use '(∂(x^3,x)|(x = 5))' which then provides the numeric result.
Arno
edit: diff(e^(2*x)+5*x^3-x,x,2,x=2) provides 60+2*e^2, that does the trick for higher derivatives


RE: Derivatives - Eddie W. Shore - 10-02-2022 12:47 AM

Trying the second derivative in a program:

Code:
EXPORT DER2(f,v,n)
BEGIN
LOCAL d;
d:=diff(f,v,2,v=n);
RETURN d;
END;

Home:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2('X^3','X',1) -> diff(diff(3.006003,2),0)

CAS:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2(x^3,x,1) -> diff(diff(3*x^2,2),0)

I hope that the next Prime update will allow for numerical differentiation for both first and second derivatives.


RE: Derivatives - robmio - 10-02-2022 03:11 PM

(10-02-2022 12:47 AM)Eddie W. Shore Wrote:  Trying the second derivative in a program:

Code:
EXPORT DER2(f,v,n)
BEGIN
LOCAL d;
d:=diff(f,v,2,v=n);
RETURN d;
END;

Home:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2('X^3','X',1) -> diff(diff(3.006003,2),0)

CAS:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2(x^3,x,1) -> diff(diff(3*x^2,2),0)

I hope that the next Prime update will allow for numerical differentiation for both first and second derivatives.

Hello, try using this little program:
Code:

#cas
DER2(funz,grado,num):=
BEGIN
LOCAL dd, vrb, risultato;
vrb:=lname(funz);
vrb:=vrb(1);
dd:=diff(funz,vrb,grado);
risultato:=subst(dd,vrb=num);
RETURN risultato;
END;
#end

Example:
DER2 (function, degree of derivation, number)
DER (t ^ 3,2,4) -> 24

Sincerely, robmio


RE: Derivatives - robmio - 10-02-2022 04:37 PM

(10-02-2022 12:47 AM)Eddie W. Shore Wrote:  Trying the second derivative in a program:

Code:
EXPORT DER2(f,v,n)
BEGIN
LOCAL d;
d:=diff(f,v,2,v=n);
RETURN d;
END;

Home:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2('X^3','X',1) -> diff(diff(3.006003,2),0)

CAS:
DER2(X^3,X,1) -> Error: Bad argument value ("diff(f,v,2,v=n)")]
DER2(x^3,x,1) -> diff(diff(3*x^2,2),0)

I hope that the next Prime update will allow for numerical differentiation for both first and second derivatives.

another program uses the limits of the function:
Code:

#cas
DER2(funz,grado,num,ds):=
BEGIN
LOCAL dd, risultato;
dd:=(t)->diff(funz(x),x,grado);
risultato:=limit(dd(x),x,num,ds);
RETURN risultato;
END;
#end

grado --> degree of derivation
num --> value of the derivative
ds = -1 --> left limit
ds = +1 --> right limit
ds = 0 --> bidirectional limit

examples:
DER2((t)->t^3,2,4,0) --> 24
DER2((x)->Si(x),1,0,0) --> 1
DER2((x)->ln(x),1,0,1) --> +inf
DER2((x)->ln(x),1,0,-1) --> -inf
DER2((x)->ln(x),1,0,) --> +/-inf
DER2((t)->e^(-2*t),3,7,0) --> -8*exp(-14)


RE: Derivatives - Arno K - 10-04-2022 01:47 PM

Ma program is smaller and insists in x being used:
#cas dif2(f,gr,val):=
BEGIN
return diff(f,x,gr,x=val);
END;
#end
and does the job.
Arno


RE: Derivatives - robmio - 10-05-2022 09:44 AM

(10-04-2022 01:47 PM)Arno K Wrote:  Ma program is smaller and insists in x being used:
#cas dif2(f,gr,val):=
BEGIN
return diff(f,x,gr,x=val);
END;
#end
and does the job.
Arno

Perfect, I'll adopt your program.
Sincerely, robmio


RE: Derivatives - robmio - 10-05-2022 09:52 AM

(10-04-2022 01:47 PM)Arno K Wrote:  Ma program is smaller and insists in x being used:
#cas dif2(f,gr,val):=
BEGIN
return diff(f,x,gr,x=val);
END;
#end
and does the job.
Arno

Attention! If you use your program with Si (x) it returns undef. Is that okay?

dif2(Si(x),1,0) --> undef


RE: Derivatives - Arno K - 10-05-2022 04:21 PM

Perhaps because dif2(Si(x),1,a) provides sin(a)/a and then 0 is used for a, without bothering with limits.
Arno


RE: Derivatives - Eddie W. Shore - 10-06-2022 04:55 AM

(10-04-2022 01:47 PM)Arno K Wrote:  Ma program is smaller and insists in x being used:
#cas dif2(f,gr,val):=
BEGIN
return diff(f,x,gr,x=val);
END;
#end
and does the job.
Arno

This works well for CAS, and it's nice and compact. And the emulator likes this code too.