文章目录

  • minimize_scalar
  • minimize
  • 测试

minimize_scalar

此为scipy中用于求函数最小值的方法,输入参数如下

minimize_scalar(fun, bracket=None, bounds=None, args=(), method='brent', tol=None, options=None)[source]

其中,必选的参数只有一个,就是fun,待优化函数。

除了fun之外,method是一个重要的参数,为优化算法,总共有四种

  • Brent:即布伦特算法,一种结合了二分法、割线法和逆二次插值法的优化算法
  • Bounded:可以为最小值设定一个下界
  • Golden:通过黄金分割来进行搜索
  • custom:此为自定义算法

根据所选方法的不同,可以选择不同的参数

  • brent, golden这两种方法下,bracket为可选项,可以有三个值(a,b,c),表示黄金分割方案
  • Bounded方法下,bounds为可选项,为二元组,表示优化的边界

测试一下 x 2 x^2 x2,效果如下

>>> import numpy as np
>>> from scipy.optimize import minimize_scalar
>>> test = lambda x : x**2
>>> minimize_scalar(test)fun: 0.0nfev: 8nit: 4success: Truex: 0.0

minimize

minimize_scalar中的函数fun只能是标量函数,即只有一个输入参数可被优化,相比之下,minimize函数提供了多元函数的优化方案,其定义为

minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)

其中,必选参数fun为待优化函数,x0为优化初值。其method仍为重要选项,可选方法包括

  • Nelder-Mead:Nelder-Mead 算法,一种求多元函数局部最小值的算法
  • Powell:鲍威尔法,又称方向加速法
  • CG:共轭梯度算法
  • BFGS:BFGS算法,一种拟牛顿法
  • Newton-CG:牛顿CG法
  • L-BFGS-B:限制内存、并添加约束的BFGS法
  • TNC:截断牛顿法
  • COBYLA:线性逼近约束优化
  • SLSQP:序列最小二乘法
  • trust-constr:信赖域算法
  • dogleg:狗腿算法
  • trust-ncg
  • trust-exact
  • trust-krylov:krylov算法
  • custom 用户自定义方法

contraints为约束项,只适用于部分优化算法,其中

  • trust-constr中,可选两种不同约束函数
  • COBYLA, SLSQP中,有多种选项

测试

接下来,可以找一个函数测试一下

from scipy.optimize import minimize
import numpy as np
def test(xs):_sum = 0.0for i in range(len(xs)):_sum = _sum + np.cos((xs[i]*i)/5)*(i+1)return _sumxs = np.arange(5)
ret = minimize(test, xs, method='TNC')
msg = f"全局最小值" + ", ".join([f"{x:.4f}" for x in ret.x])
msg += f"\nf(x)={ret.fun:.4f}"
print(msg)

其结果为

全局最小值0.0000, 15.7081, 7.8565, 5.2349, 3.9270
f(x)=-13.0000

Python求多元函数的极小值相关推荐

  1. matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)

    利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...

  2. Python 求函数极小值、极大值点

    目录 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 2.含参数的函数 二.求极大值 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 例:求f(x)=s ...

  3. 多元函数的极值matlab,利用MATLAB求多元函数的极值(2)

    利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...

  4. python判断素数的函数_如何用python求素数

    如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...

  5. python求微分方程组的数值解曲线01

    本人最近在写一篇关于神经网络同步的文章,其一部分模型为: x_i^{\Delta}(t)= -a_i*x_i(t)+ b_i* f(x_i(t))+ \sum\limits_{j \in\{i-1, ...

  6. python求众数程序_python求众数问题实例

    本文实例讲述了python求众数问题的方法,是一个比较典型的应用.分享给大家供大家参考.具体如下: 问题描述: 多重集中重数最大的元素称为众数...就是一个可以有重复元素的集合,在这个集合中重复的次数 ...

  7. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  8. Python 求最大子集的递归实现

    Python 求最大子集的递归实现 def PowerSetsRecursive(items): """Use recursive call to return all ...

  9. python递归排序组合_如何用Python求list的排列组合:一种递归方式

    问题描述: 给定一个包含n个元素的列表,从中选择m个元素作为一个子列表,求解所有可能的子列表. 例如: 一个列表是[1,2,3,4],从中任选3个数作为一个子列表. 则所有可能的子列表为:[1,2,3 ...

最新文章

  1. 性能超过人类炼丹师,AutoGluon 低调开源
  2. hdu 2602 Bone Collector
  3. 检查用户显示器的分辨率
  4. ORACLE10g安装
  5. Mxnet的.lst文件介绍
  6. Angular Universal 官网翻译
  7. IdentityServer4与ocelot实现认证与客户端统一入口
  8. EasyUI学习总结(一)——EasyUI入门
  9. Win7虚拟无线AP以及Android手机抓包
  10. Linux允许61440端口,释放对某端口的占用
  11. mysql workbench 1064_mysql - MySQL Workbench中的正向工程输出错误1064 - 堆栈内存溢出
  12. Matlab数据标准化——mapstd、mapminmax
  13. php word 生成图片,PHP导出成word,带图片样式
  14. 域名是什么?怎样注册一个域名?
  15. 深度报道 | 5G兵临城下:AIoT将面临哪些变革和挑战?
  16. 1.SPSS概述(安装与界面基本认识)
  17. PHP学习练手(十)
  18. Undirected Vertex Geography
  19. 面试宝典-Java I/O操作
  20. tello通信_鸿蒙HarmonyOS and 大疆Tello 无人机 BUILD SUCCESS

热门文章

  1. 一个运维工程师必须要知道的(工作职责与应用场景)干货整理
  2. 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现
  3. mysql握手_详细介绍mysql 协议的服务端握手包及对其解析
  4. matlab打开F90文件,ifort编译f90程序命令
  5. Excel Sheet页相关操作(21.10现代设计体验)
  6. 学习日记day17 ps
  7. uva 10115(字符串)
  8. 【论文阅读笔记】Structured-light 3D surface imaging: a tutorial(结构光三维表面成像)
  9. 理解C#中装箱和拆箱的概念
  10. 励销云全流程智能销售解决方案,助力B2B企业高效增长