diag problem while substracting

1 回表示 (過去 30 日間)
Erdogan Bulut Kul
Erdogan Bulut Kul 2017 年 12 月 21 日
編集済み: James Tursa 2017 年 12 月 21 日
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?

採用された回答

James Tursa
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
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 ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by