另外限制了scipy的根求解器

时间:2014-08-21 13:31:28

标签: python scipy equation-solving

我试图使用scipy.optimize.root()

来解决非线性方程组

其中一个方程包含像x[5]**epsilon这样的幂,其中epsilon是一个参数。对于epsilon=1我设法找到根,但对于1周围的任何不同的epsilon,我不能。我在这个过程的某个地方得到NaN,我认为它来自求解器尝试负值并获得NaN

有没有办法进一步限制求解器,就像告诉他x[5] >= 0或类似?我知道scipy的最小化工具可以使用这些边界,但我在root {{1}}找不到类似的内容。

1 个答案:

答案 0 :(得分:0)

而不是x[5]**epsilon,而是在目标函数中将其替换为np.exp(x[5])**epsilon。然后x[5]可以是-inf+inf之间的任何值,np.exp(x[5])将始终为正。

远离abs(x[5])或类似的其他可能导致衍生不连续的转换。