Send Close Add comments: (status displays here)
Got it!  This site "robinsnyder.com" uses cookies. You consent to this by clicking on "Got it!" or by continuing to use this website.  Note: This appears on each machine/browser from which this site is accessed.
Exact math approximates reality
by RS  admin@robinsnyder.com : 1024 x 640


1. Exact math approximates reality

2. Exact math approximates reality
Missing blockA common programming fallacy taught to beginning students is to use floating point variables when it is not appropriate.

An exact mathematical solution involving real numbers (which are not really real, they are assumed to be real) is only an approximation.

Any floating point number (e.g., that represent real numbers) has an inherent rounding error.
Note: We are here ignoring discrete mathematics that involve only integers.

3. Slide rules
USMA slide ruleA slide rule (not slide ruler) was once used to do manual computations.

Whenever a slide rule is used, it is very evident that any computation involving real numbers is an approximation.

4. Mathematics and computation
What are the values of the following (using a computer program)?
1/10 1/10 + 1/10 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10 + 1/10

Note: These are rational numbers, not irrational like √2 or transcendental numbers like π or e.

5. Mathematical point of view
Here is the mathematics result expressed as real (rational) numbers.
1/10 = 0.1 2/10 = 0.2 3/10 = 0.3 4/10 = 0.4 5/10 = 0.5 6/10 = 0.6 7/10 = 0.7 8/10 = 0.8 9/10 = 0.9 10/10 = 1.0


6. Lua program
Here is a simple Lua program to add values of 1/10 as 0.1.

The 17 places in the output is important to being exactly precise.

7. Program output
Here is the result from a computation point of view as the output of the above program.

Even when symbolic math can solve a problem, any attempt to compute real answers involves the same approximations.

8. Error accumulation
The difference is small at each step but the difference can add up to a significant amount over many iterations.

Note: One can fix this specific instance by using a fixed decimal notation, but that only works, in base 10, for numbers and increments that are multiples of 2 or 5, the prime factors of 10.

9. Chaos theory
Rounding errors need to be addressed in fields of computer science such as numerical analysis.

10. Chaos theory
Chaos book coverJames Gleick (American author and historical scientist) has written a very interesting book on the field known as "chaos theory" - a sensitive dependency on initial conditions. The field was accidentally discovered by the young French mathematician Henri Poincaré while attempting to find an exact mathematical solution for the three body problem.

Gleick, J. (1988). Chaos: making a new science. New York: Penguin Books..

Information sign More: James Gleick

11. Two and three body problem
Sun, Earth and MoonExact mathematics can solve the (idealized) two body problem such as the sun and earth or the earth and moon.

An exact solution for the (idealized) three body problem such as the sun, earth and moon has not been found.

Accurate weather prediction requires solving the (idealized) almost infinite particle system.

Information sign More: Two and three body problem

12. Quantum computing in brief
Bit and qubitQuantum computing:

Dunbar number [exponential speedup not clearly defined, like entanglement]qc-11

13. Quantum computing analogies
Bit and qubitQuantum computing analogies: pick the best way

14. Dollars and cents
Programming fallacyFallacy: Dollars and cents should be represented using floating point variables.
The general rule, sometimes taught, that if the number has a decimal point, it should be represented as a floating point variable does not hold for dollars and cents. Rule: Convert dollars and cents to cents, do the arithmetic, then convert back into dollars and cents (for display purposes). This distinction needs to be carefully handled in languages such as JavaScript and Lua which do not have integer variables.

The approximation issue involves floating point division so every such division needs to result in an integer value.

15. Numbers
Programming fallacyFallacy: Social security numbers and phone numbers should be represented using integers.
Phone sign - blueHow should social security numbers and phone numbers be represented? They appear to be numbers. That is, integers.

Are you ever going to add, subtract, multiply or divide these values? If not, use text. Ask your self the following question. If not, represent them using text. Note:

16. End of page

by RS  admin@robinsnyder.com : 1024 x 640