MathGroup Archive 2006

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

Search the Archive

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

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71589] Re: [mg71572] Re: [mg71525] 1`2 == 1*^-10
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Fri, 24 Nov 2006 01:17:08 -0500 (EST)
  • References: <200611221022.FAA04444@smc.vnet.net> <200611231041.FAA25296@smc.vnet.net> <acbec1a40611230510g1e2a4b96y206baf920cc5dbdf@mail.gmail.com> <29CBE130-4592-44AD-B716-52FCE48A3CCD@mimuw.edu.pl> <acbec1a40611230549y3965ac49rac49799fc39f55ba@mail.gmail.com>

O.K., let me just re-state the main points. Mathematica's model of  
arithmetic is intended for mathematical (not empirical)  purposes.  
Ideally one would like to perform all computations using exact  
numbers. As this is far too slow, significance arithmetic using high  
precision numbers can often produce results as correct as when using  
exact numbers (rationals) but very much faster. Significance  
arithmetic can also be used for error analysis, in exactly the same  
way as interval arithmetic, but at low precision it suffers from  
certain problems so instead bona fide interval arithmetic should be  
used. Again, ideally one would like to use interval arithmetic with  
rational end points, but as this will be very slow machine precision  
interval arithmetic should normally suffice (I think).
Of course all interval arithmetic suffers from the problem you  
mention (pessimistic error estimation). In addition intervals are not  
good models for empirical data, as I tried to explain. There are  
alternative ways of dealing with such situations. The basic idea is  
to formulate some sort of criteria of acceptability for a solution of  
your empirical problem, "guess" a solution and check if it satisfies  
the criteria. If not, then there are ways to try to obtain a more  
accurate solution. All this can be found in texts on modern numerical  
analysis, including the rather specialised book by Stetter.

Andrzej Kozlowski


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

> I find the main problem I have with the significance arithmetic is
> that errors are combined independently in calculations more than one
> step removed from the independent variables, forcing me to use a
> different approach (or get errors that are too high).
>
> All that stuff about polynomials went over my head :-/ Sorry.O
>
> On 11/23/06, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
>> *This message was transferred with a trial version of CommuniGate 
>> (tm) Pro*
>> 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 mimuw.edu.pl> 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:
>> >>
>> >>
>> >> http://forums.wolfram.com/mathgroup/archive/2006/Feb/msg00108.html
>> >>
>> >> 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
>> >> >
>> >>
>> >>
>> >
>> >
>> > --
>> > http://chris.chiasson.name/
>>
>>
>
>
> -- 
> http://chris.chiasson.name/


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