       Re: Re: Simplifying equations for Mathematica

• To: mathgroup at smc.vnet.net
• Subject: [mg65875] Re: [mg65863] Re: Simplifying equations for Mathematica
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Thu, 20 Apr 2006 05:15:01 -0400 (EDT)
• References: <200604160749.DAA11245@smc.vnet.net> <e22h8k\$e56\$1@smc.vnet.net> <200604190854.EAA05819@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Maxim wrote:
> On Tue, 18 Apr 2006 11:07:00 +0000 (UTC), Daniel Lichtblau
> <danl at wolfram.com> wrote:
> [tripe expunged...dl]
>

Me too, now that you point it out.

> because the rule (Exp[a_] :> a) will
> be tried first and so it will replace E^(t1 + t2) with (t1 + t2).
> Numerical tests show that after we replace ti with Log[ti] and get rid of
> denominators one of the solutions is t1 == t2 == -1, t5 == 0. This
> suggests that the ordering of the variables can matter:
>
> In:= f[t1_, t2_, t3_, t4_, t5_] :=
>    Log[Exp + Exp[t1] + Exp[t2] + Exp[t1 + t2] + Exp[t5] +
>      Exp[t5 + t1 + t2] + Exp[t5 + t2 + t4] + Exp[t1 + t2 + t3 + t4 + t5]]
>
> In:= Lvar = {t1, t2, t3, t4, t5};
>    Lvar2 = {t4, t3, t2, t1, t5};
>    Lm = {m1, m2, m3, m4, m5};
>    Lexpr = D[f @@ Lvar, {Lvar}] - Lm;
>    Lexpr2 = Lexpr /. Thread[Lvar -> Log[Lvar]] // Together // Numerator;
>
> In:= SetOptions[Roots, Cubics -> False, Quartics -> False];
>    (Lsol = Solve[GroebnerBasis[Lexpr2, Lvar2] == 0, Lvar2] //
>      Simplify) // ByteCount // Timing
>
> Out= {10.922*Second, 204216}
>
> The last three seem to be generic solutions:
>
> In:= Lexpr /. Thread[Lvar -> Log[Lvar /. #]]& /@ Rest@ Lsol /.
>      Thread[Lm -> Array[Random[Real, {-10, 10}, 20]&, Length@ Lm]] //
>    MatrixQ[#, # == 0&]&
>
> Out= True
>
> Maxim Rytin
> m.r at inbox.ru

Good catch. There may be some defects in the supply of sacrificial
virgins. That, or I caught something contagious from an unusual Limit

As to the order dependency, one thing I noticed is that variable order
makes a considerable difference for the Groebner basis computation even
to complete. A way to encourage it to do so is to use Sort->True. Then
one can call Solve and hope it discerns the "correct" order (use the one
for which we already have a Groebner basis). Or else mess with
Internal`DistributedTermsList to figure out the order used by
GroebnerBasis, and pass that to Solve with Sort->False.

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: color swatch
• Next by Date: Re: What is Infinity+Pi*I
• Previous by thread: Re: Simplifying equations for Mathematica