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