Re: Solve yields unreal solutions, NSolve yields real solutions
- To: mathgroup at smc.vnet.net
- Subject: [mg58295] Re: Solve yields unreal solutions, NSolve yields real solutions
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 26 Jun 2005 01:33:57 -0400 (EDT)
- Organization: The Open University, Milton Keynes, England
- References: <d9issf$cps$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mukhtar Bekkali wrote: > I thought NSolve is the same as Solve just numeric. The below code > gives real answers, replacing NSolve with Solve in the last line > generates Unreal results. I do not understand why. > > \!\(\* > RowBox[{\(Clear["\<Global`*\>"]\), "\n", \(Remove["\<Global`*\>"]\), > "\[IndentingNewLine]", \(Needs["\<Miscellaneous`RealOnly`\>"]\), > "\[IndentingNewLine]", > RowBox[{ > RowBox[{ > RowBox[{ > StyleBox["{", > FontColor->RGBColor[1, 0, 1]], > StyleBox[\(\[Lambda], \[Gamma], k\), > FontColor->RGBColor[1, 0, 1]], > StyleBox["}", > FontColor->RGBColor[1, 0, 0]]}], > StyleBox["=", > FontColor->RGBColor[1, 0, 0]], > RowBox[{ > StyleBox["{", > FontColor->RGBColor[1, 0, 0]], > RowBox[{"1", > StyleBox[",", > FontColor->RGBColor[1, 0, 0]], \(2\/3\), ",", "0"}], > "}"}]}], > ";"}], "\[IndentingNewLine]", \(Table[h\_i = \[Gamma], {i, 1, > k}];\), > "\[IndentingNewLine]", \(Table[h\_i = 1 - \[Gamma], {i, k + 1, > 2}];\), > "\[IndentingNewLine]", \(Table[{p\_i, b\_i} = {p\_i, b\_i}, {i, 1, > 2}];\), > "\[IndentingNewLine]", \(T\_p = Table[p\_i, {i, 1, 2}];\), > "\[IndentingNewLine]", \(T\_b = Table[b\_i, {i, 1, 2}];\), > "\[IndentingNewLine]", \(T\_u = > Table[u\_i = 1 - \[Lambda] \((b\_i - \[Beta])\)\^2 - p\_i, {i, > 1, > 2}];\), "\[IndentingNewLine]", \({I\_0, I\_1, > I\_2} = {0, \[Beta] /. \(Solve[ > u\_1 \[Equal] u\_2, \[Beta]]\)[\([1]\)], 1};\), > "\[IndentingNewLine]", \(T\_m = > Table[m\_i = I\_i - I\_\(i - 1\), {i, 1, 2}];\), > "\[IndentingNewLine]", \(T\_R = > Table[R\_i = \(p\_i\) > m\_i - \((\(h\_i\) > b\_i\^2\/2 + \((1 - h\_i)\) \((1 - > b\_i)\)\^2\/2)\), {i, > 1, 2}];\), > "\[IndentingNewLine]", \(FOCP = Table[D[R\_i, p\_i], {i, 1, 2}];\), > > "\[IndentingNewLine]", \(T\_p = > T\_p /. \(Solve[FOCP \[Equal] 0, T\_p]\)[\([1]\)];\), > "\[IndentingNewLine]", \(Table[p\_i = T\_p[\([i]\)], {i, 1, 2}];\), > > "\[IndentingNewLine]", \(FOCB = Table[D[R\_i, b\_i], {i, 1, 2}];\), > > "\[IndentingNewLine]", \(NSolve[FOCB \[Equal] 0, T\_b]\)}]\) > Hi Mukhtar, If I remember correctly the package *RealOnly* works only on machine-size numbers and redefine only few functions such as *Power*. Thus the only effect of the package on the *Solve* command is to suppress at the end of all computations the display of any non-real numbers. Internally, the algorithms still work on the complex field. As you can see below, the imaginary part of each number is very small and can be dropped by using the command *Chop*. You can check that both solution sets are eventually identical. In[1]:= \!\(\* RowBox[{\(Clear["\<Global`*\>"]\), "\n", \(Remove["\<Global`*\>"]\), "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ StyleBox["{", FontColor->RGBColor[1, 0, 1]], StyleBox[\(\[Lambda], \[Gamma], k\), FontColor->RGBColor[1, 0, 1]], StyleBox["}", FontColor->RGBColor[1, 0, 0]]}], StyleBox["=", FontColor->RGBColor[1, 0, 0]], RowBox[{ StyleBox["{", FontColor->RGBColor[1, 0, 0]], RowBox[{"1", StyleBox[",", FontColor->RGBColor[1, 0, 0]], \(2\/3\), ",", "0"}], "}"}]}], ";"}], "\[IndentingNewLine]", \(Table[h\_i = \[Gamma], {i, 1, k}];\), "\[IndentingNewLine]", \(Table[h\_i = 1 - \[Gamma], {i, k + 1, 2}];\), "\[IndentingNewLine]", \(Table[{p\_i, b\_i} = {p\_i, b\_i}, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_p = Table[p\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_b = Table[b\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_u = Table[u\_i = 1 - \[Lambda] \((b\_i - \[Beta])\)\^2 - p\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \({I\_0, I\_1, I\_2} = {0, \[Beta] /. \(Solve[ u\_1 \[Equal] u\_2, \[Beta]]\)[\([1]\)], 1};\), "\[IndentingNewLine]", \(T\_m = Table[m\_i = I\_i - I\_\(i - 1\), {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_R = Table[R\_i = \(p\_i\) m\_i - \((\(h\_i\) b\_i\^2\/2 + \((1 - h\_i)\) \((1 - b\_i)\)\^2\/2)\), {i, 1, 2}];\), "\[IndentingNewLine]", \(FOCP = Table[D[R\_i, p\_i], {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_p = T\_p /. \(Solve[FOCP \[Equal] 0, T\_p]\)[\([1]\)];\), "\[IndentingNewLine]", \(Table[p\_i = T\_p[\([i]\)], {i, 1, 2}];\), "\[IndentingNewLine]", \(FOCB = Table[D[R\_i, b\_i], {i, 1, 2}];\), "\[IndentingNewLine]", \(NSolve[FOCB \[Equal] 0, T\_b]\)}]\) Out[17]= \!\({{b\_1 \[Rule] 1.8560333600624024`, b\_2 \[Rule] 9.206972531099032`}, {b\_1 \[Rule] \(-8.463201971504636`\), b\_2 \[Rule] \(-0.8172946229422916`\)}, {b\_1 \[Rule] 0.30716861144224816`, b\_2 \[Rule] 0.9103220918432906`}}\) In[18]:= \!\(\* RowBox[{\(Clear["\<Global`*\>"]\), "\n", \(Remove["\<Global`*\>"]\), "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ StyleBox["{", FontColor->RGBColor[1, 0, 1]], StyleBox[\(\[Lambda], \[Gamma], k\), FontColor->RGBColor[1, 0, 1]], StyleBox["}", FontColor->RGBColor[1, 0, 0]]}], StyleBox["=", FontColor->RGBColor[1, 0, 0]], RowBox[{ StyleBox["{", FontColor->RGBColor[1, 0, 0]], RowBox[{"1", StyleBox[",", FontColor->RGBColor[1, 0, 0]], \(2\/3\), ",", "0"}], "}"}]}], ";"}], "\[IndentingNewLine]", \(Table[h\_i = \[Gamma], {i, 1, k}];\), "\[IndentingNewLine]", \(Table[h\_i = 1 - \[Gamma], {i, k + 1, 2}];\), "\[IndentingNewLine]", \(Table[{p\_i, b\_i} = {p\_i, b\_i}, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_p = Table[p\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_b = Table[b\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_u = Table[u\_i = 1 - \[Lambda] \((b\_i - \[Beta])\)\^2 - p\_i, {i, 1, 2}];\), "\[IndentingNewLine]", \({I\_0, I\_1, I\_2} = {0, \[Beta] /. \(Solve[ u\_1 \[Equal] u\_2, \[Beta]]\)[\([1]\)], 1};\), "\[IndentingNewLine]", \(T\_m = Table[m\_i = I\_i - I\_\(i - 1\), {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_R = Table[R\_i = \(p\_i\) m\_i - \((\(h\_i\) b\_i\^2\/2 + \((1 - h\_i)\) \((1 - b\_i)\)\^2\/2)\), {i, 1, 2}];\), "\[IndentingNewLine]", \(FOCP = Table[D[R\_i, p\_i], {i, 1, 2}];\), "\[IndentingNewLine]", \(T\_p = T\_p /. \(Solve[FOCP \[Equal] 0, T\_p]\)[\([1]\)];\), "\[IndentingNewLine]", \(Table[p\_i = T\_p[\([i]\)], {i, 1, 2}];\), "\[IndentingNewLine]", \(FOCB = Table[D[R\_i, b\_i], {i, 1, 2}];\), "\[IndentingNewLine]", \(Solve[FOCB \[Equal] 0, T\_b]\)}]\) Out[34]= \!\({{b\_1 \[Rule] 1\/820\ \((\(-1722\) - 14661241\/\((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\) + 329294\/\((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\) + 86\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\) - \ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\))\), b\_2 \[Rule] 31\/10 + 3829\/\(20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\)\) + 1\/20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\)}, {b\_1 \ \[Rule] 1\/41\ \((\(-\(861\/10\)\) + 14661241\/\(40\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(2/3\)\) + \(14661241\ \[ImaginaryI]\ \@3\)\/\(40\ \((209533 + \ 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\)\) - 164647\/\(20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\ \)\) + \(164647\ \[ImaginaryI]\ \@3\)\/\(20\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\)\) - 43\/20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\) - 43\/20\ \[ImaginaryI]\ \@3\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\) + 1\/40\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\) - 1\/40\ \[ImaginaryI]\ \@3\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(2/3\))\), b\_2 \[Rule] 31\/10 - \(3829\ \((1 - \[ImaginaryI]\ \@3)\)\)\/\(40\ \((209533 + \ 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\)\) - 1\/40\ \((1 + \[ImaginaryI]\ \@3)\)\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\)}, {b\_1 \[Rule] 1\/41\ \((\(-\(861\/10\)\) + 14661241\/\(40\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(2/3\)\) - \(14661241\ \[ImaginaryI]\ \@3\)\/\(40\ \((209533 + \ 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\)\) - 164647\/\(20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\ \)\) - \(164647\ \[ImaginaryI]\ \@3\)\/\(20\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\)\) - 43\/20\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\) + 43\/20\ \[ImaginaryI]\ \@3\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\) + 1\/40\ \((209533 + 410\ \[ImaginaryI]\ \@72777)\)\^\(2/3\) + 1\/40\ \[ImaginaryI]\ \@3\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(2/3\))\), b\_2 \[Rule] 31\/10 - \(3829\ \((1 + \[ImaginaryI]\ \@3)\)\)\/\(40\ \((209533 + \ 410\ \[ImaginaryI]\ \@72777)\)\^\(1/3\)\) - 1\/40\ \((1 - \[ImaginaryI]\ \@3)\)\ \((209533 + 410\ \[ImaginaryI]\ \ \@72777)\)\^\(1/3\)}}\) In[35]:= N[%] Out[35]= \!\({{b\_1.` \[Rule] \(\(1.8560333600623968`\)\(\[InvisibleSpace]\)\) + 1.109139880210888`*^-15\ \[ImaginaryI], b\_2.` \[Rule] \(\(9.206972531099009`\)\(\[InvisibleSpace]\)\) - 2.7755575615628914`*^-16\ \[ImaginaryI]}, {b\_1.` \[Rule] \ \(\(0.3071686114422483`\)\(\[InvisibleSpace]\)\) + 1.0398186376977076`*^-14\ \[ImaginaryI], b\_2.` \[Rule] \(\(0.9103220918432906`\)\(\[InvisibleSpace]\)\) + 1.7763568394002505`*^-15\ \[ImaginaryI]}, {b\_1.` \[Rule] \ \(-8.463201971504644`\) - 1.0398186376977076`*^-14\ \[ImaginaryI], b\_2.` \[Rule] \(-0.8172946229422982`\) - 1.7763568394002505`*^-15\ \[ImaginaryI]}}\) In[36]:= Chop[%] Out[36]= \!\({{b\_1.` \[Rule] 1.8560333600623968`, b\_2.` \[Rule] 9.206972531099009`}, {b\_1.` \[Rule] 0.3071686114422483`, b\_2.` \[Rule] 0.9103220918432906`}, {b\_1.` \[Rule] \(-8.463201971504644`\), b\_2.` \[Rule] \(-0.8172946229422982`\)}}\) Best regards, /J.M.