[Date Index]
[Thread Index]
[Author Index]
Re: Re: unable to FullSimplify
*To*: mathgroup at smc.vnet.net
*Subject*: [mg65867] Re: [mg65846] Re: unable to FullSimplify
*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>
*Date*: Wed, 19 Apr 2006 04:54:36 -0400 (EDT)
*References*: <200604160545.BAA07958@smc.vnet.net><e1vebv$995$1@smc.vnet.net> <200604181056.GAA14321@smc.vnet.net> <07AC3E37-9566-4802-A247-F9D27147EB96@mimuw.edu.pl>
*Sender*: owner-wri-mathgroup at wolfram.com
On 18 Apr 2006, at 22:15, Andrzej Kozlowski wrote:
>
> On 18 Apr 2006, at 19:56, Vladimir wrote:
>
>> Andrzej Kozlowski wrote:
>>> This seems to me to be an unfortunate consequence of the fact that
>>> the outcome of FullSimplify (and Simplify) depends on the ordering
>>> of the variables. This is because a variable order independent
>>> Simplify has very much higher complexity and will get stuck on a
>>> complicated expressions. Some time ago Adam Strzebonski of WRI sent
>>> the following implementation of order independent FullSimplify:
>>>
>>> VOISimplify[vars_, expr_, assum_:True] :=
>>> Module[{perm, ee, best},
>>> perm = Permutations[vars];
>>> ee = (FullSimplify @@ ({expr, assum} /. Thread[vars -> #]))
>>> & /@ perm;
>>> best = Sort[Transpose[{LeafCount /@ ee, ee, perm}]][[1]];
>>> best[[2]] /. Thread[best[[3]] -> vars]]
>>
>> Looks rather interesting! Hmm, it's even possible to enhance it
>> further
>> to extract variables from a given expression automatically...
>>
>> Unfortunately, ordering of the variables isn't the only problem:
>>
>> FullSimplify[Expand[x + (x + x^2)^4]]
>>
>> x + x^4 + 4*x^5 + 6*x^6 + 4*x^7 + x^8
>>
>> whose LeafCount is a whopping 23 instead of expected 9.
>>
>> And don't even try higher powers like:
>> FullSimplify[Expand[x + (x + x^2)^16]]
>> :)
>>
>> My confidence in FullSimplify and Mathematica is slowly fading,
>> which is rather sad, because my current research heavily depends on
>> understanding returned symbolic solutions which can be too hard
>> when any simplification opportunities are missed.
>>
>> --
>> Vladimir
>>
>
> Well, it seems to me that you are expecting too much. Starting with
> an expression like
>
> x + x^4 + 4*x^5 + 6*x^6 + 4*x^7 + x^8
>
> there are just too many different groupings and rearrangements that
> would have to be tried to get to a simpler form.
> Moreover, Mathematica will only apply a transformation is it
> immediately leads to an decrease in complexity. Sometimes the only
> way to transform an expression to a simpler form is by first
> transforming it to a more complex one, for example by adding a term
> to one part of the expression and at the same time subtracting it
> from another. Mathematica will never attempt such transformations.
> I think that in general it will only move from one form to another
> if there is a sequence of transformations using the specified
> transformation functions, each of which decreases the complexity.
> That must leave many situations where no such sequence can be found
> yet the expression itself can be simplified.
> Basically whenever we deal with situations where there is no
> universal algorithm but only a collection of heuristic or "ad hoc"
> techniques, you should expect this sort of situations to arise. In
> such cases it often happens that by rearranging the input only
> slightly one can make some progress. For example, in your case, the
> first thing I tired was:
>
>
> FullSimplify[Expand[x + (x + x^2)^4] /. x -> y - 1] /. y -> x + 1
>
>
> x*(x^3*(x + 1)^4 + 1)
>
>
> LeafCount[%]
>
>
> 13
>
>
> Not quite as good as 9 but better than 23. Note, however, that the
> transformations that where used (substituting y-1 for x) were
> (temporarily) complexity increasing and I think Mathematica never
> uses such transformations.
>
> Andrzej Kozlowski
I forgot about this one:
> And don't even try higher powers like:
> FullSimplify[Expand[x + (x + x^2)^16]]
> :)
The same trick as above works here too:
FullSimplify[Expand[x + (x + x^2)^16] /. x -> y - 1] /. y -> x + 1
x*(x^15*(x + 1)^16 + 1)
:-)
In fact, in spite of its higher LeafCount, visually it is in some
ways "simpler" than the original input.
Andrzej Kozlowski
Prev by Date:
**Re: Re: unable to FullSimplify**
Next by Date:
**Re: Simplifying equations for Mathematica**
Previous by thread:
**Re: Re: unable to FullSimplify**
Next by thread:
**Re: unable to FullSimplify**
| |