+ 1
What "Machine epsilon" means
Hi, im doing a project to school and i was given this topic which i dont understand much because there are no text a about on internet in my language. Can u please give me a hand?
2 Respostas
+ 5
In English...I hope there is enough interactivity here to help you see.
~ There are two definitions for epsilon, both related to how computers estimate floating point numbers.
*** PART 1 ***
First, please know that computers represent floating point numbers _inexactly_
https://code.sololearn.com/WYCTOysAGnLv/?ref=app
~ Try 0.1 in the "Expression":
The blue text shows: 0.100000000000000005551
It is the closest approximation the computer has to 0.10000...
It is not exact, but that is probably okay.
~ Try 0.2. It is also _inexact_
~ Compare the endings of 0.1 and 0.2:
0.100...05551
0.200...11102
~ If we add those numbers, we expect 0.300....16653:
0.300...44409 (?!)
~ Now type 0.3:
0.29999999... (?!)
This is why 0.1+0.2 is often NOT 0.3!
Floating point decimals are estimated.
See part 2.
+ 4
*** PART 2 ***
Set "expression" to 1. Press the [Next] button.
Three things change:
* Expression: 1.0000000000000002
* Blue text: 1.00000000000000022204
* Epsilon: 2.22044604925031308085e-16
Notice, the end of the blue text looks exactly like the start of epsilon.
Definition 1 (ISO C standard):
Epsilon is the relative error when trying to represent a floating point number.
or: "the difference between 1 and the next nearest number representable as a machine number."
Proof: No number between 1.000 and the next number can be represented:
1.0000000000000001 -> rounds DOWN : 1.000...000
1.0000000000000002 -> rounds UP : 1.000...22204
The gap is ~epsilon (#1).
Definition 2 (SCILAB):
Epsilon is the number that you add to 1, which results in NOT 1.
It is the point at which the computer rounds UP or DOWN (halfway).
1 + 1.11022302462515666368314810e-16 == 1.000...00000
1 + 1.11022302462515666368314811e-16 == 1.000...22204
The halfway point is ~epsilon (#2).