Accuracy and error analysis (was Re: [Maxima] primes)
Subject: Accuracy and error analysis (was Re: [Maxima] primes)
From: C Y
Date: Mon, 2 May 2005 07:29:59 -0700 (PDT)
This actually raises an issue I've been wondering about for a while,
and was highlighted by the observed difference in the float conversion
of a units expression vs. it's unconverted form. It's unavoidable that
numerical calculations have some uncertainty associated with them.
There are also non-numerical related uncertainties in non-integer
conversions between units and the values of physical constants. One of
the longer term ideas I have for units and physics pacakges in general
is a way to do intelligent error propagation, incorporating user
defined uncertainties and if possible the uncertainty in Maxima's
calculations as well. The problem is I'm not quite sure how to
approach tracking the uncertainty introduced into an expression by,
say, the float(%) command. Is there some systematic way this can be
handled (e.g. if maxima's precision limits are set to x, then each
numerical conversion will increase the uncertainty of the number
converted by y)? I guess the ideal thing would be for all variables in
Maxima to be treated as objects, with one of the available pieces of
information being an uncertainty that reflects the history of the value
within Maxima, but I have no idea how practical that is. Numbers could
be handled by rounding them at the last significant figure. Something
like (I need to look up the exact rules for all of this, been a while):
(%i1) 1.43523*a1/(x*%pi);
1.43523 a1
(%o1) ----------
%pi x
(%i2) uncertainty(part(%o1,1,1)); (1.43523)
(%o2) 0.000005
(%i3) uncertainty(part(%o1,1,2)); (a1)
(%o3) exact
(%i4) uncertainty(part(%o1,2,1)); (%pi)
(%o4) exact
(%i4) uncertainty(part(%o1,2,2)); (x)
(%o4) exact
(%i5) a1 : 2.5;
(%o5) 2.5
(%i6) uncertainty(a1);
(%o6) 0.05
(%i7) uncertainty(part(%o1,1,2)); (a1)
(%o7) 0.05
(%i8) uncertainty(part(%o1,1));
(%o8) errorpropagate(1.443523*a1) \\in realisty
this would return the actual number;
(%i9) uncertainty(%o1);
(%o9) some number, assuming %pi exact
(%i10) uncertainty(float(%o1));
(%o10) some number, including error
associated w/ numerical evaluation of %pi
Does this make any sense? Would it be workable?
CY
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com