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.