Re: Use of Miscellaneous`RealOnly` Package
- To: mathgroup at smc.vnet.net
- Subject: [mg25274] Re: [mg25253] Use of Miscellaneous`RealOnly` Package
- From: BobHanlon at aol.com
- Date: Sun, 17 Sep 2000 17:33:40 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 9/17/2000 5:04:26 AM, djmp at earthlink.net writes:
>Is it possible to turn the Miscellaneous`RealOnly` package on and off?
>Consider the following problem. I want to find the inverse of the following
>function:
>
>F[u_, v_] := {u^3, v - u}
>
>eqns = Thread[F[u, v] == {x, y}]
>{u^3 == x, -u + v == y}
>
>sols = Solve[eqns, {u, v}][[1]]
>{v -> x^(1/3) + y, u -> x^(1/3)}
>
>If the above Solve is done with the RealOnly package active, it fails and
>gives Nonreal for the answers. So I definitely don't want it active at
>this point. Now I define the inverse:
>
>FI[x_, y_] = ({u, v} /. sols)
>{x^(1/3), x^(1/3) + y}
>
>Now when I evaluate
>
>FI[-10, -10] // N
>{1.077217345015942 + 1.865795172362064*I, -8.922782654984058 +
> 1.865795172362064*I}
>
>I obtain the complex root, so I need to load RealOnly package.
>
><< Miscellaneous`RealOnly`
>FI[-10, -10] // N
>{-2.15443, -12.1544}
>
>So sometimes I want it, and sometimes I don't want it. But there seems
>no way to get rid of it other than quitting the kernel.
>
>Does anyone have any suggestions, or a smoother way to do this problem?
>
F[u_, v_] := {u^3, v - u};
FI[x_, y_] := Evaluate[Module[{u, v},
({u, v} /. Solve[Thread[F[u, v] == {x, y}], {u, v}][[1]])]]
To turn RealOnly on:
Unprotect[On];
On[RealOnly] := Get["Miscellaneous`RealOnly`"];
Protect[On];
Power, Solve, Roots, and $Post". Consequently, to remove the effects of
RealOnly
Unprotect[Off];
Off[RealOnly] := Module[{},
Unprotect[Power, Solve, Roots];
Clear[Power, Solve, Roots];
Protect[Power, Solve, Roots];
Remove["Miscellaneous`RealOnly`Nonreal"]; $Post =.;]
Protect[Off];
Checking:
On[RealOnly]
FI[-10, -10] // N
{-2.1544346900318834, -12.154434690031884}
Off[RealOnly]
FI[-10, -10] // N
{1.0772173450159421 + 1.8657951723620638*I,
-8.922782654984058 + 1.8657951723620638*I}
On[RealOnly]
(FI[-10, -10] // N) == %%%%
True
Off[RealOnly]
Bob Hanlon