小编mwm*_*mwm的帖子

确定性python脚本以非确定性方式运行

我有一个不使用随机化的脚本,当我运行它时会给出不同的答案.每次运行脚本时,我都希望答案是一样的.问题似乎只发生在某些(病态的)输入数据上.

该片段来自为线性系统计算特定类型控制器的算法,它主要由线性代数(矩阵求逆,Riccati方程,特征值)组成.

显然,这对我来说是一个主要的担忧,因为我现在不能相信我的代码能给我正确的结果.我知道条件差的数据结果可能是错误的,但我预计一直都是错误的.为什么我的Windows机器上的答案并不总是一样的?为什么Linux和Windows机器没有给出相同的结果?

我正在使用Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win 32Numpy版本1.8.2和Scipy 0.14.0.(Windows 8,64位).

代码如下.我也尝试在两台Linux机器上运行代码,脚本总是给出相同的答案(但机器给出了不同的答案).一个是运行Python 2.7.8,Numpy 1.8.2和Scipy 0.14.0.第二个是使用Numpy 1.6.1和Scipy 0.12.0运行Python 2.7.3.

我三次解决Riccati方程,然后打印答案.我每次都期待相同的答案,而不是我得到序列'1.75305103767e-09; 3.25501787302e-07; 3.25501787302e-07' .

    import numpy as np
    import scipy.linalg

    matrix = np.matrix

    A = matrix([[  0.00000000e+00,   2.96156260e+01,   0.00000000e+00,
                        -1.00000000e+00],
                    [ -2.96156260e+01,  -6.77626358e-21,   1.00000000e+00,
                        -2.11758237e-22],
                    [  0.00000000e+00,   0.00000000e+00,   2.06196064e+00,
                         5.59422224e+01],
                    [  0.00000000e+00,   0.00000000e+00,   2.12407340e+01,
                        -2.06195974e+00]])
    B = matrix([[     0.        ,      0.        ,      0.        ],
                    [     0.        ,      0.        ,      0.        ], …
Run Code Online (Sandbox Code Playgroud)

python windows numpy scipy non-deterministic

12
推荐指数
1
解决办法
865
查看次数

标签 统计

non-deterministic ×1

numpy ×1

python ×1

scipy ×1

windows ×1