MathGroup Archive 2001

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

Search the Archive

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


  • Prev by Date: Re: Frequent crashing problem
  • Next by Date: Re: help to plot..please
  • Previous by thread: What is MakeRules (Option of Solve) good for?
  • Next by thread: Re: Font Problem: Mathematica 4.01 + Xfree86 4.02