# Why does MinPrecision affect the result of computation?

Posted 4 months ago
489 Views
|
7 Replies
|
1 Total Likes
|
 Please look at the code sample given here. The matrix t.M has a precision of 19.657. When I set $MinPrecision to 20, I expected that the elements will change a little (in 20th digit) and eigenvalues may be slightly different. But notice that some of the eigenvalues now are different in the 4th decimal place. Is it possible to explain and fix this? In[1]:=$Version Out[1]= "10.0 for Mac OS X x86 (64-bit) (June 29, 2014)" In[2]:= t = DiagonalMatrix[{1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1}]; M = {{0.713791838181557104120., 0, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0, 0, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, -0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I}, {0, 0.713791838181557104120., 0, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, \ -0.234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, 0}, {0, 0, 0.713791838181557104120., 0, 0, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, -0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0}, {0, 0, 0, 0.713791838181557104120., \ -0.234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I}, \ {-0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, -0.2343688308366258291603440704025530543285644606954919531622\ 20. + 020.337266027259396 I, 0.713791838181557104120., 0, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0, 0, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I}, {0, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, 0, 0, 0.713791838181557104120., 0, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, \ -0.303439262367449976612431827257298755800517781588227837608120. + 020.379189266742404 I, 0}, {0, -0.\ 234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, 0, 0.713791838181557104120., 0, 0, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0}, {0.2343688308366258291603440704025530543285644606954919531622\ 20. + 020.337266027259396 I, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0, 0, 0, 0.713791838181557104120., \ -0.303439262367449976612431827257298755800517781588227837608120. + 020.379189266742404 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I}, \ {-0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0, 0, -0.3034392623674499766124318272572987558005177815882278376081\ 20. + 020.379189266742404 I, 0.713791838181557104120., 0, 0, 0}, {0, -0.\ 178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, \ -0.509885915562221967474585768860457009757753440320635226667620. + 021.092814469971415 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, 0, 0, 0.713791838181557104120., 0, 0}, {0, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, -0.3034392623674499766124318272572987558005177815882278376081\ 20. + 020.379189266742404 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0, 0, 0, 0.713791838181557104120., 0}, {-0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0, 0, 0, 0.713791838181557104120.}}; In[4]:= Precision[t.M] Out[4]= 19.657 In[5]:= Eigenvalues[t.M] Out[5]= {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} In[6]:= $MinPrecision = 19; Eigenvalues[t.M] Out[7]= {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} In[8]:=$MinPrecision = 20; Eigenvalues[t.M] Out[9]= {0.64342605213853898318, -0.64342605213853898318, \ 0.64339804735557256573, -0.64332543749200075174, \ 0.54954065607255415410, -0.54953284326646105374, \ 0.54953284326646105374, -0.54931890613227757447, \ -0.31288706030886822757, 0.31288706030886822757, \ -0.31288313900183744618, 0.31281340426449117539} 
