diag problem while substracting
1 回表示 (過去 30 日間)
古いコメントを表示
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?
0 件のコメント
採用された回答
James Tursa
2017 年 12 月 21 日
編集済み: James Tursa
2017 年 12 月 21 日
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 件のコメント
James Tursa
2017 年 12 月 21 日
編集済み: James Tursa
2017 年 12 月 21 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!