包提供了几种常用的优化算法。 该模块包含以下几个方面 -
多变量标量函数的无约束和约束最小化
函数为中的多变量标量函数提供了无约束和约束最小化算法的通用接口。 为了演示最小化函数,考虑使变量的函数最小化的问题 -
这个函数的最小值是,当时达到。
在下面的例子中,例程与Nelder-Mead单纯形算法()一起使用(通过方法参数选择)。参考下面的例子。
上述程序将生成以下输出 -
简单算法只需要函数评估,对于简单的最小化问题是一个不错的选择。 但是,由于它不使用任何梯度评估,因此可能需要较长时间才能找到最小值。
另一种只需要函数调用来寻找最小值的优化算法就是鲍威尔方法,它可以通过在函数中设置来实现。
求解一个带有变量边界的非线性最小二乘问题。 给定残差(n个实变量的m维实函数)和损失函数(标量函数),最小二乘法找到代价函数的局部最小值。 看看下面的例子。
在这个例子中,函数的最小值不受自变量的限制。
请注意,我们只提供残差的向量。 该算法将成本函数构造为残差的平方和,这给出了函数。 确切的最小值是。
上述程序将生成以下输出 -
让我们了解求根如何在SciPy中使用。
标量函数
如果有一个单变量方程,则可以尝试四种不同的寻根算法。 这些算法中的每一个都需要预期根的时间间隔的端点(因为函数会改变符号)。 一般来说,是最好的选择,但其他方法可能在某些情况下或学术目的有用。
定点求解
与找到函数零点密切相关的问题是找到函数的固定点的问题。 函数的固定点是函数评估返回点的点:。 显然,的不动点是的根。 等价地,的根是的固定点。 例程提供了一个简单的迭代方法,使用序列加速度来估计的固定点,如果给出起点的话。
方程组
使用函数可以找到一组非线性方程的根。 有几种方法可供选择,其中(默认)和分别使用的混合方法和中的Levenberg-Marquardt方法。
下面的例子考虑了单变量超越方程。
其根可以求解如下 -
执行上面示例代码,得到以下结果 -