【发布时间】:2015-09-28 15:36:34
【问题描述】:
我正在使用fsolve 求解方程组。有时fsolve 警告我目标函数返回NaN 并尝试一个新点。我想弄清楚我的方程如何传递NaN 以及 fsolve 在生成警告时放入的特定猜测。有没有办法在那个时候停止 fsolve 并获得猜测的值?
我尝试了dbstop if naninf,但它并没有多大帮助,因为我的函数中有几个地方会生成等于NaN 或Inf 的中间变量。我只是很困惑为什么这些方程最后会返回NaN。
【问题讨论】:
-
简单。编写一个新的匿名函数来包装另一个函数,并在 NaN 值的情况下返回错误的目标函数值。例如,使用 g = @(x) f(x)*~isnan(x) + isnan(x)*1e+10 包裹 f(x)。