Strange warning regarding accuracy of computation in Matlab ?
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Benjamin Kraus
2023-12-31
编辑:Benjamin Kraus
2023-12-31
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 个评论
更多回答(1 个)
Hassaan
2023-12-31
编辑:Hassaan
2023-12-31
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!