7 Replies
Sort By:
Posted 4 months ago
 Something wrong in your version? In my version all looks as it is supposed - slight change with a slight change in the MinPrecision: In[1]:= $Version t = DiagonalMatrix[{1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1}]; M = {{0.713791838181557104120., 0, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0, 0, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, -0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I}, {0, 0.713791838181557104120., 0, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, \ -0.234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, 0}, {0, 0, 0.713791838181557104120., 0, 0, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, -0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0}, {0, 0, 0, 0.713791838181557104120., \ -0.234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I}, \ {-0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, -0.2343688308366258291603440704025530543285644606954919531622\ 20. + 020.337266027259396 I, 0.713791838181557104120., 0, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0, 0, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I}, {0, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0.234368830836625829160344070402553054328564460695491953162220. \ + 020.337266027259396 I, 0, 0, 0.713791838181557104120., 0, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, \ -0.303439262367449976612431827257298755800517781588227837608120. + 020.379189266742404 I, 0}, {0, -0.\ 234368830836625829160344070402553054328564460695491953162220. + 020.337266027259396 I, \ -0.081884559891379305044909361688047419025162209358070267845520. + 020.79396386163813 I, 0, 0, 0, 0.713791838181557104120., 0, 0, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0}, {0.2343688308366258291603440704025530543285644606954919531622\ 20. + 020.337266027259396 I, 0, 0, -0.0818845598913793050449093616880474190251622093580702678455\ 20. + 020.79396386163813 I, 0, 0, 0, 0.713791838181557104120., \ -0.303439262367449976612431827257298755800517781588227837608120. + 020.379189266742404 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I}, \ {-0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0, 0, -0.3034392623674499766124318272572987558005177815882278376081\ 20. + 020.379189266742404 I, 0.713791838181557104120., 0, 0, 0}, {0, -0.\ 178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, \ -0.509885915562221967474585768860457009757753440320635226667620. + 021.092814469971415 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, 0, 0, 0.713791838181557104120., 0, 0}, {0, 0.509885915562221967474585768860457009757753440320635226667620. \ + 021.092814469971415 I, \ -0.178145633280604326855791239279994816110477075158875390823320. + 021.549512304350156 I, 0, 0, -0.3034392623674499766124318272572987558005177815882278376081\ 20. + 020.379189266742404 I, \ -0.106016616475950221016765430858075802251673269277239525561220. + 020.835887101121145 I, 0, 0, 0, 0.713791838181557104120., 0}, {-0.5098859155622219674745857688604570097577534403206352266676\ 20. + 021.092814469971415 I, 0, 0, -0.1781456332806043268557912392799948161104770751588753908233\ 20. + 021.549512304350156 I, 0.303439262367449976612431827257298755800517781588227837608120. \ + 020.379189266742404 I, 0, 0, -0.1060166164759502210167654308580758022516732692772395255612\ 20. + 020.835887101121145 I, 0, 0, 0, 0.713791838181557104120.}}; Precision[t.M] Eigenvalues[t.M]$MinPrecision = 19; Eigenvalues[t.M] $MinPrecision = 20; Eigenvalues[t.M] Out[1]= "11.3.0 for Microsoft Windows (64-bit) (March 7, 2018)" Out[4]= 19.657 Out[5]= {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, -0.31288706030886822757, \ 0.31288706030886822757} Out[7]= {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, -0.31288706030886822757, \ 0.31288706030886822757} Out[9]= {0.64342605213853898318, -0.64342605213853898318, \ 0.64342605213853898318, -0.64342605213853898318, \ -0.54953284326646105374, 0.54953284326646105374, \ -0.54953284326646105374, 0.54953284326646105374, \ -0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757, 0.31288706030886822757}  Answer Posted 4 months ago  Thank you very much for a very prompt reply. We have a more recent version in our office. I will run the file and post results tomorrow. But at the same time, don't you think that these kind of bugs are somewhat unexpected in 10.0 which is fairly advanced version of Mathematica? Answer Posted 4 months ago  By chance I have two other versions - 8 and 11.0.1. In the eighth version, really there are big differences with a small change in the MinPrecision: "11.0.1 for Microsoft Windows (64-bit) (September 20, 2016)" 19.657 {-0.6434260521385389832, -0.6434260521385389832, \ 0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, -0.5495328432664610537, \ 0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, -0.31288706030886822757, \ 0.31288706030886822757} {-0.6434260521385389832, -0.6434260521385389832, \ 0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, -0.5495328432664610537, \ 0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, -0.31288706030886822757, \ 0.31288706030886822757} {0.64342605213853898318, 0.64342605213853898318, \ -0.64342605213853898318, -0.64342605213853898318, \ -0.54953284326646105374, -0.54953284326646105374, \ 0.54953284326646105374, 0.54953284326646105374, \ -0.31288706030886822757, -0.31288706030886822757, \ 0.31288706030886822757, 0.31288706030886822757} "8.0 for Microsoft Windows (64-bit) (October 7, 2011)" 19.657 {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} {0.64342605213853898318, -0.64342605213853898318, \ 0.64339804735557256573, -0.64332543749200075174, \ 0.54954065607255415410, -0.54953284326646105374, \ 0.54953284326646105374, -0.54931890613227757447, \ -0.31288706030886822757, 0.31288706030886822757, \ -0.31288313900183744618, 0.31281340426449117539}  Answer Posted 4 months ago  It's amazing but I also have version 10 on another computer. In this version also there is a similar bug as in version 8: "10.0 for Microsoft Windows (64-bit) (June 29, 2014)" 19.657 {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} {-0.6434260521385389832, 0.6434260521385389832, \ -0.6434260521385389832, 0.6434260521385389832, 0.5495328432664610538, \ -0.5495328432664610537, 0.5495328432664610537, \ -0.5495328432664610537, -0.31288706030886822758, \ 0.31288706030886822757, 0.31288706030886822757, \ -0.31288706030886822757} {0.64342605213853898318, -0.64342605213853898318, \ 0.64339804735557256573, -0.64332543749200075174, \ 0.54954065607255415410, -0.54953284326646105374, \ 0.54953284326646105374, -0.54931890613227757447, \ -0.31288706030886822757, 0.31288706030886822757, \ -0.31288313900183744618, 0.31281340426449117539}  Answer Posted 4 months ago  For a fix, if you remove the imaginary parts, e.g. with Eigenvalues[Chop[t.M]] or Eigenvalues[Re[t.M]], the problem goes away in 10.4.3.The issue seems to affect NSolve, too. For instance, we get the same errors in the eigenvalues: x /. NSolve[CharacteristicPolynomial[t.M, x] == 0, x] Block[{$MinPrecision = 20}, x /. NSolve[CharacteristicPolynomial[t.M, x] == 0, x] ] (* {-0.6434261, -0.6434261, -0.5495328, -0.5495328, -0.3128871, -0.3128871, 0.3128871, 0.3128871, 0.5495328, 0.5495328, 0.6434261, 0.6434261} {-0.6434260521385, -0.6433254374920, -0.5495328432665, -0.5493189061323, -0.3128870603089, -0.3128831390018, 0.31281340426449, 0.31288706030887, 0.549532843266, 0.549540656073, 0.643398047356, 0.643426052139} *)