小编use*_*812的帖子

Matlab/Octave/Numpy数值差异

我正在移植一个在Matlab中工作的算法,以便numpy并观察到一个奇怪的行为.相关的代码段是

P = eye(4)*1e20;
A = [1 -0.015 -0.025 -0.035; 0.015 1 0.035 -0.025; 0.025 -0.035 1 0.015; 0.035 0.025 -0.015 1];
V1 = A*(P*A')
V2 = (A*P)*A'
Run Code Online (Sandbox Code Playgroud)

当我使用Matlab运行时,此代码提供以下矩阵:

V1 = 1.0021e+20            0  -8.0000e+00            0
              0   1.0021e+20            0            0
    -8.0000e+00            0   1.0021e+20            0
              0            0            0   1.0021e+20


V2 = 1.0021e+20            0  -8.0000e+00            0
              0   1.0021e+20            0            0
    -8.0000e+00            0   1.0021e+20            0
              0            0            0   1.0021e+20
Run Code Online (Sandbox Code Playgroud)

请注意,V1和V2与预期相同.

当相同的代码在Octave中运行时,它提供:

V1 = 1.0021e+20   4.6172e+01  -1.3800e+02   1.8250e+02
    -4.6172e+01   1.0021e+20  -1.8258e+02  -1.3800e+02
     1.3801e+02   1.8239e+02   1.0021e+20 …
Run Code Online (Sandbox Code Playgroud)

matlab numpy octave

6
推荐指数
1
解决办法
1350
查看次数

标签 统计

matlab ×1

numpy ×1

octave ×1