diag problem while substracting

1 view (last 30 days)
my rho total is a square matrix, and when I do that:
diag(rho_total-1)
it gives me
1.0e-15 *
0.444089209850063
0.444089209850063
-0.111022302462516
-0.111022302462516
-0.222044604925031
0.666133814775094
why is that e-15 there?

Accepted Answer

James Tursa
James Tursa on 21 Dec 2017
Edited: James Tursa on 21 Dec 2017
It's just a display format thing. It means each number shown is actually multiplied by 1.0e-15
E.g.,
>> [1 2 3]
ans =
1 2 3
>> [1e-16 2e-16 3e-16]
ans =
1.0e-015 *
0.1000 0.2000 0.3000
So the diagonal numbers of rho_total you show in your post were actually pretty close to 1, since the difference between them and 1 is close to eps(1).
  1 Comment
James Tursa
James Tursa on 21 Dec 2017
Edited: James Tursa on 21 Dec 2017
Consider this example:
>> [1 1;1 1]
ans =
1 1
1 1
>> [1-eps 1;1 1+eps]
ans =
1.0000 1.0000
1.0000 1.0000
>> diag([1-eps 1;1 1+eps] - 1)
ans =
1.0e-015 *
-0.2220
0.2220
E.g., you can get those trailing .0000 digits printed when the numbers are not exactly integers. Subtracting the integer reveals the difference between what is really there and what is printed to the screen. In your case, whatever floating point calculations were done to produce rho_total did not result in exact 1's on the diagonal. They were very close (relative to 1), but not exactly 1.

Sign in to comment.

More Answers (0)

Categories

Find more on Matrices and Arrays 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!