Path: news.mathworks.com!not-for-mail From: <HIDDEN> Newsgroups: comp.soft-sys.matlab Subject: Re: vpa help with matrices Date: Sun, 18 Apr 2010 19:05:10 +0000 (UTC) Organization: Missouri Science and Technology Lines: 32 Message-ID: <hqfl56$nfj$1@fred.mathworks.com> References: <hqfald$g20$1@fred.mathworks.com> <hqfej0$fj4$1@fred.mathworks.com> <hqfg9c$bii$1@fred.mathworks.com> <hqfj77$p87$1@fred.mathworks.com> Reply-To: <HIDDEN> NNTP-Posting-Host: webapp-03-blr.mathworks.com Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: fred.mathworks.com 1271617510 24051 172.30.248.38 (18 Apr 2010 19:05:10 GMT) X-Complaints-To: news@mathworks.com NNTP-Posting-Date: Sun, 18 Apr 2010 19:05:10 +0000 (UTC) X-Newsreader: MATLAB Central Newsreader 1549003 Xref: news.mathworks.com comp.soft-sys.matlab:627652 "Roger Stafford" <ellieandrogerxyzzy@mindspring.com.invalid> wrote in message <hqfj77$p87$1@fred.mathworks.com>... > "ben payne" <ben.is.located@gmail.com> wrote in message <hqfg9c$bii$1@fred.mathworks.com>... > > Hello. I am somewhat confused as to how useful vpa is if it only displays output from symbolic computation. For example, if I want to perform a numeric calculation to better than double or quad precision, it sounds like matlab is unable to do that? > > > > I am asking basically the same question as on > > http://www.mathworks.com/support/solutions/en/data/1-1AGHW/index.html?product=SM&solution=1-1AGHW > > but they don't answer my question there. Namely, if I have two variables known to 100 decimal places, can I perform operations with those variables and retain precision? > > > > Unlike thread 151496, I don't need the fastest library. The original program is written in Fortran 90, and I have used quadruple precision for that. However, quadruple precision is insufficient. > > > > Do I need to be using something like the following? > > http://www.mathworks.com/matlabcentral/fileexchange/6446 > > I assumed matlab would be able to perform vpa arithmetic. > > On my system if I type > > x = vpa('sqrt(2)',100) > > I get the square root of two out to a hundred decimal places of accuracy, but if I merely type > > y = vpa(sqrt(2),100) > > I get a hundred decimal places but it is accurate only out to the sixteenth place. > > The difference is that I have convinced 'vpa' to regard the first expression as being of type 'sym', but the second is only regarded as of type 'double'. There is a world of difference between the two entities. > > To obtain 100-place accuracy in general computations you will need a system that is capable of handling type 'sym'. When you say, "I have two variables known to 100 decimal places" you cannot be talking about a variable represented as a 64-bit double precision floating point number. It can't be done with such a limited object. It has to be in another form with far greater capacity, a form which the symbolic toolbox can use, which is to say a type 'sym'. As you are probably aware, matlab's symbolic toolbox accomplishes this with strings of characters or strings of decimal digits of variable lengths depending on the required accuracy. > > Roger Stafford Thanks for your help Roger. I will implement the program in Mathematica http://reference.wolfram.com/mathematica/tutorial/ArbitraryPrecisionNumbers.html