python - scipy.optimize.root 在非线性函数上返回 NaN
问题描述
我正在使用scipy.optimize.root (scipy v. 0.19.0)
非线性函数。
我的代码看起来像这样:
def invalid(num):
if isnan(num) or num < 0 or num > some_other_number:
return True
return False
def target_func(guesses, args):
for i in range(len(guesses)):
if invalid(guesses[i]):
return [float('inf')] * len(guesses)
# do some other calculations
return [res(guess) for guess in guesses]
result = root(target_func, guesses, args, method='lm')
大多数时候root
返回正确的结果。但在一种情况下,函数返回NaN
,这意味着“最佳”解决方案的目标函数为 inf。在这种情况下,求解器之前已经测试了一个有效的猜测,并收到了一个绝对小于无穷大的结果。但是一旦它收到一个 inf 结果,它似乎就发疯了,不会回到有限的数字。
我应该做些什么来解决这个问题吗?谢谢!
更新:我在我的代码中发现了一个导致目标函数返回 inf 的错误。但是,我仍然会感谢有关解决此类问题的最佳方法的任何意见。
解决方案
推荐阅读
- r - 箱线图:Matlab 显示关于 R 的不同图形?
- winapi - 如何监控和记录可执行文件对某些操作的 Win API 调用?
- javascript - Fullcalendar 使用变量添加事件
- r - 对于空间中的特定点,获取该点所在的像素(在 R 中)
- podio - Podio API:未附加的文件保留多长时间?
- php - 即使我在错误上运行 exit(),我的 PHP 代码也会返回 true
- javascript - 包括来自外部文件的嵌入式 javascript 函数
- c# - Process.Start 以“每个人”的用户名开始?
- android - Android 应用小部件 SeekBar 进度在 onDestroy() 中存活
- java - Android 中 ScrollView 的 IllegalStateException