Limitations of floating point arithmetic, again. Particularly with matrix and vector operations, you are not guaranteed any particular order of operations in MATLAB. If you want a particular order then you would have to manually write the expression using parentheses. So in general, relatively "small" values can get swamped by relatively "large" values in a computation and lose significance. When you subtract two relatively "large" values the relatively "small" value significance may not be there to recover, and you end up with a lot of garbage bits. I could go through your calculation in detail to explain it, but I think I will leave that up to you instead. Just write out the expression in detail and use the num2strexact utility to examine each intermediate result and then you should see what is going on with the lost precision.
Best Answer