Re: What is MakeRules (Option of Solve) good for?
- To: mathgroup at smc.vnet.net
- Subject: [mg28501] Re: [mg28483] What is MakeRules (Option of Solve) good for?
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Sun, 22 Apr 2001 21:03:18 -0400 (EDT)
- References: <200104220530.BAA01889@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Adalbert Hanssen wrote:
>
> Hi, MathGroup,
>
> looking for a way to find out about the substitutions, that
> were carried out during Solve, I found out that Solve
> has an option MakeRules, which defaults to False. I could
> not find anything on it, neither in THE BOOK nor in the
> online-help.
>
> Is anyone out there, who has used MakeRules?
> Has anyone found out a practical way to see the
> substitutions, that were made during Solve, e.g.
> when solving
>
> Solve[-(d*x) + (x + xx)*Sqrt[(-1 + n^2)*x^2 + n^2*z^2]==0,x]
>
> which yields a long solution set with over and over
> the same complicated subexpressions (probably from writing
> out some substitutions done during the Solve-Process).
>
> kind regards
>
> Dipl.-Math. Adalbert Hanszen
MakeRules is a legacy option that will disappear eventually. It does
nothing along the lines you want.
To see how Solve breaks apart equations and variables, you might use
Internal`MakePolynomial[eqns, vars, Function->Solve]
For example,
In[4]:= InputForm[Internal`MakePolynomial[-(d*x) + (x + xx)*Sqrt[(-1 +
n^2)*x^2 + n^2*z^2]==0, x]]
Out[4]//InputForm=
{{-(Solve`ParmVar[n]^2*Solve`ParmVar[z]^2) +
Solve`RadVar[Sqrt[Solve`ParmVar[n]^2*Solve`ParmVar[z]^2 +
(-1 + Solve`ParmVar[n]^2)*Solve`SolvVar[x]^2]]^2 +
Solve`SolvVar[x]^2 - Solve`ParmVar[n]^2*Solve`SolvVar[x]^2 == 0,
Solve`ParmVar[xx]*Solve`RadVar[Sqrt[Solve`ParmVar[n]^2*Solve`ParmVar[z]^2
+
(-1 + Solve`ParmVar[n]^2)*Solve`SolvVar[x]^2]] -
Solve`ParmVar[d]*Solve`SolvVar[x] +
Solve`RadVar[Sqrt[Solve`ParmVar[n]^2*Solve`ParmVar[z]^2 +
(-1 + Solve`ParmVar[n]^2)*Solve`SolvVar[x]^2]]*Solve`SolvVar[x]
==
0}, {Solve`RadVar[Sqrt[Solve`ParmVar[n]^2*Solve`ParmVar[z]^2 +
(-1 + Solve`ParmVar[n]^2)*Solve`SolvVar[x]^2]], Solve`SolvVar[x],
Solve`ParmVar[xx], Solve`ParmVar[d], Solve`ParmVar[z],
Solve`ParmVar[n]}}
The first list in the result is the equations in internal form, the
second is the variables.
Daniel Lichtblau
Wolfram Research
- References:
- What is MakeRules (Option of Solve) good for?
- From: Adalbert Hanssen <hanssen@zeiss.de>
- What is MakeRules (Option of Solve) good for?