MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: 1`2 == 1*^-10

Mathematica's confidence aritmetic is not suitable and not meant for  
this sort of situation. In empirical situations you never actualy  
know that your data has exactly 2 or exactly 3 digits of precision.  
What you do know at best is that your error has has a certain  
statistical distribution; and the correct approach in such cases is  
the "backward error" computation  of numerical analysis.  
Mathematica's approach is based on interval arithmetic ("forward  
error") which is can be very useful for purely mathematical purposes  
(one can actually use it to produce "exact" proofs, as has been  
demonstrated on this group. But it is a poor model of situations  
where one deal with empirical errors.
For example, in Hans Stetter's book "Numerical Polynomial   
agebra" (and a number of other places) the notion of an empirical  
polynomial is considered.  The coefficients of such polynomials are  
known only vaguely.  One does not even any precise bounds within  
which each coefficient lies,  but only certain specified tolerances,  
which can be different for different coefficients.  The questions  
that arise in connection with empirical data, e.g. finding roots of  
polynomial systems, are not those of equality (as with Mathemaitca's  
interval like approximate objects) but of validity.  A candidate  
solution for an empirical problem with specified data is considered  
valid with a certain degree of validity if it is the exact solution  
for an set of empirical data lying within a certain distance (in a  
metric defined using the tolerances for the different coefficients)  
of the specified data.  The minimum distance between the specified  
data and data for which the candidate solution is an exact solution  
constitutes the backward error (originally introduced by J.  
Wilkinson) of the solution.
What Mathematica's "significane arithmetic" is really good at is  
automatic detection of numerical instability and automatic increase  
of precision of computations to overcome it. Numerical instability is  
a mathematical and not empirical phenomenon.  The power of  
significance arithmetic is shown at its best in such techniques as  
approximate root isolation or numerical Groebner basis (used by  
NSolve). Typically precision of over one hundred digits is used.  
Empirical problems with low precision data are not well modelled by  
this and any results obtained with significance arithmetic are almost  
certain to be useless. What you need is old fashioned backward error  
analysis, which seems rather hard to implement in software (I don't  
know of any program that performs is automatically) and requires  
certain basic skils in numerical analysis.

Andrzej Kozlowski

On 23 Nov 2006, at 22:10, Chris Chiasson wrote:

> One reason a person may want to work with low precision (or accuracy)
> is when the given data is already of low precision (or accuracy). For
> instance, I only know how tall I am to within half an inch or so. If I
> were doing a calculation involving my height, I would probably enter
> it as:
> height=6*12+1``0
> That's already down to 1.857 digits of precision.
> On 11/23/06, Andrzej Kozlowski <akoz at> wrote:
>> This has come up several times before. I can't imagine why you need
>> to consider numbers with two digits of precision but if you really do
>> I think the best suggestion can be found here:
>> Andrzej Kozlowski
>> On 22 Nov 2006, at 19:22, Andrew Moylan wrote:
>> > Hi all,
>> >
>> > Please help me understand the following behaviour, which was  
>> wrecking
>> > havoc the results I get from calling the function Sort:
>> >
>> > Evaluating
>> >   1`2 == 1*^-10
>> > gives
>> >   True
>> >
>> > Correspondingly, evaluating each of
>> >   1`2 < 1*^-10
>> > and
>> >   1`2 > 1*^-10
>> > give
>> >   False
>> >
>> > Can anyone explain why these two numbers are declared to be equal?
>> > It's
>> > inconsistent with my previous understanding of how arbitrary- 
>> precision
>> > numbers are interpreted in Mathematica.
>> >
>> > (I've resolved my sorting problem by using OrderedQ instead of  
>> Less as
>> > the ordering function in Sort. But why was this necessary?)
>> >
>> > Cheers,
>> > Andrew
>> >
> -- 

  • Prev by Date: Re: Re: 1`2 == 1*^-10
  • Next by Date: Re: Re: 1`2 == 1*^-10
  • Previous by thread: Re: 1`2 == 1*^-10
  • Next by thread: Re: Re: 1`2 == 1*^-10