根查找偶尔会失败。对于二维优化,是否可以给fSolve一个限制?

2024-04-27 21:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到一个二维优化问题的根源,它的形式(下面不是实际的方程,因为它很长,这只是问题风格的一个例子)。在

def my_function(a,b):
    c = exp(a) + b
    d = a + 2 - exp(b)
    return c, d

我想知道a和b,其中c和d为零。在

到目前为止,我使用的是scipy优化库中的fsolve,并将种子值作为我知道的接近解决方案的值传递。这很有效,虽然偶尔会失败,我得到的错误是解算器“在过去10次迭代中没有取得好的进展”。在

我想知道是否有一种方法/通用的良好实践可以使查找根更加健壮?在

否则,我想试试有界根查找。在1D中,可以使用fminbound,但我找不到一个函数来指定2D问题的边界。在

感谢任何帮助。在

谢谢


Tags: return风格mydef错误functionscipy解决方案
1条回答
网友
1楼 · 发布于 2024-04-27 21:03:53

从全局来看,没有一种通用的方法可以使查找根变得更加健壮——这是因为在中有这么多不同的函数scipy.optimize公司! 在

一个诀窍是,与其求f(x)的根,不如试着求f^2(x)的极小值。寻找极小值通常更为稳健,因为算法只需要不断地向下走到底。然而,缺点是发现的最小值可能不是f(x)=0(即不是根)。在

所以,你可以试试scipy.optimize.fmin\tnc公司这是一个有界的极小值,看看会发生什么。在

正确的猜测总是有帮助的,但是“接近”可能并不总是最好的-您可以更深入地研究函数,并弄清楚“接近”的景观到底是什么样子,如果“接近”(或远!)另一个方向可能对解算器来说更容易(也就是说,一个方向可能相当颠簸,需要翻山越岭才能找到山谷,而另一个方向有一条通向谷底的美丽宽阔的小路)。在

相关问题 更多 >