Re: Re: 1`2 == 1*^-10
- To: mathgroup at smc.vnet.net
- Subject: [mg71581] Re: [mg71572] Re: [mg71525] 1`2 == 1*^-10
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 24 Nov 2006 01:17:01 -0500 (EST)
- References: <200611221022.FAA04444@smc.vnet.net> <200611231041.FAA25296@smc.vnet.net> <acbec1a40611230510g1e2a4b96y206baf920cc5dbdf@mail.gmail.com>
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/
- References:
- 1`2 == 1*^-10
- From: "Andrew Moylan" <andrew.j.moylan@gmail.com>
- Re: 1`2 == 1*^-10
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- 1`2 == 1*^-10