Matlab矩阵乘法与转置精度
下一个脚本应该打印出一个7x7 all-one矩阵,因为等式已经满足Matlab矩阵乘法与转置精度,matlab,matrix-multiplication,transpose,Matlab,Matrix Multiplication,Transpose,下一个脚本应该打印出一个7x7 all-one矩阵,因为等式已经满足 A = rand(5,7); B = rand(5,7); C = (A' * B)'; D = B' * A; C == D 而不是这样的回答: ans = 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1
A = rand(5,7);
B = rand(5,7);
C = (A' * B)';
D = B' * A;
C == D
而不是这样的回答:
ans =
1 1 1 1 0 1 1
1 1 1 1 0 1 0
1 1 1 1 1 1 1
1 1 1 1 0 0 0
1 0 1 1 1 1 1
0 0 1 1 1 1 1
0 1 1 0 1 1 1
我认为这是一个浮点精度问题,因为使用格式long
时,C和D中的数字不同
- 我做错了什么
- 哪里出了问题
- 我怎样才能避免呢
1e6+0.1-1e6
(在Matlab中尝试)。避免这种情况的一种方法是使用一些库来实现任意精度——但它不会“解决”它,只是将问题推向越来越小的数字
有关更多信息,请参见以下链接:
顺便说一句,format long
与实际精度无关,它只是设置数字的格式,以便显示我认为这是一个浮点精度问题[…]。对因为rand
返回浮点数,所以不应该期望矩阵C
和D
完全相等。喜欢像norm(C-D)这样的东西