Element wise multiplication .* rounding problem
显示 更早的评论
Hello,
My name is Robin and I am currently using Matlab to compute some calculations.
But I have an issue. Let's take :
M = 564;
P = sin(5);
disp((M.*10.*P) - (M.*(10.*P)));
The result should be 0. Instead I get :
ans = 9.0949e-13
I understand the gap is very small, but I think Matlab rounding algorithm should finally provide 0.
Can you help me ?
采纳的回答
更多回答(2 个)
madhan ravi
2019-2-21
Second John D’Erricos answer as a workaround if you have symbolic math toolbox:
P=sym(sin(5)); % just alter your line to this
Robin L.
2019-2-21
1 个评论
John D'Errico
2019-2-21
Please don't add an answer just ot make a comment.
But, yes, the associative law has problems in floating point arithmetic. Both expressions are valid, yet they can yield different results in the least significant bits.
类别
在 帮助中心 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!