       Re: Adding new rules to Simplify

• To: mathgroup at smc.vnet.net
• Subject: [mg56377] Re: [mg56311] Adding new rules to Simplify
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Sat, 23 Apr 2005 01:16:09 -0400 (EDT)
• References: <200504221022.GAA18638@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```On 22 Apr 2005, at 19:22, John Billingham wrote:

> I'm trying to teach Mathematica the obvious simplification rules for
> Jacobi elliptic functions, which i had hoped would be built in!
> Grumble
>
> Having defined
>
>
> sn[x_ /; !FreeQ[x, JacobiSN] :=
> x /. JacobiSN[u_, m_]-> Sqrt[(1 - JacobiDN[u, m]^2)/m];
>
> sn[x_] := x;
>
> mySimplify =
> Simplify[#, TransformationFunctions -> {sn, Automatic}] &;
>
> I find that
>
> mySimplify[1 - (1 - k^2) JacobiSN[p, 1 - k^2]]
>
> gives me
>
> JacobiDN[p, 1 - k^2]^2
>
> as I had hoped, but that the equivalent expression
>
> mySimplify[1 + (-1 + k^2) JacobiSN[p, 1 - k^2]
>
> leaves the formula unsimplified.
>
> What Mathematica subtlety am I missing here??
>
> Thanks,
>
> John
>
>
I can't beleive that either of your cases worked; they certainly do not
work here. What is missing is that you need to specify a
ComplexityFunction that will make the result of your desired
simplification "simpler" than what you started with. For example this
will work:

In:=
sn[x_] /;  !FreeQ[x, JacobiSN] := x /. JacobiSN[u_, m_] -> Sqrt[(1 -
JacobiDN[u, m]^2)/m];

In:=
sn[x_] := x;

In:=
mySimplify = Simplify[#1, TransformationFunctions -> {sn, Automatic},
ComplexityFunction -> (Count[#1, JacobiSN[__], Infinity] & )] & ;

Now both of your "simplifications" (the results certainly look more
"complex") work as intended.

Andrzej Kozlowski
Chiba, Japan
http://www.akikoz.net/andrzej/index.html
http://www.mimuw.edu.pl/~akoz/

```

• Prev by Date: simplifying ulam spiral code
• Next by Date: Re: Re: Re: (x-y) DiracDelta[x-y] does not simplify to 0
• Previous by thread: Adding new rules to Simplify
• Next by thread: Re: Adding new rules to Simplify