我试图使用scipy.optimize.root()
其中一个方程包含像x[5]**epsilon
这样的幂,其中epsilon是一个参数。对于epsilon=1
我设法找到根,但对于1
周围的任何不同的epsilon,我不能。我在这个过程的某个地方得到NaN
,我认为它来自求解器尝试负值并获得NaN
。
有没有办法进一步限制求解器,就像告诉他x[5] >= 0
或类似?我知道scipy的最小化工具可以使用这些边界,但我在root
{{1}}找不到类似的内容。
答案 0 :(得分:0)
而不是x[5]**epsilon
,而是在目标函数中将其替换为np.exp(x[5])**epsilon
。然后x[5]
可以是-inf
和+inf
之间的任何值,np.exp(x[5])
将始终为正。
远离abs(x[5])
或类似的其他可能导致衍生不连续的转换。