Re: Substitute all known relations in result
- To: mathgroup at smc.vnet.net
- Subject: [mg86660] Re: Substitute all known relations in result
- From: magma <maderri2 at gmail.com>
- Date: Mon, 17 Mar 2008 00:21:01 -0500 (EST)
- References: <frg0ap$eu5$1@smc.vnet.net> <friu2g$ki$1@smc.vnet.net>
On Mar 16, 11:50 am, Szabolcs Horv=E1t <szhor... at gmail.com> wrote: > Dr. Johannes Zellner wrote: > > Hi, > > > How do I make mathematica to display results with all known > > relations / variables? > > E.g. if a result is > > x^2+y^2 > > and before I'd defined > > r = x^2+y^2 > > I'd like mathematica to display the result rather as "r". > > > And: I'd like mathematica to do this for each relation defined before > > w/o specifying every possible replacement. > > > Any help much appreciated. > > It is not possible to do this. When you define > r = x^2 + y^2 > Mathematica will know that from now on whenever it sees 'r', it should > replace 'r' by x^2 + y^2. This is like variable assignment in any other > programming language. It is something completely different from > declaring the mathematical statement r == x^2 + y^2 to be true (which > cannot really be done in Mathematica, but *do* take a look at the > documentation of Assuming, Assumptions and $Assumptions) > > But even if we know that r == x^2 + y^2 is true, we can use this fact = in > many different ways. You say that you want Mathematica to replace > x^2+y^2 by r. Why? This is not the only possible replacement that can > be based on this fact. Why not replace r by x^2+y^2 instead? Or why > not replace x^2 + y^2 by (x^2 + y^2 + r)/2? Or why not replace x by > Sqrt[r - y^2]? (Okay, I know that (x)^2 == (-x)^2 so this last one wa= s > not a correct transformation ... but I think you understand my point.) > > Why would you select that *single* tranformation from the infinite > number of possibilities? > > Is your goal to construct an expression that has as few parts as > possible? Then use FullSimplify, e.g. > > FullSimplify[x^2 + y^2, x^2 + y^2 == r] > > FullSimplify will try many tranformations on the expression, and it will > return the shortest result (the one with the smallest LeafCount). In > this example this happens to be r. > > An alternative syntax is > > Assuming[x^2 + y^2 == r, FullSimplify[x^2 + y^2]] Very interesting question with 2 very interesting and different answers by Andrzej and Szabolcs. The solution by Andrzej is a good example of the use of Groebner basis. Groebner basis are probably not yet an household name, even among Mathematica aficionados. Certainly they were not for me, when I first read them in the Mathematica documentation. This reply by Andrzej will hopefully entice more users to start reading a bit about the theory behind them. The reply by Szabolcs is entirely built inside Mathematica and is definitely worth following his advice on reading about Assumptions. Another useful related function that I would like to suggest is Refine. Alessandro