MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Why does Simplify often get stuck?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69412] RE: [mg69399] Why does Simplify often get stuck?
  • From: "David Park" <djmp at earthlink.net>
  • Date: Mon, 11 Sep 2006 05:39:11 -0400 (EDT)

Carlos,

Simplify is a nice command and very useful. But it does not give easy
detailed control. Very often you can get what you want by direct
manipulation of the expression.

R = (1/6)*(3 + 3*a^2 + Sqrt[5 + 6*a + 5*a^2] +
    a*(4 + Sqrt[5 + 6*a + 5*a^2]))

MapAt[Collect[#1, Sqrt[5 + 6*a + 5*a^2]] & , R, {2}]
(1/6)*(3 + 4*a + 3*a^2 + (1 + a)*
    Sqrt[5 + 6*a + 5*a^2])

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/



From: carlos at colorado.edu [mailto:carlos at colorado.edu]
To: mathgroup at smc.vnet.net

One of the major problems I noticed with Simplify since version 2.2
is that knowledge of the simplified expression is often necessary to
force progress.  This is a typical example I ran into when preparing
a homework problem.  The Mathematica version used is 5.0 under
Mac OS 10.4.7.  The solution of a quadratic equation
gives one root as

R = (3 + 3*a^2 + Sqrt[5 + 6*a + 5*a^2] + a*(4 + Sqrt[5 + 6*a +
5*a^2]))/6

in which a is nonnegative real. This has LeafCount (LC) of 43.
I happen to know (by other means) that the answer is

  Rbest = (3 + 4*a + 3*a^2 + (1 + a)*Sqrt[5 + 6*a + 5*a^2])/6

This has a LC of 32 so Simplify or FullSimplify should have
no trouble whatsoever getting there, right?  Well, lets see:

  RS = Simplify[R,a>=0]
  (3 + 3*a^2 + Sqrt[5 + 6*a + 5*a^2] + a*(4 + Sqrt[5 + 6*a + 5*a^2]))/6

No progress. Next try a bigger gun:

  RFS = FullSimplify[R,a>=0]
  (3 + Sqrt[5 + a*(6 + 5*a)] + a*(4 + 3*a + Sqrt[5 + a*(6 + 5*a)]))/6

This is better, but goes only part way (LC=39)  Well, some human
trickery seems needed to bypass the Sqrt[] barrier:

  R=R/.Sqrt[5 + 6*a + 5*a^2]->xx; R=Collect[R,xx];
  R=Simplify[R/.xx->Sqrt[5 + 6*a + 5*a^2]]

  (3 + 4*a + 3*a^2 + (1 + a)*Sqrt[5 + 6*a + 5*a^2])/6

The story ends happily, but only after much trial and error.
BTW, Collect[R,xx] is required to get the target expression.

But why should all these time consuming gyrations be necessary?
Suppose I dont know the target, or this simplification is one
of thousands done deep in a complicated code ...  After all
this is just a simple junior homework problem.



  • Prev by Date: Re: Null's not null?
  • Next by Date: Re: Null's not null?
  • Previous by thread: Why does Simplify often get stuck?
  • Next by thread: some integrals containing BesselJ