下一个脚本应打印出7x7全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
我认为这是一个浮点精度问题,因为format long
的数字在C和D上有所不同。
答案 0 :(得分:3)
你没有做错任何事 - 计算机具有有限的精度,你的计算显示它 - 就像1e6 + 0.1 - 1e6
一样(在Matlab中尝试)。避免它的一种方法是使用一些库来获得任意精度 - 但它不会解决问题。它,只是将问题推向越来越小的数字。
有关更多信息,请参阅以下链接:
http://floating-point-gui.de/errors/comparison/
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
顺便说一句,format long
与实际精度无关,它只是设置数字格式为显示的方式。