MathGroup Archive 2008

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

Search the Archive

Re: Insight into Solve...

  • To: mathgroup at smc.vnet.net
  • Subject: [mg89849] Re: [mg89815] Insight into Solve...
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sun, 22 Jun 2008 03:25:49 -0400 (EDT)
  • References: <200806210931.FAA15784@smc.vnet.net>

On 21 Jun 2008, at 18:31, David Reiss wrote:

>
>
> Some insight requested...:
>
> When Solving for the center of a circle that goes through two
> specified points,
>
> Solve[{(x1 - x0)^2 + (y1 - y0)^2 == r^2, (x2 - x0)^2 + (y2 - y0)^2 ==
> r^2}, {x0, y0}]
>
> the result gives expressions for x0 and y0 that are structurally very
> different even though the symmetry of the problem says that they are,
> in fact expressions that are ultimately very similar.
>
> My question is what is the reason in the algorithm that Solve uses
> that causes the initial results to structurally look so different.  It
> appears that Solve is not aware of the symmetry in the problem.
>
> Note that if instead of using x0 and y0 one used z0 and y0, then the
> structural forms of the expressions are reversed suggesting that Solve
> is taking variables alphabetically (no surprise here).
>
> The problem with this sort of result from Solve is that one needs to
> explicitly manipulate the resulting expressions to exploit the
> symmetries in order for the final expressions to structurally/visually
> exhibit those symmetries.  FullSimplify does not, starting from the
> results of Solve, succeed in rendering the final expressions into the
> desired form.
>
> E.g, if temp is the result of the Solve command above,
>
> FullSimplify[circlePoints,
> Assumptions -> {r >= 0, x1 \[Element] Reals, x2 \[Element] Reals,
>   y1 \[Element] Reals, y2 \[Element] Reals}]
>
> does not sufficiently reduce the expressions in to forms that
> explicitly exhibit the symmetry transform into one another.
>
> Is there another approach that comes to anyones' mind that will simply
> yield the anticipated results?
>
> Thanks in advance,
>
> David
>

The Groebner basis algorithm used by Solve works, essentially, by  
replacing the original system of equations by another system, which is  
easy to solve. The system that is obtained depends on the ordering of  
all the variables, including the ones you treat as parameters, so in  
general, for equations with parameters, symmetry will not be  
preserved.  The easiest way to get symmetric answers is, I think, by  
specifying explicitly the variables that should be eliminated. For  
example, in this case you can first find x0 by eliminating y0, and  
then, separately, y0 by eliminating x0:

Solve[{(x1 - x0)^2 + (y1 - y0)^2 == r^2, (x2 - x0)^2 + (y2 - y0)^2 ==
    r^2}, {x0}, {y0}]

Solve[{(x1 - x0)^2 + (y1 - y0)^2 == r^2, (x2 - x0)^2 + (y2 - y0)^2 ==
    r^2}, {y0}, {x0}]

If you compare the answers you will see that the symmetry has been  
preserved.

Andrzej Kozlowski



  • Prev by Date: Re: Insight into Solve...
  • Next by Date: Re: Problem with Mesh for MatrixPlot
  • Previous by thread: Re: Insight into Solve...
  • Next by thread: Re: Insight into Solve...