我正在将一些 Matlab 代码翻译成 Python,并且在矩阵乘法精度方面遇到了一些问题。假设我们有以下数据:
A: 6x6 matrix
B: 5x5 matrix
C: 2x2 matrix
D: 5x5 matrix
E: 6x5 matrix
在 Matlab 中,我的操作如下所示:
R1 = A * (-( B*C(1,1) + D*C(2,1) ) * E.').'
上一组操作产生一个 6x5 矩阵(R1 矩阵)。
在我的 Python 代码中,我有相同的矩阵,操作如下所示:
R2 = np.matmul(A, np.matmul(-(np.multiply(B, C[0,0]) + np.multiply(D, C[1,0])), E.transpose()).transpose())
但是,对相同数据的相同操作会在 方面产生不同的结果norm-2
,即:
norm-2(R1-R2) = 7.4506e-09
我无法理解为什么结果不同。有谁知道可能是什么原因?
为了清楚起见,我在此处附上数据和脚本。指令是:
- 运行 Run_python.py 脚本。这将执行操作并生成一个 python_results.mat 文件。
- 运行 Run_matlab 脚本。这将执行操作并将根据其 norm-2 比较两个结果。
最后,我的 Python 版本是 3.6.3,带有 numpy (1.14.3) 和 scipy (1.1.0)。