Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.mathematica > #3468 > unrolled thread
| Started by | "slawek" <slawek@host.pl> |
|---|---|
| First post | 2011-07-04 10:47 +0000 |
| Last post | 2011-07-08 08:53 +0000 |
| Articles | 20 on this page of 34 — 9 participants |
Back to article view | Back to comp.soft-sys.math.mathematica
Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-04 10:47 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Kevin J. McCann" <kjm@KevinMcCann.com> - 2011-07-04 11:14 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-05 09:17 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Kevin J. McCann" <Kevin.McCann@umbc.edu> - 2011-07-06 09:35 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-07 11:40 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Daniel Lichtblau <danl@wolfram.com> - 2011-07-07 11:34 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> - 2011-07-06 09:39 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-07 11:33 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Noqsi <noqsiaerospace@gmail.com> - 2011-07-08 08:51 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-12 11:01 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> - 2011-07-08 09:04 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-09 11:34 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-12 11:02 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> - 2011-07-09 11:37 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Noqsi <noqsiaerospace@gmail.com> - 2011-07-13 07:11 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-14 09:23 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Andrzej Kozlowski <akoz@mimuw.edu.pl> - 2011-07-15 01:19 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "W. Craig Carter" <ccarter@mit.edu> - 2011-07-15 01:25 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Andrzej Kozlowski <akoz@mimuw.edu.pl> - 2011-07-15 08:12 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Andrzej Kozlowski <akoz@mimuw.edu.pl> - 2011-07-16 09:45 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Andrzej Kozlowski <akoz@mimuw.edu.pl> - 2011-07-16 09:40 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Noqsi <noqsiaerospace@gmail.com> - 2011-07-13 07:12 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Noqsi <noqsiaerospace@gmail.com> - 2011-07-15 01:23 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-15 08:10 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Noqsi <noqsiaerospace@gmail.com> - 2011-07-16 09:41 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-17 10:02 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-18 10:14 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Andrzej Kozlowski <akoz@mimuw.edu.pl> - 2011-07-18 10:17 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-19 10:55 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "Kevin J. McCann" <kjm@KevinMcCann.com> - 2011-07-04 11:18 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-05 09:15 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? "slawek" <slawek@host.pl> - 2011-07-06 09:34 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Daniel Lichtblau <danl@wolfram.com> - 2011-07-07 11:35 +0000
Re: Numerical accuracy/precision - this is a bug or a feature? Richard Fateman <fateman@cs.berkeley.edu> - 2011-07-08 08:53 +0000
Page 1 of 2 [1] 2 Next page →
| From | "slawek" <slawek@host.pl> |
|---|---|
| Date | 2011-07-04 10:47 +0000 |
| Subject | Numerical accuracy/precision - this is a bug or a feature? |
| Message-ID | <ius5op$2g7$1@smc.vnet.net> |
Let Mathematica (6.x, 7.x) compute quite a simple product In[1]:= N[N[2.0, 20] * N[Sqrt[2] , 20], 20] Out[1]= 2.82843 This is a bug. Why? Now we analyze it in details: 1. N[2.0,20] should give 2 with accuracy/precision/whatsever about 20 decimal digits, i.e. 2.00000000000000000000 2. Sqrt[2] should give... Sqrt[2] 3. N[Sqrt[2]] should give 1.4142135623730950488 (this is copy-paste from Mathematica output to N[Sqrt[2]] ) 4. The product 2.00000000000000000000 * 1.4142135623730950488 is 2.8284271247461900976 (again copy-paste) 5. BUT THE RESULT OF N[2.0, 20] * N[Sqrt[2] , 20] "truncated to 20 digits" is Out[1]= 2.82843 Where are missing digits?! slawek
[toc] | [next] | [standalone]
| From | "Kevin J. McCann" <kjm@KevinMcCann.com> |
|---|---|
| Date | 2011-07-04 11:14 +0000 |
| Message-ID | <ius7b6$30t$1@smc.vnet.net> |
| In reply to | #3468 |
The answer to this puzzle is that the N[2.0,20] is 2.0, not 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0 in you have already limited yourself to machine precision, and N[2.0,20] is then just machine accuracy. Kevin On 7/4/2011 6:47 AM, slawek wrote: > Let Mathematica (6.x, 7.x) compute quite a simple product > > In[1]:= N[N[2.0, 20] * N[Sqrt[2] , 20], 20] > > Out[1]= 2.82843 > > This is a bug. > > Why? > > Now we analyze it in details: > > 1. N[2.0,20] should give 2 with accuracy/precision/whatsever about 20 > decimal digits, i.e. 2.00000000000000000000 > > 2. Sqrt[2] should give... Sqrt[2] > > 3. N[Sqrt[2]] should give 1.4142135623730950488 (this is copy-paste from > Mathematica output to N[Sqrt[2]] ) > > 4. The product 2.00000000000000000000 * 1.4142135623730950488 is > 2.8284271247461900976 (again copy-paste) > > 5. BUT THE RESULT OF N[2.0, 20] * N[Sqrt[2] , 20] "truncated to 20 digits" > is Out[1]= 2.82843 > > Where are missing digits?! > > slawek > > > >
[toc] | [prev] | [next] | [standalone]
| From | "slawek" <slawek@host.pl> |
|---|---|
| Date | 2011-07-05 09:17 +0000 |
| Message-ID | <iuukrt$erd$1@smc.vnet.net> |
| In reply to | #3480 |
Użytkownik "Kevin J. McCann" <kjm@KevinMcCann.com> napisał w wiadomości grup dyskusyjnych:ius7b6$30t$1@smc.vnet.net... > The answer to this puzzle is that the N[2.0,20] is 2.0, not > 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0 > in you have already limited yourself to machine precision, and N[2.0,20] > is then just machine accuracy. It is still a-bug-and-a-feature. And this bug make Mathematica nearly useless in numerical computations. "MS Windows Calculator" is much more reliable! The number of written digits IS NEITHER the precision NOR the accuracy. Mathematica treat 2.0 as a 2.0+-0.1, but it is not the proper way to handle numbers. I know, that it is common mistake to treat 2.0 as "not an integer number" and/or "exact" number, but 2.0 is an integer number AND also it is a rational number AND also a real number AND also a complex number. And 2.0 is simply 1+1+ 0/10 . Therefore, as you see, there is no "roudning", "limited precision", "error" or "uncertinaity". It is only a matter of a notation of decimal fractions. And decimal fractions are exact. Any "tolerance" is not indicated in any way by this notation. Thus it is a bug. Nasty, big, fat bug in the core of Mathematica. Even from "CS view" 2.0 is translated to IEEE representation with 56-bits of the mantisa. Nobody declare float x = 2.0000000000 to iniject the float point two into a code. slawek
[toc] | [prev] | [next] | [standalone]
| From | "Kevin J. McCann" <Kevin.McCann@umbc.edu> |
|---|---|
| Date | 2011-07-06 09:35 +0000 |
| Message-ID | <iv1a86$sji$1@smc.vnet.net> |
| In reply to | #3487 |
Well, I certainly disagree with your assessment. The rules regarding exact and machine precision numbers are straightforward and stated in the documentation. But if you feel that the MS Windows Calculator is a better option, by all means use that. It is free and easy to use. 2.0 is not an integer nor a rational, it is machine precision. On the other hand 2 is an integer and exact. As far as whether or not 2.0 should be considered as 2.0+-0.1 or as 2.000..., 2.0 is a machine precision number, which means 2.000000000000000 or as close as you can get in about 16 places. Telling Mathematica that you want 20 places is somewhat like asking Mathematica to give more accuracy *after* the calculation is finished. At any rate my friend David Park reminded me that you can specify your 2.0 to 20 places with the following: 2.0`20 Precision[%] 20. Kevin On 7/5/2011 5:17 AM, slawek wrote: > Użytkownik "Kevin J. McCann"<kjm@KevinMcCann.com> napisał w wiadomości grup > dyskusyjnych:ius7b6$30t$1@smc.vnet.net... >> The answer to this puzzle is that the N[2.0,20] is 2.0, not >> 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0 >> in you have already limited yourself to machine precision, and N[2.0,20] >> is then just machine accuracy. > > It is still a-bug-and-a-feature. > And this bug make Mathematica nearly useless in numerical computations. "MS > Windows Calculator" is much more reliable! > > > The number of written digits IS NEITHER the precision NOR the accuracy. > Mathematica treat 2.0 as a 2.0+-0.1, but it is not the proper way to handle > numbers. > > I know, that it is common mistake to treat 2.0 as "not an integer number" > and/or "exact" number, but 2.0 is an integer number AND also it is a > rational number AND also a real number AND also a complex number. And 2.0 is > simply 1+1+ 0/10 . Therefore, as you see, there is no "roudning", "limited > precision", "error" or "uncertinaity". It is only a matter of a notation of > decimal fractions. And decimal fractions are exact. Any "tolerance" is not > indicated in any way by this notation. Thus it is a bug. Nasty, big, fat bug > in the core of Mathematica. > > Even from "CS view" 2.0 is translated to IEEE representation with 56-bits of > the mantisa. Nobody declare float x = 2.0000000000 to iniject the float > point two into a code. > > slawek > > >
[toc] | [prev] | [next] | [standalone]
| From | "slawek" <slawek@host.pl> |
|---|---|
| Date | 2011-07-07 11:40 +0000 |
| Message-ID | <iv45vd$f7b$1@smc.vnet.net> |
| In reply to | #3508 |
U=BFytkownik "Kevin J. McCann" <Kevin.McCann@umbc.edu> napisa=B3 w wiadomo=B6ci grup dyskusyjnych:iv1a86$sji$1@smc.vnet.net... > 2.0 is not an integer nor a rational, it is machine precision. On the > other hand 2 is an integer and exact. The decimal fraction 2.0 is in mathematics (the science) exactly the same as the sum 2 + 0/10 The convention that 2.0 is less accurate than 2.00 is applied ONLY in Mathematica (the computer program).
[toc] | [prev] | [next] | [standalone]
| From | Daniel Lichtblau <danl@wolfram.com> |
|---|---|
| Date | 2011-07-07 11:34 +0000 |
| Message-ID | <iv45kq$f33$1@smc.vnet.net> |
| In reply to | #3487 |
On Jul 5, 4:17 am, "slawek" <sla...@host.pl> wrote: > U ytkownik "Kevin J. McCann" <k...@KevinMcCann.com> napisa w wiadomo ci grup > dyskusyjnych:ius7b6$30...@smc.vnet.net... > > > The answer to this puzzle is that the N[2.0,20] is 2.0, not > > 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0 > > in you have already limited yourself to machine precision, and N[2.0,20] > > is then just machine accuracy. > > It is still a-bug-and-a-feature. > And this bug make Mathematica nearly useless in numerical computations. "MS > Windows Calculator" is much more reliable! I have used Mathematica for numerical computation for nearly 20 years and will say that on most days I do not find it to be useless. I am not familiar with MS Windows Calculator so cannot comment on any comparison between the two. > The number of written digits IS NEITHER the precision NOR the accuracy. > Mathematica treat 2.0 as a 2.0+-0.1, but it is not the proper way to handle > numbers. As written this is not correct. In Mathematica if you input 2.0 then it is treated as a machine double, which on all platforms today has around 16 decimal places. In any case it is 2. +-$MachineEpsilon. The formatting of machine floats attempts (I believe always successfully) to show the decimal approximating to the underlying binary value (that is, within half an error-in-the-last place) that has the least number of digits. So for example 2.1 will be printed as 2.1, even though the underlying binary representation is not identically equal to 21/10. > I know, that it is common mistake to treat 2.0 as "not an integer number" > and/or "exact" number, but 2.0 is an integer number AND also it is a > rational number AND also a real number AND also a complex number. This is a matter to be determined by the language semantics (for any language, not just Mathematica). A "design decision", if you will (and as another response states). You may not like the design, and you may have reasons for not liking it, or for preferring other programs. That does not make this design intrinsically wrong. > And 2.0 is > simply 1+1+ 0/10 . Therefore, as you see, there is no "roudning", "limited > precision", "error" or "uncertinaity". It is only a matter of a notation of > decimal fractions. And decimal fractions are exact. This is only true if the underlying representation is decimal. In some programs that might be the case. In Mathematica underlying representations are binary based. So a decimal such as 2.1 will not be 2 + 1/10 because that cannot be supported by finite binary representation. A different tack would be to translate, at parse time say, decimal input such as 2.1 to exact input such as 21/10. I will spare anyone who has read this far from all the reasons why that would be an incredibly bad idea. Suffice it to say that if one wants to work with exactly 21/10 then one should use 21/10, and not an approximate input variant thereof. > Any "tolerance" is not > indicated in any way by this notation. Thus it is a bug. Nasty, big, fat bug > in the core of Mathematica. > > Even from "CS view" 2.0 is translated to IEEE representation with 56-bits of > the mantisa. Nobody declare float x = 2.0000000000 to iniject the float > point two into a code. > > slawek Daniel Lichtblau Wolfram Research
[toc] | [prev] | [next] | [standalone]
| From | "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> |
|---|---|
| Date | 2011-07-06 09:39 +0000 |
| Message-ID | <iv1afr$sku$1@smc.vnet.net> |
| In reply to | #3480 |
On Tue, 05 Jul 2011 10:17:49 +0100, slawek <slawek@host.pl> wrote:
> U=BFytkownik "Kevin J. McCann" <kjm@KevinMcCann.com> napisa=B3 w wiadomo=B6ci
> grup dyskusyjnych:ius7b6$30t$1@smc.vnet.net...
>> The answer to this puzzle is that the N[2.0,20] is 2.0, not
>> 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0
>> in you have already limited yourself to machine precision, and N[2.0,20]
>> is then just machine accuracy.
>
> It is still a-bug-and-a-feature.
> And this bug make Mathematica nearly useless in numerical computations..
> "MS Windows Calculator" is much more reliable!
>
> The number of written digits IS NEITHER the precision NOR the accuracy..
> Mathematica treat 2.0 as a 2.0+-0.1, but it is not the proper way to
> handle numbers.
>
In fact:
In[1] :=
Interval[2.0] // InputForm
Out[1]//InputForm =
Interval[{1.9999999999999998, 2.0000000000000004}]
While:
In[2] :=
Interval[2.0``1] // InputForm
Out[2]//InputForm =
Interval[{1.875`1.2730012720637347, 2.125`1.327358934386329}]
Precision (which, as defined by Mathematica, means relative uncertainty)
and accuracy (absolute uncertainty) are expressed as annotations after the
number. In the special case of a number with a decimal point and no
annotation, the number is taken to be a machine precision real. I agree
that these definitions and the notational convention chosen by Mathematica
are strange. However, there is nothing "improper" about it as a choice of
formalism--at least, this is no worse a design choice than for Mathematica
to have standardized on decimal notation for input and presentation of
numerical values rather than binary as it uses internally.
The purpose of this approach is as a crude but often adequate
approximation to interval arithmetic, whereby these (approximations of)
errors are carried through arithmetic operations using first-order
algebraic methods. When functions (such as N) that pay attention to
Precision and Accuracy (by Mathematica's definitions) see them decreasing,
they increase the working precision so as to avoid numerical instability
being expressed in the final result. This is by no means intended to be
rigorous; it is merely a heuristic, but one that comes at little cost and
works in many cases. Of course, if a user's own code treats this
approximation as somehow sacrosanct and ignores the precision adjustments
necessary during the calculation while taking the final answer as correct,
it is more likely that the approximation will have fallen apart somewhere
down the line.
If you don't like significance arithmetic, you have (at least) two other
options at hand: either work in fixed precision ($MinPrecision
$MaxPrecision = prec) or use interval arithmetic. These have their own
drawbacks, of course (most notably that Mathematica tacitly assumes all
intervals are uncorrelated), but your hand isn't forced either way and you
may even use all three methods simultaneously if you wish. Alternatively
you may program your own, more accurate algebraic or Monte Carlo error
propagation methods if you prefer.
> I know, that it is common mistake to treat 2.0 as "not an integer number"
> and/or "exact" number, but 2.0 is an integer number AND also it is a
> rational number AND also a real number AND also a complex number. And
> 2.0 is simply 1+1+ 0/10 . Therefore, as you see, there is no "roudning",
> "limited
> precision", "error" or "uncertinaity". It is only a matter of a notation
> of decimal fractions. And decimal fractions are exact. Any "tolerance"
> is not
> indicated in any way by this notation. Thus it is a bug. Nasty, big, fat
> bug in the core of Mathematica.
>
> Even from "CS view" 2.0 is translated to IEEE representation with
> 56-bits of
> the mantisa. Nobody declare float x = 2.0000000000 to iniject the float
> point two into a code.
>
> slawek
[toc] | [prev] | [next] | [standalone]
| From | Richard Fateman <fateman@cs.berkeley.edu> |
|---|---|
| Date | 2011-07-07 11:33 +0000 |
| Message-ID | <iv45it$f21$1@smc.vnet.net> |
| In reply to | #3510 |
On 7/6/2011 2:39 AM, Oleksandr Rasputinov wrote:
> On Tue, 05 Jul 2011 10:17:49 +0100, slawek<slawek@host.pl> wrote:
>
>> U=BFytkownik "Kevin J. McCann"<kjm@KevinMcCann.com> napisa=B3 w wiadomo=B6ci
>
>> grup dyskusyjnych:ius7b6$30t$1@smc.vnet.net...
>>> The answer to this puzzle is that the N[2.0,20] is 2.0, not
>>> 2.00000000... Try N[2,20] and all is well. I think that when you put 2.0
>>> in you have already limited yourself to machine precision, and N[2.0, 20]
>>> is then just machine accuracy.
>>
>> It is still a-bug-and-a-feature.
>> And this bug make Mathematica nearly useless in numerical computations ..
>> "MS Windows Calculator" is much more reliable!
>>
>> The number of written digits IS NEITHER the precision NOR the accuracy ..
>> Mathematica treat 2.0 as a 2.0+-0.1, but it is not the proper way to
>> handle numbers.
>>
>
> In fact:
>
> In[1] :=
> Interval[2.0] // InputForm
>
> Out[1]//InputForm =
> Interval[{1.9999999999999998, 2.0000000000000004}]
>
> While:
>
> In[2] :=
> Interval[2.0``1] // InputForm
>
> Out[2]//InputForm =
> Interval[{1.875`1.2730012720637347, 2.125`1.327358934386329}]
>
> Precision (which, as defined by Mathematica, means relative uncertainty)
> and accuracy (absolute uncertainty) are expressed as annotations after the
> number. In the special case of a number with a decimal point and no
> annotation, the number is taken to be a machine precision real. I agree
> that these definitions and the notational convention chosen by Mathematica
> are strange. However, there is nothing "improper" about it as a choice of
> formalism--at least, this is no worse a design choice than for Mathematica
> to have standardized on decimal notation for input and presentation of
> numerical values rather than binary as it uses internally.
>
> The purpose of this approach is as a crude but often adequate
> approximation to interval arithmetic, whereby these (approximations of)
> errors are carried through arithmetic operations using first-order
> algebraic methods. When functions (such as N) that pay attention to
> Precision and Accuracy (by Mathematica's definitions) see them decreasing,
> they increase the working precision so as to avoid numerical instability
> being expressed in the final result. This is by no means intended to be
> rigorous; it is merely a heuristic, but one that comes at little cost and
> works in many cases. Of course, if a user's own code treats this
> approximation as somehow sacrosanct and ignores the precision adjustments
> necessary during the calculation while taking the final answer as correct,
> it is more likely that the approximation will have fallen apart somewhere
> down the line.
>
> If you don't like significance arithmetic, you have (at least) two other
> options at hand: either work in fixed precision ($MinPrecision
> $MaxPrecision = prec) or use interval arithmetic. These have their own
> drawbacks, of course (most notably that Mathematica tacitly assumes all
> intervals are uncorrelated), but your hand isn't forced either way and you
> may even use all three methods simultaneously if you wish. Alternatively
> you may program your own, more accurate algebraic or Monte Carlo error
> propagation methods if you prefer.
>
>....
>
This is an excellent summary of Mathematica's approach to arithmetic on
numbers. Unfortunately many people come to use Mathematica with their
own notions of numbers, accuracy, precision, and equality. These words
are redefined in a non-standard way in Mathematica, leading to
unfortunate situations sometimes. "unexplainable" behavior. confusion.
Or worse, erroneous results silently delivered and accepted as true by a
user, who "knows" about precision, accuracy, floating-point arithmetic, etc.
WRI argues that this is a winning proposition. Perhaps Wolfram still
believes that someday all the world will use Mathematica for all
programming purposes and everyone will accept his definition of terms
like Precision and Accuracy, and that (see separate thread on how to
write a mathematical paper) it will all be natural and consistent.
(or that people who want to hold to the standard usage will be forced to
use something like SetGlobalPrecision[prec_]:=
$MaxPrecision=MinPrecision=prec.
I believe this is routinely used by people who find Mathematica's
purportedly "user-friendly" amateurish error control to be hazardous.
)
.........
'When I use a word,' Humpty Dumpty said, in rather a scornful tone, 'it
means just what I choose it to mean =97 neither more nor less.'
'The question is,' said Alice, 'whether you can make words mean so many
different things.'
'The question is,' said Humpty Dumpty, 'which is to be master =97 that's
all.'
[toc] | [prev] | [next] | [standalone]
| From | Noqsi <noqsiaerospace@gmail.com> |
|---|---|
| Date | 2011-07-08 08:51 +0000 |
| Message-ID | <iv6gf9$ruo$1@smc.vnet.net> |
| In reply to | #3480 |
On Jul 7, 5:40 am, "slawek" <sla...@host.pl> wrote: > The convention that 2.0 is less accurate than 2.00 is applied ONLY in > Mathematica (the computer program). Not true. This is a long-standing convention in experimental science.
[toc] | [prev] | [next] | [standalone]
| From | "slawek" <slawek@host.pl> |
|---|---|
| Date | 2011-07-12 11:01 +0000 |
| Message-ID | <ivh9ig$lov$1@smc.vnet.net> |
| In reply to | #3560 |
Użytkownik "Noqsi" <noqsiaerospace@gmail.com> napisał w wiadomości grup dyskusyjnych:iv6gf9$ruo$1@smc.vnet.net... > On Jul 7, 5:40 am, "slawek" <sla...@host.pl> wrote: > >> The convention that 2.0 is less accurate than 2.00 is applied ONLY in >> Mathematica (the computer program). > > Not true. This is a long-standing convention in experimental science. There is no such convention. There is always possible that 2.00 +- 0.53 . Nobody should believe that 2.00 is more exact than 2.0 or even 2 . (If so, then 2 Pi have got 10% std. dev. ;)
[toc] | [prev] | [next] | [standalone]
| From | "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> |
|---|---|
| Date | 2011-07-08 09:04 +0000 |
| Message-ID | <iv6h68$s97$1@smc.vnet.net> |
| In reply to | #3480 |
On Thu, 07 Jul 2011 12:33:49 +0100, Richard Fateman <fateman@cs.berkeley.edu> wrote: > On 7/6/2011 2:39 AM, Oleksandr Rasputinov wrote: >> >> Precision (which, as defined by Mathematica, means relative uncertainty) >> and accuracy (absolute uncertainty) are expressed as annotations after >> the >> number. In the special case of a number with a decimal point and no >> annotation, the number is taken to be a machine precision real. I agree >> that these definitions and the notational convention chosen by >> Mathematica >> are strange. However, there is nothing "improper" about it as a choice >> of >> formalism--at least, this is no worse a design choice than for >> Mathematica >> to have standardized on decimal notation for input and presentation of >> numerical values rather than binary as it uses internally. >> >> The purpose of this approach is as a crude but often adequate >> approximation to interval arithmetic, whereby these (approximations of) >> errors are carried through arithmetic operations using first-order >> algebraic methods. When functions (such as N) that pay attention to >> Precision and Accuracy (by Mathematica's definitions) see them >> decreasing, >> they increase the working precision so as to avoid numerical instability >> being expressed in the final result. This is by no means intended to be >> rigorous; it is merely a heuristic, but one that comes at little cost >> and >> works in many cases. Of course, if a user's own code treats this >> approximation as somehow sacrosanct and ignores the precision >> adjustments >> necessary during the calculation while taking the final answer as >> correct, >> it is more likely that the approximation will have fallen apart >> somewhere >> down the line. >> >> If you don't like significance arithmetic, you have (at least) two other >> options at hand: either work in fixed precision ($MinPrecision >> $MaxPrecision = prec) or use interval arithmetic. These have their own >> drawbacks, of course (most notably that Mathematica tacitly assumes all >> intervals are uncorrelated), but your hand isn't forced either way and >> you >> may even use all three methods simultaneously if you wish. Alternatively >> you may program your own, more accurate algebraic or Monte Carlo error >> propagation methods if you prefer. >> >> .... >> > > This is an excellent summary of Mathematica's approach to arithmetic on > numbers. Unfortunately many people come to use Mathematica with their > own notions of numbers, accuracy, precision, and equality. These words > are redefined in a non-standard way in Mathematica, leading to > unfortunate situations sometimes. "unexplainable" behavior. confusion. > Or worse, erroneous results silently delivered and accepted as true by a > user, who "knows" about precision, accuracy, floating-point arithmetic, > etc. Apart from the curious definitions given to Precision and Accuracy (one imagines ApproximateRelativeError and ApproximateAbsoluteError were considered too verbose), I do not think Mathematica's way of doing things is particularly arbitrary or confusing in the broader context of multiprecision arithmetic. Mathematically, finite-precision numbers represent distributions over finite fields, and they therefore possess quantized upper and lower bounds, as well as quantized expectation values. Strictly, then, any two such distributions cannot be said to be equal if they represent numbers of different precision: they are then distributions over two entirely different fields, irrespective of whether their expectation values may be equal. However, this definition is not very useful numerically and we are usually satisfied in practice that two finite-precision numbers equal if the expectation values are equal within quantization error. Note that the question of true equality for numbers of different precisions, i.e. the means of the distributions being equal, is impossible to resolve in general given that the means (which represent the exact values) are not available to us. Heuristically, the mean should be close, in a relative sense, to the expectation value, hence the tolerance employed by Equal; the exact magnitude of this tolerance may perhaps be a matter for debate but either way it is set using Internal`$EqualTolerance, which takes a machine real value indicating the number of decimal digits' tolerance that should be applied, i.e. Log[2]/Log[10] times the number of least significant bits one wishes to ignore. This setting has been discussed in this forum at least once in the past: see e.g. <http://forums.wolfram.com/mathgroup/archive/2009/Dec/msg00013.html>. Note that if one wishes to be more rigorous when determining equality, SameQ operates in a similar manner to Equal for numeric comparands, except that its tolerance is 1 (binary) ulp. This is also adjustable, via Internal`$SameQTolerance. In regard to erroneous results: undoubtedly it is a possibility. However, one would expect that an approximate first order method for dealing with error propagation should at least be better in the majority of cases than a zeroth-order method such as working in fixed precision. As stated previously, if one desires more accurate approximations then one is in any case free to implement them, although given the above it should be clear that all that is generally possible within the domain of finite-precision numbers is a reasonable approximation unless other information is available from which to make stronger deductions. I will also note that none of the example "problems" in this present topic are anything directly to do with significance arithmetic; they instead represent a combination of confusion due to Mathematica's (admittedly confusing) choice of notation, combined with an apparent misunderstanding of concepts related to multiprecision arithmetic in general. > > WRI argues that this is a winning proposition. Perhaps Wolfram still > believes that someday all the world will use Mathematica for all > programming purposes and everyone will accept his definition of terms > like Precision and Accuracy, and that (see separate thread on how to > write a mathematical paper) it will all be natural and consistent. > (or that people who want to hold to the standard usage will be forced to > use something like SetGlobalPrecision[prec_]:= > $MaxPrecision=MinPrecision=prec. > I believe this is routinely used by people who find Mathematica's > purportedly "user-friendly" amateurish error control to be hazardous. > ) > > ......... > > 'When I use a word,' Humpty Dumpty said, in rather a scornful tone, 'it > means just what I choose it to mean =97 neither more nor less.' > > 'The question is,' said Alice, 'whether you can make words mean so many > different things.' > > 'The question is,' said Humpty Dumpty, 'which is to be master =97 that's > all.'
[toc] | [prev] | [next] | [standalone]
| From | Richard Fateman <fateman@cs.berkeley.edu> |
|---|---|
| Date | 2011-07-09 11:34 +0000 |
| Message-ID | <iv9eco$d9u$1@smc.vnet.net> |
| In reply to | #3586 |
On 7/8/2011 2:04 AM, Oleksandr Rasputinov wrote:
.. snip...
>
> Apart from the curious definitions given to Precision and Accuracy (one
> imagines ApproximateRelativeError and ApproximateAbsoluteError were
> considered too verbose), I do not think Mathematica's way of doing things
> is particularly arbitrary or confusing in the broader context of
> multiprecision arithmetic. Mathematically, finite-precision numbers
> represent distributions over finite fields, and they therefore possess
> quantized upper and lower bounds, as well as quantized expectation values.
This is one view, but one that is not especially useful computationally.
A much more useful view is that a finite-precision number is simply a
single value. That's all. The number 3 has no fuzz around it. The
double-float number 0.1d0 has no fuzz around it either. It is not
exactly 1/10, but
7205759403792794 X 2 ^(-56).
exactly. It is a finite precision number because the fraction part, here
7205759403792794, is limited to a fixed number of bits. There is, I
repeat, nothing that makes it a distribution.
Another way of writing it is
3602879701896397/36028797018963968
The advantages of this view:
(1) arithmetic is well-defined and executable on a computer
(2) should you choose to implement some kind of distribution arithmetic
-- intervals, Gaussian bell curves, significance arithmetic,
fuzzy-set-theoretic whatever, you can do so knowing that the underlying
implementation of arithmetic is supportive of any model that can be
reduced to ordinary mathematics.
> Strictly, then, any two such distributions cannot be said to be equal if
> they represent numbers of different precision: they are then distributions
> over two entirely different fields, irrespective of whether their
> expectation values may be equal.
This is something you are free to implement. I personally object to an
arithmetic system and a notion of equality that does not support the
fundamental properties of equivalence relations. I much prefer that if
a==b, then a-b==0. This of course fails, in Mathematica.
>
> However, this definition is not very useful numerically and we are usually
> satisfied in practice that two finite-precision numbers equal if the
> expectation values are equal within quantization error.
No, I disagree. It used to be that programmers were taught that one
should never (or almost never) compare floating point numbers for
equality. You can easily ask if two numbers are relatively or
absolutely close. That is not the same as being equal.
Note that the
> question of true equality for numbers of different precisions, i.e. the
> means of the distributions being equal, is impossible to resolve in
> general given that the means (which represent the exact values) are not
> available to us.
The fault here is that you view numbers as distributions. I have no
problem telling if a number 0.1d0 is equal to
3602879701896397/36028797018963968 .
It is. That is its value. It is equal to all other objects with the
same exact value. That's what equal means.
Is it equal to 0.099999999? No, but it is relatively close by some measure.
Heuristically, the mean should be close, in a relative
> sense, to the expectation value, hence the tolerance employed by Equal;
You may choose to believe this, but it is mathematical nonsense.
> the exact magnitude of this tolerance may perhaps be a matter for debate
> but either way it is set using Internal`$EqualTolerance, which takes a
> machine real value indicating the number of decimal digits' tolerance that
> should be applied, i.e. Log[2]/Log[10] times the number of least
> significant bits one wishes to ignore. This setting has been discussed in
> this forum at least once in the past: see e.g.
> <http://forums.wolfram.com/mathgroup/archive/2009/Dec/msg00013.html>.
I suspect there are more insightful discussions in the archives.
>
> Note that if one wishes to be more rigorous when determining equality,
> SameQ operates in a similar manner to Equal for numeric comparands, except
> that its tolerance is 1 (binary) ulp. This is also adjustable, via
> Internal`$SameQTolerance.
It is nice that one can try to scrape out all the garbage of the
arithmetic by setting internal flags, but the way it is set up in
Mathematica, the ordinary user with default system settings is exposed
to a really defective arithmetic system.
>
> In regard to erroneous results: undoubtedly it is a possibility. However,
> one would expect that an approximate first order method for dealing with
> error propagation should at least be better in the majority of cases than
> a zeroth-order method such as working in fixed precision.
You might think that, but the choice is not so clear.
If you set $MinPrecision=$MaxPrecision
then
(i = 1.100000000000000000; Do[(i = 2*i - i; Print[i]), {4}])
gives Overflow[] 4 times.
In the default setting, $MinPRecision is 0.
then
(i = 1.100000000000000000; Do[(i = 2*i - i; Print[i]), {50}]
sets i to decreasingly precise values, ending in 0., 0., 0X10^1, ... 0X10^5
(try it.. it is only one line!)
What is the naive user to do?
If you think this example is a good result, imagine what would happen to
a naive user (most are) who has a more elaborate program (most are)
which internally produces an answer " 0. " which is entirely bogus?
As stated
> previously, if one desires more accurate approximations then one is in any
> case free to implement them, although given the above it should be clear
> that all that is generally possible within the domain of finite-precision
> numbers is a reasonable approximation unless other information is
> available from which to make stronger deductions.
Quite the opposite. All numbers in a computer calculation should be
considered exact unless other information is available from which to
make WEAKER deductions. Then the kind of deductions (based, perhaps, on
knowledge of physical measurements or uncertainties) can be incorporated
in the calculation.
I will also note that
> none of the example "problems" in this present topic are anything directly
> to do with significance arithmetic; they instead represent a combination
> of confusion due to Mathematica's (admittedly confusing) choice of
> notation,
I think that is right.
combined with an apparent misunderstanding of concepts related
> to multiprecision arithmetic in general.
I think that the concepts of multiprecision arithmetic as implemented
in Mathematica are different from other implementations in general.
Bringing such outside knowledge to bear on an utterance in Mathematica
is hazardous.
>
>>
>> WRI argues that this is a winning proposition. Perhaps Wolfram still
>> believes that someday all the world will use Mathematica for all
>> programming purposes and everyone will accept his definition of terms
>> like Precision and Accuracy, and that (see separate thread on how to
>> write a mathematical paper) it will all be natural and consistent.
>> (or that people who want to hold to the standard usage will be forced to
>> use something like SetGlobalPrecision[prec_]:=
>> $MaxPrecision=MinPrecision=prec.
>> I believe this is routinely used by people who find Mathematica's
>> purportedly "user-friendly" amateurish error control to be hazardous.
>> )
>>
>> .........
>>
>> 'When I use a word,' Humpty Dumpty said, in rather a scornful tone, 'it
>> means just what I choose it to mean =97 neither more nor less.'
>>
>> 'The question is,' said Alice, 'whether you can make words mean so many
>> different things.'
>>
>> 'The question is,' said Humpty Dumpty, 'which is to be master =97 that's
>> all.'
>
[toc] | [prev] | [next] | [standalone]
| From | "slawek" <slawek@host.pl> |
|---|---|
| Date | 2011-07-12 11:02 +0000 |
| Message-ID | <ivh9jf$lp5$1@smc.vnet.net> |
| In reply to | #3586 |
Użytkownik "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> napisał w wiadomości grup dyskusyjnych:iv6h68$s97$1@smc.vnet.net... > considered too verbose), I do not think Mathematica's way of doing things > is particularly arbitrary or confusing in the broader context of If 1.4 is not the same as 14/10, then Mathematica should evaluate 1.4 == 14/10 as False.
[toc] | [prev] | [next] | [standalone]
| From | "Oleksandr Rasputinov" <oleksandr_rasputinov@hmamail.com> |
|---|---|
| Date | 2011-07-09 11:37 +0000 |
| Message-ID | <iv9ehj$dct$1@smc.vnet.net> |
| In reply to | #3480 |
On Fri, 08 Jul 2011 09:51:53 +0100, Noqsi <noqsiaerospace@gmail.com> wrote: > On Jul 7, 5:40 am, "slawek" <sla...@host.pl> wrote: > >> The convention that 2.0 is less accurate than 2.00 is applied ONLY in >> Mathematica (the computer program). > > Not true. This is a long-standing convention in experimental science. > Unfortunately so, given that it is severely erroneous: see e.g. <http://www.av8n.com/physics/uncertainty.htm>. However, Mathematica's approximation of how these uncertainties propagate is first-order, not zeroth-order. This does not make it completely reliable, of course, but certainly it is not almost always wrong as is the significant digits convention. Within the bounds of its own applicability, Mathematica's approximation is reasonable, although it would still be a mistake to apply it to experimental uncertainty analysis given the much broader scope of the latter.
[toc] | [prev] | [next] | [standalone]
| From | Noqsi <noqsiaerospace@gmail.com> |
|---|---|
| Date | 2011-07-13 07:11 +0000 |
| Message-ID | <ivjgfp$2b9$1@smc.vnet.net> |
| In reply to | #3610 |
On Jul 9, 4:37 am, "Oleksandr Rasputinov" <oleksandr_rasputi...@hmamail.com> wrote: > On Fri, 08 Jul 2011 09:51:53 +0100, Noqsi <noqsiaerosp...@gmail.com> wrote: > > On Jul 7, 5:40 am, "slawek" <sla...@host.pl> wrote: > > >> The convention that 2.0 is less accurate than 2.00 is applied ONLY in > >> Mathematica (the computer program). > > > Not true. This is a long-standing convention in experimental science. > > Unfortunately so, given that it is severely erroneous: Such an unqualified statement is unjustified. Whether this produces troublesome error or not depends on what you're doing. > see e.g. > <http://www.av8n.com/physics/uncertainty.htm>. I have some sympathy with this point of view. But I recall a rather vehement dispute between two colleagues in a tame case where recording only significant digits was fine. That dispute poisoned human relationships unnecessarily. The real folly is to be ideological about this, instead of understanding what you're doing *from the perspective of the problem domain*. One size does not fit all. > However, Mathematica's > approximation of how these uncertainties propagate is first-order, not > zeroth-order. This does not make it completely reliable, of course, but > certainly it is not almost always wrong as is the significant digits > convention. Within the bounds of its own applicability, Mathematica's > approximation is reasonable, although it would still be a mistake to apply > it to experimental uncertainty analysis given the much broader scope of > the latter. Experimental uncertainty analysis almost always involves approximation. Avoiding shortcuts in the statistical formulation can lead to extremely large calculations even when the data set is very small. See, for example, Loredo and Lamb 1989, bibcode 1989NYASA. 571..601L. This example still required numerical approximation. In this case, I think the enormous human and computational effort was justified, but the appropriateness of any particular approach depends on the problem to be solved.
[toc] | [prev] | [next] | [standalone]
| From | Richard Fateman <fateman@cs.berkeley.edu> |
|---|---|
| Date | 2011-07-14 09:23 +0000 |
| Message-ID | <ivmchv$fan$1@smc.vnet.net> |
| In reply to | #3683 |
On 7/13/2011 12:11 AM, Noqsi wrote: .. >> see e.g. >> <http://www.av8n.com/physics/uncertainty.htm>. > > .. Learning mathematics from a physicist is hazardous. Learning computer science from a physicist is hazardous too. Numbers in a computer are different from experimental measurements. nevertheless, I like this article. It says, among other things, The technique of propagating the uncertainty from step to step throughout the calculation is a very bad technique. It might sometimes work for super-simple “textbook” problems but it is unlikely to work for real-world problems.
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Kozlowski <akoz@mimuw.edu.pl> |
|---|---|
| Date | 2011-07-15 01:19 +0000 |
| Message-ID | <ivo4iv$n2t$1@smc.vnet.net> |
| In reply to | #3683 |
On 14 Jul 2011, at 11:21, Richard Fateman wrote: > On 7/13/2011 12:11 AM, Noqsi wrote: > .. > >>> see e.g. >>> <http://www.av8n.com/physics/uncertainty.htm>. >> >> > .. > Learning mathematics from a physicist is hazardous. > Learning computer science from a physicist is hazardous too. > Numbers in a computer are different from experimental measurements. > > > nevertheless, I like this article. It says, among other things, > > The technique of propagating the uncertainty from step to step > throughout the calculation is a very bad technique. It might sometimes > work for super-simple textbook problems but it is unlikely to work for > real-world problems. > Well, here is a quote from a very well known book on numerical analysis by a mathematician (Henrici, "Elements of Numerical Analysis"). > It is plain that, on a given machine and for a given problem, the local > rounding errors are not, in fact, random variables. If the same problem > is run on the same machine a number of times, there will result always the > same local rounding errors, and therefore also the same accumulated > error. We may, however, adopt a stochastic model of the propagation of > rounding error, where the local errors are treated as if they were random > variables. This stochastic model has been applied in the literature to a > number of different numerical problems and has produced results that are > in complete agreement with experimentally observed results in several > important cases. The book then describes the statistical method of error propagation of which Mathematica's approach can be regarded as a first order approximation (as pointed out by Oleksandr Rasputinov, who should not be confused with the OP of this thread so: > Clearly Rasputinov thinks that if they are not equal they should not be > Equal. Thus the answer is False. is *clearly* False. In fact Oleksander expressed something closer to the opposite view.) And if one quote is not enough, here is another, from another text on numerical analysis. (Conte, de Boor, ""Elementary Numerical Analysis). It describes 4 approaches to error analysis, interval arithmetic, significant-digit arithmetic, the "statistical approach" and backward error analysis. Here is what it says about the second and the third one: > A third approach is significant-digit arithmetic. As pointed out earlier, whenever two nearly equal machine numbers are subtracted, there is a danger that some significant digits will be lost. In significant-digit arithmetic an attempt is made to keep track of digits so lost. In one version > only the significant digits in any number are retained, all others being discarded. At the end of a computation we will thus be assured that all digits retained are significant. The main objection to this method is that some information is lost whenever digits are discarded, and that the results obtained are likely to be much too conservative. Experimentation with this technique is still going on, although the experience to date is not too promising. > > A fourth method which gives considerable promise of providing an adequate mathematical theory of round-off-error propagation is based on a statistical approach. It begins with the assumption that round-off errors are independent. This assumption is, of course, not valid, because if the same problem is run on the same machine several times, the answers will always be the same. We can, however, adopt a stochastic model of the propagation of round-off errors in which the local errors are treated as if they were random variables. Thus we can assume that the local round-off errors are either uniformly or normally distributed between their extreme values. Using statistical methods, we can then obtain the standard devia- tion, the variance of distribution, and estimates of the accumulated round- off error. The statistical approach is considered in some detail by Ham- ming [1] and Henrici [2]. The method does involve substantial analysis and additional computer time, but in the experiments conducted to date it has obtained error estimates which are in remarkable agreement with experimentally available evidence. The fundamental paper of Mathematica's error propagation is "Precise numerical computation" by Mark Sofroniou and Giulia Spaletta in The Journal of Logic and Algebraic Programming 64 (2005) 113=96134. This paper describes Mathematica's "significance arithmetic" as a first order approximation to Interval Arithmetic. It makes no mention of distributions. Oleksandr Rasputionov, in an earlier post here, interpreted "significance arithmetic" as a first order approximation to the fourth method above. I have not considered this very carefully, but it seems pretty clear that he is right, and that the two "first order" approximations are in fact isomorphic. The first order approach is, of course, justified on grounds of performance. It is perfectly "rigorous" in the same sense as any "first order" approach is (i.e. taking a linear approximation to the Taylor series of a non-linear function). It works fine under certain conditions and will produce nonsense when these conditions do not hold. The fact that significance arithmetic is "useful" needs no justification other than the fact that it is used successfully by NSolve and Reduce in achieving validated symbolic results by numerical methods which are vastly faster than purely symbolic ones. It is also useful, for users such as myself, who sometimes need fast first order error anlysis. I have lots of posts by Richard on this topic (or perhaps it was the same post lots of time, it's so hard to tell), but I have never understood what his main point is. It seems to me that is because he himself has not yet decided this, although he has been posting on this topic for over 20 years (I think). Sometimes he seems to be disparaging significance arithmetic itself. When Daniel points out how effective it is in his implementation of numerical Groebner basis, or in Adam Strzebonski's work on Reduce, he either ignores this altogether or claims that Groebner bases, etc. are themselves not "useful". On other occasions he takes on the role of the defender of the interest of the "naive user" (presumably like the OP, who however would be better described as "intentionally naive") who is going to be confused by the "quirky" nature of significance arithmetic (at low precision). In doing so he conveniently ignores that fact of the existence of thousands of "naive users" who never become confused (sometimes because they always work with machine precision numbers and only use significance arrhythmic unknowingly, e.g. when using Reduce). And moreover, for those who do find a need for some sort of error analysis he offers no alternative, except perhaps to learn backward error analysis. Except, of course, that should they do so they would no longer be "naive" and thus outside of Richard's area of concern. And in any case, anyone who needs and understands backward error analysis can use it now, and can't imagine that even Richard would claim that reducing users' options is a good thing. Finally, perhaps all that Richard is so upset about is simply Mathematica's habit of defining numbers as "fuzz balls" or "distributions". In other words, if Mathematica used a more usual "definition" of number, and used significance arithmetic for "error" propagation, that would be done by applying some separate function or turning on an option, than everything would be fine? If that is all, than it seems to me that Richard has for years been making mountains of molehills. Andrzej Kozlowski
[toc] | [prev] | [next] | [standalone]
| From | "W. Craig Carter" <ccarter@mit.edu> |
|---|---|
| Date | 2011-07-15 01:25 +0000 |
| Message-ID | <ivo4tj$n71$1@smc.vnet.net> |
| In reply to | #3683 |
On Jul 14, 2011, at 11:21 AM, Richard Fateman <fateman@cs.berkeley.edu> wrote: > Learning mathematics from a physicist is hazardous. > Learning computer science from a physicist is hazardous too. > Numbers in a computer are different from experimental measurements. I believe that I won't be the only one who objects to this hyperbole and limited world view. I've learned poor quality math from poor quality instructors---but this is not "hazardous.". I've learned what I believe to be high quality math from excellent physics and mathematical physics instructors. Every experimental measurement of a continuously varying quantity will have some imprecision. Entering that number into a computer may or may not add to the imprecision. Keeping track of the sources of imprecision is what good experimentalist does. Of course, an experiment is different from a number; but the experimentally d etermined number and its sources of imprecision in a computer is just another number on the computer. There is no difference in meaning unless the precision of the experiment exceeds that of the measurement. WCC
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Kozlowski <akoz@mimuw.edu.pl> |
|---|---|
| Date | 2011-07-15 08:12 +0000 |
| Message-ID | <ivosp9$q7l$1@smc.vnet.net> |
| In reply to | #3683 |
You are clearly confusing significant digit arithmetic, which is not
what Mathematica uses, with significance arithmetic, which is a first
order approximation to interval arithmetic or distribution based
approach. Obviously you don't read the posts you reply to and confuse
both the posters and the contents of what they post. Here is a quote
from Oleksandr Rasputionov that makes this completely clear:
Unfortunately so, given that it is severely erroneous: see e.g.
<http://www.av8n.com/physics/uncertainty.htm>. However, Mathematica's
approximation of how these uncertainties propagate is first-order, not
zeroth-order. This does not make it completely reliable, of course, but
certainly it is not almost always wrong as is the significant digits
convention. Within the bounds of its own applicability, Mathematica's
approximation is reasonable, although it would still be a mistake to apply
it to experimental uncertainty analysis given the much broader scope of
the latter.
Note the "first-order not zeroth-order". Also, do take a look at Sofroniou and Spaletta and then you may perhaps understand what "order" means and how "significance arithmetic" differs from the "significant digits" convention. Good grief, did you ever learn about the Taylor series? It must have been a long time ago, I take.
Andrzej Kozlowski
On 14 Jul 2011, at 19:55, Richard Fateman wrote:
> On 7/14/2011 6:27 AM, Andrzej Kozlowski wrote:
>> On 14 Jul 2011, at 11:21, Richard Fateman wrote:
>>
>>> On 7/13/2011 12:11 AM, Noqsi wrote:
>>> ..
>>>
>>>>> see e.g.
>>>>> <http://www.av8n.com/physics/uncertainty.htm>.
>>>>
>>> ..
>>> Learning mathematics from a physicist is hazardous.
>>> Learning computer science from a physicist is hazardous too.
>>> Numbers in a computer are different from experimental measurements.
>>>
>>>
>>> nevertheless, I like this article. It says, among other things,
>>>
>>> The technique of propagating the uncertainty from step to step
>>> throughout the calculation is a very bad technique. It might sometimes
>>> work for super-simple textbook problems but it is unlikely to work for
>>> real-world problems.
>>>
>> Well, here is a quote from a very well known book on numerical
analysis by a mathematician (Henrici, "Elements of Numerical Analysis").
>>
>>
>>> It is plain that, on a given machine and for a given problem, the local
>>> rounding errors are not, in fact, random variables. If the same problem
>>> is run on the same machine a number of times, there will result always the
>>> same local rounding errors, and therefore also the same accumulated
>>> error. We may, however, adopt a stochastic model of the propagation of
>>> rounding error, where the local errors are treated as if they were random
>>> variables. This stochastic model has been applied in the literature to a
>>> number of different numerical problems and has produced results that are
>>> in complete agreement with experimentally observed results in several
>>> important cases.
>>
>> The book then describes the statistical method of error propagation of which Mathematica's approach can be regarded as a first order approximation (as pointed out by Oleksandr Rasputinov, who should not be confused with the OP of this thread so:
>
> So are we to conclude that Henrici recommends this as a general numerical computational method?
>
> I don't see that here. I think what he is saying is that if you do some mathematics (see below), then
> you will get results consistent with what you will get if you actually run the experiment on the computer.
> This is not surprising. It is a result that says that "theoretical" numerical analysis agrees with
> "computer experiments" in arithmetic. It doesn't say Henrici recommends running a computation this way.
>
> When Henrici says "adopt a stochastic model ...." he doesn't mean to write a program. He means to
> think about each operation like this.. (I show for multiplication of numbers P and Q with errors a b resp.)
>
> P*(1+a) times Q*(1+b) P*Q *(1+a)*(1+b)* (1+c) where c is a new "error" bounded by roundoff, e.g. half unit in last place.
>
> For each operation in the calculation, make up another error letter... a,b,c,d,e,f,g...
> assume they are uncorrelated.
>
> The fact that this theoretical approach and numerically running "several important cases" is a statement
> about correlation of roundoff in these cases, not a statement of advisability of whatever for a model of
> how to write a computer system.
>
> By the way, I think that Henrici was an extremely fine theoretical numerical analyst, and a fine writer too.
>
>
>
>>> Clearly Rasputinov thinks that if they are not equal they should not be
>>> Equal. Thus the answer is False.
>> is *clearly* False. In fact Oleksander expressed something closer to the opposite view.)
> This thread is too long. I don't know at this point if you are agreeing that it is false or contradicting that "is False" is false.
>> And if one quote is not enough, here is another, from another text on numerical analysis. (Conte, de Boor, ""Elementary Numerical Analysis).
>> It describes 4 approaches to error analysis, interval arithmetic, significant-digit arithmetic, the "statistical approach" and backward error analysis. Here is what it says about the second and the third one:
> Huh, if we are talking about the second and third one, why does he say third and fourth?
> Are you using 0-based indexing and deBoor is using 1-based indexing????
>
>
>>> A third approach is significant-digit arithmetic. As pointed out earlier, whenever two nearly equal machine numbers are subtracted, there is a danger that some significant digits will be lost. In significant-digit arithmetic an attempt is made to keep track of digits so lost. In one version
>>> only the significant digits in any number are retained, all others being discarded. At the end of a computation we will thus be assured that all digits retained are significant. The main objection to this method is that some information is lost whenever digits are discarded, and that the results obtained are likely to be much too conservative. Experimentation with this technique is still going on, although the experience to date is not too promising.
>>>
> OK, so deBoor (who is retired and therefore not likely to revise the "experience to date") says this method "is not too promising".
> This sounds to me like he is not endorsing what Mathematica does.
>
>>> A fourth method which gives considerable promise of providing an adequate mathematical theory of round-off-error propagation is based on a statistical approach. It begins with the assumption that round-off errors are independent. This assumption is, of course, not valid, because if the same problem is run on the same machine several times, the answers will always be the same. We can, however, adopt a stochastic model of the propagation of round-off errors in which the local errors are treated as if they were random variables. Thus we can assume that the local round-off errors are either uniformly or normally distributed between their extreme values. Using statistical methods, we can then obtain the standard devia- tion, the variance of distribution, and estimates of the accumulated round- off error. The statistical approach is considered in some detail by Ham- ming [1] and Henrici [2]. The method does involve substantial analysis and additional computer time, but in the experiments conducted to date it has obtained error estimates which are in remarkable agreement with experimentally available evidence.
> deBoor is essentially quoting Henrici, and this statistical approach is to say that all those error terms I mentioned above, a,b,c,d,e,f,...
> can be chosen from some distribution (the way I've written it, a ,....,z .... would essentially be chosen from {-u,u} where u = 2^(-W) where the fraction part of the floating-point number is W bits. ) and you can compute the final expression as ANSWER+<somehorrendousfunctionof>(a,b,c,....).
>
> What deBoor says is that this (theoretical numerical analysis) "method" promises to provide
> a theory of round-off error propagation. He is not saying this is a practical method for scientific computing. When he uses the work "method"
> he means a mathematical method for analyzing roundoff.
>
> In any case, Mathematica does not do this. I would further argue that Mathematica makes it hard to carry out the experiments that might be done to demonstrate that this theory applied in any particular sample computation.
>>
>> The fundamental paper of Mathematica's error propagation is "Precise numerical computation" by Mark Sofroniou and Giulia Spaletta in The Journal of Logic and Algebraic Programming 64 (2005) 113=96134. This paper describes Mathematica's "significance arithmetic" as a first order approximation to Interval Arithmetic. It makes no mention of distributions.
> I thought I read this paper in some Mathematica documentation or conference proceedings.
>> Oleksandr Rasputionov, in an earlier post here, interpreted "significance arithmetic" as a first order approximation to the fourth method above.
> Huh? First of all, the original poster was slawek. Rasputinov seems to think that Mathematica numbers are like Intervals (basically a good intuition until you think about equality.) and refers to them as distributions. This is not deBoor's 4th "method" of theoretically analyzing round-off.
> In fact it is deBoor's 1st method, interval arithmetic. This has the advantage of being maybe 4 to 8 times slower than regular arithmetic, and also has a huge literature (see "Reliable Computation") describing variations, advantages, disadvantages, etc.
>
>> I have not considered this very carefully, but it seems pretty clear that he is right, and that the two "first order" approximations are in fact isomorphic.
> Uh, this is unclear, unless you mean that Mathematica's number system is essentially interval arithmetic, but with a confusing front end.
>> The first order approach is, of course, justified on grounds of performance. It is perfectly "rigorous" in the same sense as any "first order" approach is (i.e. taking a linear approximation to the Taylor series of a non-linear function). It works fine under certain conditions and will produce nonsense when these conditions do not hold.
>>
>> The fact that significance arithmetic is "useful" needs no justification other than the fact that it is used successfully by NSolve and Reduce in achieving validated symbolic results by numerical methods which are vastly faster than purely symbolic ones.
> Really?
>
> 1. This does not mean that other methods, e.g. validated methods for accurately evaluating polynomials (etc) NOT based on significance arithmetic would not be faster and better. DanL claims it is used and useful there, so that's nice. BUT..
>
> 2. This does not mean that this arithmetic should be used by default by user arithmetic.
>> It is also useful, for users such as myself, who sometimes need fast first order error anlysis.
> OK, If you find it useful yourself, fine. I daresay you are not a typical user.
>
>> I have lots of posts by Richard on this topic (or perhaps it was the same post lots of time, it's so hard to tell), but I have never understood what his main point is.
>
> Main points: Mathematica's number system is non-standard, peculiar, hard to explain, capable of returning mysterious non-answers without indications of error to innocent users, a bad foundation for building higher-level functionality.
>
> I have other criticisms of Mathematica, but I think that the sentence above is enough for you to process today.
>
>> It seems to me that is because he himself has not yet decided this, although he has been posting on this topic for over 20 years (I think).
>
>> Sometimes he seems to be disparaging significance arithmetic itself.
> I think deBoor did that.
>
>> When Daniel points out how effective it is in his implementation of numerical Groebner basis, or in Adam Strzebonski's work on Reduce, he either ignores this altogether or claims that Groebner bases, etc. are themselves not "useful".
> I think Reduce is a very nice program when it works. If I am not mistaken, all work on numerical Groebner basis should be reducible to the evaluation of polynomials, for which there are faster and more accurate methods available not using significance arithmetic. On the other hand, I might be mischaracterizing DanL work, since I admit to not having studied it.
>
>
>> On other occasions he takes on the role of the defender of the interest of the "naive user" (presumably like the OP, who however would be better described as "intentionally naive") who is going to be confused by the "quirky" nature of significance arithmetic (at low precision).
> No, I don't think that slawek was a "troll". I think he was genuinely confused, as might anyone be who has some prior computer arithmetic exposure and for the first time encounters a system with exact rational arithmetic.
>> In doing so he conveniently ignores that fact of the existence of thousands of "naive users" who never become confused (sometimes because they always work with machine precision numbers and only use significance arrhythmic unknowingly, e.g. when using Reduce).
> Most naive users don't tread near the dangerous spots. Some naive users never notice that their answers are nonsense.
> Every so often we get a naive user who DOES notice, and he/she sends email to this newsgroup.
>> And moreover, for those who do find a need for some sort of error analysis he offers no alternative, except perhaps to learn backward error analysis.
> Actually, there's a whole bunch of libraries of methods with error estimates for common computations, where backward error analysis or some other method was used to provide extra information.
>
>> Except, of course, that should they do so they would no longer be "naive" and thus outside of Richard's area of concern.
> They would probably not be writing in Mathematica.
>> And in any case, anyone who needs and understands backward error analysis can use it now, and can't imagine that even Richard would claim that reducing users' options is a good thing.
> I have no problem with Mathematica providing as an option, some other arithmetic. It is WRI that has made it rather hard for the user to
> figure out how to "use the arithmetic of the rest of the world".
>
>> Finally, perhaps all that Richard is so upset about is simply Mathematica's habit of defining numbers as "fuzz balls" or "distributions".
> I'm not sure that "upset" is the right term. After all, I don't have to use Mathematica for numerical computation. And I rarely do.
>> In other words, if Mathematica used a more usual "definition" of number, and used significance arithmetic for "error" propagation, that would be done by applying some separate function or turning on an option, than everything would be fine?
> Actually, that's pretty close to correct.
>> If that is all, than it seems to me that Richard has for years been making mountains of molehills.
> So why are you (and WRI) so opposed to this notion? Note that it would also have to affect other parts of the system including of course,
> Equal and friends.
>
>
>>
>> Andrzej Kozlowski
>>
>>
>>
>>
>
>
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Kozlowski <akoz@mimuw.edu.pl> |
|---|---|
| Date | 2011-07-16 09:45 +0000 |
| Message-ID | <ivrmjo$85s$1@smc.vnet.net> |
| In reply to | #3683 |
On 15 Jul 2011, at 16:49, Richard Fateman wrote:
> On 7/14/2011 11:55 PM, Andrzej Kozlowski wrote:
>
> Gee, Andrzej, all I can think of is the childhood playground chant (I don't know where you might have been a child, so this may not
> bring back memories...)
>
> "I'm rubber, you're glue; everything You say sticks to YOU!"
Yes, I can also think of a few playground chants that would apply nicely, but unfortunately you would not understand them. So let's have something English instead, like "Sticks and stones...".
Now, I really have no time or patience to go over all your misrepresentations in detail. But let me point out (or remind you perhaps) that the already mentioned paper of Sofroniou and Spaletta makes the following remark:
> The choice of significance arithmetic as the default in Mathematica has not been universally favorable (see for example [9]) although some of these criticisms relate to early deficiencies in the implementation.
Reference [9] is, of course:
[9] R.J. Fateman, A review of Mathematica, J. Symbolic Comput. 13 (1992) 545=96579.
In fact the "early" version was much more like "significant digits convention", while the current version is quite a lot more sophisticated, as described in the article. Somehow you don't seem to have noticed it since that is the "early version" that you always seem to be describing. (Significant digits is something that used to be taught in primary school, if I recall correctly).
As for difference between theoretical analysis of the propagation of round-off error and practical scientific computations, I am well aware of it, but was it not you who gleefully quoted the statement:
The technique of propagating the uncertainty from step to step
throughout the calculation is a very bad technique. It might sometimes
work for super-simple textbook problems but it is unlikely to work for
real-world problems.
So if agree with this (as you seem to), are you implying that the entire chapter 16 of Henrici's book is concerned with something that only applies to "super-simple text book problems"?
The point is, of course, that you never make it clearly what exactly you are talking about probably because you find it convenient for rhetorical purposes (90% of these discussions are really just rhetorics).
I should add that I myself long ago and more then once wrote on this forum that I do not think Mathematica's "approximate numbers" are a good model for empirical errors, but they are very good tools for solving certain purely mathematical problems. Often it can be accomplished in 100% provably correct way (barring bugs of course).
As for things like numerical Groebner basis etc, you keep arguing that it probably can be done in some other way (without significance arithmetic) and in a certain, rather trivial, sense you undoubtedly right. But the fact is, as Daniel has pointed out, that, in practice, nobody seems to have done it in another way, and not for want of trying. So again here we have the distinction between "theory" and "practical application" but except that this time the shoe is on the other foot.
Andrzej
>> You are clearly confusing significant digit arithmetic, which is not what Mathematica uses, with significance arithmetic, which is a first order approximation to interval arithmetic or distribution based approach.
>
> I view significant digit arithmetic, if by digit you allow binary digit or "bit", to be a crude version of interval arithmetic where the endpoints of the interval are not numbers of (essentially) arbitrary precision, but where the endpoints must be represented by the central point plus or minus some power of two. It is an approximation to interval arithmetic. I think it is a reasonable idea to restrict the =
number of digits carried in the value of the interval endpoints (making =
them "cruder" than you might really know) in the interests of efficiency =
in time and space. Thus using properly rounded machine floats is =
appropriate, at least when the range is suitable and the difference =
between upper and lower bounds is large. Using just one bit makes the =
width of the interval grow faster than using more bits...
>
> Since you do not understand the context of the paragraphs you have =
quoted, nor do you seem to acknowledge the difference between =
theoretical analysis of the propagation of round-off error in =
well-chosen standard examples, and somehow running interval arithmetic =
all the time, it is hard to know how to educate you. How comforting is =
your proud quote, below? Mathematica's arithmetic is "not ... =
completely reliable". Rasputinov says,
> further, "it is not almost always wrong". I'm not sure why he says =
the significant digit convention is almost always wrong unless he means =
almost always too pessimistic. I'm also not aware of why Rasputinov's =
opinion should sway the discussion especially (sorry Oleksandr).
>
>
> My point remains:
> WRI could have a much more direct notion of number, and equality, that =
would make it easy to implement my choice of arithmetic or theirs or =
yours.
> They didn't. The default is not completely reliable. People write to =
this newsgroup, periodically, saying Huh? what's going on? I found a =
bug!
>
> As for the experimental and computational notions of (im)precision, I =
think there is an issue of using the same words with different meanings. =
Similar but unfortunately different. Precision of a floating point =
number F is simply the number of bits in the fraction. If you impute =
some uncertainty to F, you can store that in another piece of data D in =
the computer. If you want to assert that F and D together represent a =
distribution of a certain kind you can also compute with that.
>
> RJF
>
>> Obviously you don't read the posts you reply to and confuse both the =
posters and the contents of what they post. Here is a quote from =
Oleksandr Rasputionov that makes this completely clear:
>>
>>
>> Unfortunately so, given that it is severely erroneous: see e.g.
>> <http://www.av8n.com/physics/uncertainty.htm>. However, Mathematica's
>> approximation of how these uncertainties propagate is first-order, =
not
>> zeroth-order. This does not make it completely reliable, of course, =
but
>> certainly it is not almost always wrong as is the significant digits
>> convention. Within the bounds of its own applicability, Mathematica's
>> approximation is reasonable, although it would still be a mistake to =
apply
>> it to experimental uncertainty analysis given the much broader scope =
of
>> the latter.
>>
>> Note the "first-order not zeroth-order". Also, do take a look at =
Sofroniou and Spaletta and then you may perhaps understand what "order" =
means and how "significance arithmetic" differs from the "significant =
digits" convention. Good grief, did you ever learn about the Taylor =
series? It must have been a long time ago, I take.
>>
>>
>> Andrzej Kozlowski
>>
>>
>> On 14 Jul 2011, at 19:55, Richard Fateman wrote:
>>
>>> On 7/14/2011 6:27 AM, Andrzej Kozlowski wrote:
>>>> On 14 Jul 2011, at 11:21, Richard Fateman wrote:
>>>>
>>>>> On 7/13/2011 12:11 AM, Noqsi wrote:
>>>>> ..
>>>>>
>>>>>>> see e.g.
>>>>>>> <http://www.av8n.com/physics/uncertainty.htm>.
>>>>> ..
>>>>> Learning mathematics from a physicist is hazardous.
>>>>> Learning computer science from a physicist is hazardous too.
>>>>> Numbers in a computer are different from experimental =
measurements.
>>>>>
>>>>>
>>>>> nevertheless, I like this article. It says, among other things,
>>>>>
>>>>> The technique of propagating the uncertainty from step to step
>>>>> throughout the calculation is a very bad technique. It might =
sometimes
>>>>> work for super-simple =84textbook=89 problems but it is unlikely =
to work for
>>>>> real-world problems.
>>>>>
>>>> Well, here is a quote from a very well known book on numerical =
analysis by a mathematician (Henrici, "Elements of Numerical Analysis").
>>>>
>>>>
>>>>> It is plain that, on a given machine and for a given problem, the =
local
>>>>> rounding errors are not, in fact, random variables. If the same =
problem
>>>>> is run on the same machine a number of times, there will result =
always the
>>>>> same local rounding errors, and therefore also the same =
accumulated
>>>>> error. We may, however, adopt a stochastic model of the =
propagation of
>>>>> rounding error, where the local errors are treated as if they were =
random
>>>>> variables. This stochastic model has been applied in the =
literature to a
>>>>> number of different numerical problems and has produced results =
that are
>>>>> in complete agreement with experimentally observed results in =
several
>>>>> important cases.
>>>> The book then describes the statistical method of error propagation =
of which Mathematica's approach can be regarded as a first order =
approximation (as pointed out by Oleksandr Rasputinov, who should not be =
confused with the OP of this thread so:
>>> So are we to conclude that Henrici recommends this as a general =
numerical computational method?
>>>
>>> I don't see that here. I think what he is saying is that if you do =
some mathematics (see below), then
>>> you will get results consistent with what you will get if you =
actually run the experiment on the computer.
>>> This is not surprising. It is a result that says that "theoretical" =
numerical analysis agrees with
>>> "computer experiments" in arithmetic. It doesn't say Henrici =
recommends running a computation this way.
>>>
>>> When Henrici says "adopt a stochastic model ...." he doesn't mean =
to write a program. He means to
>>> think about each operation like this.. (I show for multiplication =
of numbers P and Q with errors a b resp.)
>>>
>>> P*(1+a) times Q*(1+b) = P*Q *(1+a)*(1+b)* (1+c) where c is a =
new "error" bounded by roundoff, e.g. half unit in last place.
>>>
>>> For each operation in the calculation, make up another error =
letter... a,b,c,d,e,f,g...
>>> assume they are uncorrelated.
>>>
>>> The fact that this theoretical approach and numerically running =
"several important cases" is a statement
>>> about correlation of roundoff in these cases, not a statement of =
advisability of whatever for a model of
>>> how to write a computer system.
>>>
>>> By the way, I think that Henrici was an extremely fine theoretical =
numerical analyst, and a fine writer too.
>>>
>>>
>>>
>>>>> Clearly Rasputinov thinks that if they are not equal they should =
not be
>>>>> Equal. Thus the answer is False.
>>>> is *clearly* False. In fact Oleksander expressed something closer =
to the opposite view.)
>>> This thread is too long. I don't know at this point if you are =
agreeing that it is false or contradicting that "is False" is false.
>>>> And if one quote is not enough, here is another, from another text =
on numerical analysis. (Conte, de Boor, ""Elementary Numerical =
Analysis).
>>>> It describes 4 approaches to error analysis, interval arithmetic, =
significant-digit arithmetic, the "statistical approach" and backward =
error analysis. Here is what it says about the second and the third one:
>>> Huh, if we are talking about the second and third one, why does he =
say third and fourth?
>>> Are you using 0-based indexing and deBoor is using 1-based =
indexing????
>>>
>>>
>>>>> A third approach is significant-digit arithmetic. As pointed out =
earlier, whenever two nearly equal machine numbers are subtracted, there =
is a danger that some significant digits will be lost. In =
significant-digit arithmetic an attempt is made to keep track of digits =
so lost. In one version
>>>>> only the significant digits in any number are retained, all others =
being discarded. At the end of a computation we will thus be assured =
that all digits retained are significant. The main objection to this =
method is that some information is lost whenever digits are discarded, =
and that the results obtained are likely to be much too conservative. =
Experimentation with this technique is still going on, although the =
experience to date is not too promising.
>>>>>
>>> OK, so deBoor (who is retired and therefore not likely to revise the =
"experience to date") says this method "is not too promising".
>>> This sounds to me like he is not endorsing what Mathematica does.
>>>
>>>>> A fourth method which gives considerable promise of providing an =
adequate mathematical theory of round-off-error propagation is based on =
a statistical approach. It begins with the assumption that round-off =
errors are independent. This assumption is, of course, not valid, =
because if the same problem is run on the same machine several times, =
the answers will always be the same. We can, however, adopt a stochastic =
model of the propagation of round-off errors in which the local errors =
are treated as if they were random variables. Thus we can assume that =
the local round-off errors are either uniformly or normally distributed =
between their extreme values. Using statistical methods, we can then =
obtain the standard devia- tion, the variance of distribution, and =
estimates of the accumulated round- off error. The statistical approach =
is considered in some detail by Ham- ming [1] and Henrici [2]. The =
method does involve substantial analysis and additional computer time, =
but in the experiments conducted to date it has obtained error estimates =
which are in remarkable agreement with experimentally available =
evidence.
>>> deBoor is essentially quoting Henrici, and this statistical approach =
is to say that all those error terms I mentioned above, a,b,c,d,e,f,...
>>> can be chosen from some distribution (the way I've written it, a =
,....,z .... would essentially be chosen from {-u,u} where u = =
2^(-W) where the fraction part of the floating-point number is W bits. =
) and you can compute the final expression as =
ANSWER+<somehorrendousfunctionof>(a,b,c,....).
>>>
>>> What deBoor says is that this (theoretical numerical analysis) =
"method" promises to provide
>>> a theory of round-off error propagation. He is not saying this is =
a practical method for scientific computing. When he uses the work =
"method"
>>> he means a mathematical method for analyzing roundoff.
>>>
>>> In any case, Mathematica does not do this. I would further argue =
that Mathematica makes it hard to carry out the experiments that might =
be done to demonstrate that this theory applied in any particular =
sample computation.
>>>> The fundamental paper of Mathematica's error propagation is =
"Precise numerical computation" by Mark Sofroniou and Giulia Spaletta =
in The Journal of Logic and Algebraic Programming 64 (2005) 113=96134. =
This paper describes Mathematica's "significance arithmetic" as a first =
order approximation to Interval Arithmetic. It makes no mention of =
distributions.
>>> I thought I read this paper in some Mathematica documentation or =
conference proceedings.
>>>> Oleksandr Rasputionov, in an earlier post here, interpreted =
"significance arithmetic" as a first order approximation to the fourth =
method above.
>>> Huh? First of all, the original poster was slawek. Rasputinov seems =
to think that Mathematica numbers are like Intervals (basically a good =
intuition until you think about equality.) and refers to them as =
distributions. This is not deBoor's 4th "method" of theoretically =
analyzing round-off.
>>> In fact it is deBoor's 1st method, interval arithmetic. This has =
the advantage of being maybe 4 to 8 times slower than regular =
arithmetic, and also has a huge literature (see "Reliable Computation") =
describing variations, advantages, disadvantages, etc.
>>>
>>>> I have not considered this very carefully, but it seems pretty =
clear that he is right, and that the two "first order" approximations =
are in fact isomorphic.
>>> Uh, this is unclear, unless you mean that Mathematica's number =
system is essentially interval arithmetic, but with a confusing front =
end.
>>>> The first order approach is, of course, justified on grounds of =
performance. It is perfectly "rigorous" in the same sense as any "first =
order" approach is (i.e. taking a linear approximation to the Taylor =
series of a non-linear function). It works fine under certain conditions =
and will produce nonsense when these conditions do not hold.
>>>>
>>>> The fact that significance arithmetic is "useful" needs no =
justification other than the fact that it is used successfully by NSolve =
and Reduce in achieving validated symbolic results by numerical methods =
which are vastly faster than purely symbolic ones.
>>> Really?
>>>
>>> 1. This does not mean that other methods, e.g. validated methods for =
accurately evaluating polynomials (etc) NOT based on significance =
arithmetic would not be faster and better. DanL claims it is used and =
useful there, so that's nice. BUT..
>>>
>>> 2. This does not mean that this arithmetic should be used by default =
by user arithmetic.
>>>> It is also useful, for users such as myself, who sometimes need =
fast first order error anlysis.
>>> OK, If you find it useful yourself, fine. I daresay you are not a =
typical user.
>>>
>>>> I have lots of posts by Richard on this topic (or perhaps it was =
the same post lots of time, it's so hard to tell), but I have never =
understood what his main point is.
>>> Main points: Mathematica's number system is non-standard, peculiar, =
hard to explain, capable of returning mysterious non-answers without =
indications of error to innocent users, a bad foundation for building =
higher-level functionality.
>>>
>>> I have other criticisms of Mathematica, but I think that the =
sentence above is enough for you to process today.
>>>
>>>> It seems to me that is because he himself has not yet decided =
this, although he has been posting on this topic for over 20 years (I =
think).
>>>> Sometimes he seems to be disparaging significance arithmetic =
itself.
>>> I think deBoor did that.
>>>
>>>> When Daniel points out how effective it is in his implementation =
of numerical Groebner basis, or in Adam Strzebonski's work on Reduce, he =
either ignores this altogether or claims that Groebner bases, etc. are =
themselves not "useful".
>>> I think Reduce is a very nice program when it works. If I am not =
mistaken, all work on numerical Groebner basis should be reducible to =
the evaluation of polynomials, for which there are faster and more =
accurate methods available not using significance arithmetic. On the =
other hand, I might be mischaracterizing DanL work, since I admit to not =
having studied it.
>>>
>>>
>>>> On other occasions he takes on the role of the defender of the =
interest of the "naive user" (presumably like the OP, who however would =
be better described as "intentionally naive") who is going to be =
confused by the "quirky" nature of significance arithmetic (at low =
precision).
>>> No, I don't think that slawek was a "troll". I think he was =
genuinely confused, as might anyone be who has some prior computer =
arithmetic exposure and for the first time encounters a system with =
exact rational arithmetic.
>>>> In doing so he conveniently ignores that fact of the existence of =
thousands of "naive users" who never become confused (sometimes because =
they always work with machine precision numbers and only use =
significance arrhythmic unknowingly, e.g. when using Reduce).
>>> Most naive users don't tread near the dangerous spots. Some naive =
users never notice that their answers are nonsense.
>>> Every so often we get a naive user who DOES notice, and he/she sends =
email to this newsgroup.
>>>> And moreover, for those who do find a need for some sort of error =
analysis he offers no alternative, except perhaps to learn backward =
error analysis.
>>> Actually, there's a whole bunch of libraries of methods with error =
estimates for common computations, where backward error analysis or some =
other method was used to provide extra information.
>>>
>>>> Except, of course, that should they do so they would no longer be =
"naive" and thus outside of Richard's area of concern.
>>> They would probably not be writing in Mathematica.
>>>> And in any case, anyone who needs and understands backward error =
analysis can use it now, and can't imagine that even Richard would claim =
that reducing users' options is a good thing.
>>> I have no problem with Mathematica providing as an option, some =
other arithmetic. It is WRI that has made it rather hard for the user =
to
>>> figure out how to "use the arithmetic of the rest of the world".
>>>
>>>> Finally, perhaps all that Richard is so upset about is simply =
Mathematica's habit of defining numbers as "fuzz balls" or =
"distributions".
>>> I'm not sure that "upset" is the right term. After all, I don't =
have to use Mathematica for numerical computation. And I rarely do.
>>>> In other words, if Mathematica used a more usual "definition" of =
number, and used significance arithmetic for "error" propagation, that =
would be done by applying some separate function or turning on an =
option, than everything would be fine?
>>> Actually, that's pretty close to correct.
>>>> If that is all, than it seems to me that Richard has for years been =
making mountains of molehills.
>>> So why are you (and WRI) so opposed to this notion? Note that it =
would also have to affect other parts of the system including of course,
>>> Equal and friends.
>>>
>>>
>>>> Andrzej Kozlowski
>>>>
>>>>
>>>>
>>>>
>>>
>
>
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | comp.soft-sys.math.mathematica
csiph-web