Re: Insight into Solve...

*To*: mathgroup at smc.vnet.net*Subject*: [mg89854] Re: [mg89815] Insight into Solve...*From*: "David Reiss" <dreiss at scientificarts.com>*Date*: Sun, 22 Jun 2008 03:26:45 -0400 (EDT)*References*: <200806210931.FAA15784@smc.vnet.net>

Thank you very much Andrzej. It is time that I finally learned about Groebner bases...! Best, David On Sat, Jun 21, 2008 at 8:04 AM, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > 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 > > -- This message and any attachments, may contain confidential and/or legally privileged information. If you are not the intended recipient of the message by the original sender, please destroy it. Message and attachments copyright (c) 2007, all rights reserved. Any unauthorized dissemination, distribution or copying is strictly forbidden.

**References**:**Insight into Solve...***From:*David Reiss <dbreiss@gmail.com>