Strange warning regarding accuracy of computation in Matlab ?
5 views (last 30 days)
Show older comments
Dear Matlab community,
Currently, I have been running into some accuracy problem regarding my Matlab program. Particulalrly I receive this warning:
Warning: Result may not be exact. Coefficient has a maximum relative error of 2.2204e-16, corresponding to absolute error 2
I do not understand this warning, between relative error and absolute error 2 which one is more dangeroud ?
Please help me clarify my understanding about what is happening !
Thank you for your enthusiasm
0 Comments
Accepted Answer
Benjamin Kraus
on 31 Dec 2023
Edited: Benjamin Kraus
on 31 Dec 2023
Consider these two numbers: 100 and 101
If 100 is the "correct" answer, then 101 has an absolute error of 1 and a relative error of 0.01.
Now consider 1000000 (one million) and 1000001 (one million one).
If 1000000 is the "correct" answer, then 1000001 has an absolute error of 1 and a relative error of 0.000001. As your numbers get larger, the absolute error is probably less relevant.
Now consider 0.0001 and 0.00011.
If 0.0001 is the "correct" answer, then 0.00011 has an absolute error of 0.00001 and a relative error of 0.1 (or 10%). The relative error captures the magnitude of the values better.
Which is more dangerous depends a lot on the problem you are analyzing, so it would be hard to provide much more help without knowing more about what you are doing in MATLAB.
0 Comments
More Answers (1)
Hassaan
on 31 Dec 2023
Edited: Hassaan
on 31 Dec 2023
The warning from Matlab indicates a small relative error in your computation, suggesting you are at the limit of precision for double-precision floating-point numbers. Relative error is significant when comparing errors in numbers of varying magnitudes, while absolute error matters when values are within a similar range. The relative error of 2.2204e-16 is close to the machine epsilon, which is the smallest distinguishable difference from 1.0 in double-precision. This is usually not a cause for concern unless your specific application requires higher precision, in which case you might need to look into more numerically stable algorithms.
- Relative Error: It is more informative when the values you are dealing with span multiple orders of magnitude. A relative error of 2.2204e-16 is typically considered very small and would indicate high accuracy in most engineering and scientific computations since it is close to the precision limit of double-precision floating-point numbers in computers.
- Absolute Error: It is more useful when the values are expected to be in a similar range. An absolute error of 2 might be significant or negligible depending on the expected magnitude of your values.
------------------------------------------------------------------------------------------------------------------------------------------------
If you find the solution helpful and it resolves your issue, it would be greatly appreciated if you could accept the answer. Also, leaving an upvote and a comment are also wonderful ways to provide feedback.
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!