#### 7.46 Bug in derivative of JacobiDN in Maple 5 and Maple 6 (27.4.98)

##### 7.46.1 Robert Michael Sinclair

Maple V R5’s expression for the partial derivative of JacobiDN with respect to its second argument is incorrect (the sign of the ﬁrst summand is wrong, see below). A workaround is to substitute all occurrences of JacobiDN(u,k) in an expression which is to be diﬀerentiated with sqrt(1-k^2*JacobiSN(u,k)^2), and then diﬀerentiate.

In the following,

dj(u,k) returns Maple’s incorrect expression for the derivative,

cdj(u,k) returns Maple’s expression but with a minus sign before the ﬁrst summand inserted by hand,

ndj(u,k,h) approximates the derivative by the standard diﬀerence quotient with step h, and

sdj(u,k) returns an expression computed using the workaround suggested above:

    |\^/|     Maple V Release 5 (WMI Campus Wide License)
._|\|   |/|_. Copyright (c) 1981-1997 by Waterloo Maple Inc. All rights
\  MAPLE  /  reserved. Maple and Maple V are registered trademarks of
<____ ____>  Waterloo Maple Inc.
|       Type ? for help.

> dj:=unapply(diff(JacobiDN(u,k),k),u,k);

2
k JacobiSN(u, k)  JacobiDN(u, k)
dj := (u, k) -> --------------------------------
2
1 - k

- k JacobiCN(u, k) JacobiSN(u, k) u +

k JacobiCN(u, k) JacobiSN(u, k) EllipticE(JacobiSN(u, k), k)/

2
(1 - k )

> lprint(dj(u,k));

k*JacobiSN(u,k)^2*JacobiDN(u,k)/(1-k^2)-k*JacobiCN(u,k)*JacobiSN(u,k)*u
+k*JacobiCN(u,k)*JacobiSN(u,k)/(1-k^2)*EllipticE(JacobiSN(u,k),k)

> cdj:=(u,k)->
> -k*JacobiSN(u,k)^2*JacobiDN(u,k)/(1-k^2)-k*JacobiCN(u,k)*JacobiSN(u,k)*u
> +k*JacobiCN(u,k)*JacobiSN(u,k)/(1-k^2)*EllipticE(JacobiSN(u,k),k);

2
k JacobiSN(u, k)  JacobiDN(u, k)
cdj := (u, k) -> - --------------------------------
2
1 - k

- k JacobiCN(u, k) JacobiSN(u, k) u +

k JacobiCN(u, k) JacobiSN(u, k) EllipticE(JacobiSN(u, k), k)/

2
(1 - k )

> ndj:=(u,k,h)->(JacobiDN(u,k+h)-JacobiDN(u,k))/h;

JacobiDN(u, k + h) - JacobiDN(u, k)
ndj := (u, k, h) -> -----------------------------------
h

> sdj:=unapply(diff(sqrt(1-k^2*JacobiSN(u,k)^2),k),u,k);

/                                           /
|                   2      2                |
sdj := (u, k) -> 1/2 |-2 k JacobiSN(u, k)  - 2 k  JacobiSN(u, k) |
|                                           |
\                                           \

3
k JacobiSN(u, k)   k JacobiSN(u, k)
---------------- - -----------------
2                  2
1 - k              1 - k

u JacobiCN(u, k) JacobiDN(u, k)
+ -------------------------------
k

JacobiCN(u, k) JacobiDN(u, k) EllipticE(JacobiSN(u, k), k)
- ----------------------------------------------------------
2
k (1 - k )

\\
||   /           2               2
||  /  sqrt(1 - k  JacobiSN(u, k) )
|| /
//

> Digits:=40;

Digits := 40

> evalf(dj(0.5,0.99));

18.69744889484428844442342684197247575734

> evalf(cdj(0.5,0.99));

-.220767304895483330592093370822369837823

> evalf(ndj(0.5,0.99,0.001)); evalf(ndj(0.5,0.99,0.0001));

-.2208718933423780652373652837059697338000
-.2207777643737089925867484805746685460000

> evalf(sdj(0.5,0.99));

-.2207673048954833305920933708223698378326