Python求多元函数的极小值
文章目录
- 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求多元函数的极小值相关推荐
- matlab求多元函数的极小值,[转载]利用MATLAB求多元函数的极值(2)
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...
- Python 求函数极小值、极大值点
目录 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 2.含参数的函数 二.求极大值 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 例:求f(x)=s ...
- 多元函数的极值matlab,利用MATLAB求多元函数的极值(2)
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件:(2)有约束条件. (2)有约束条件下求极小值的方法: 假设多变量非线性函数的数学模型为 min f(x) c(x)<=0 ceq( ...
- python判断素数的函数_如何用python求素数
如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...
- python求微分方程组的数值解曲线01
本人最近在写一篇关于神经网络同步的文章,其一部分模型为: x_i^{\Delta}(t)= -a_i*x_i(t)+ b_i* f(x_i(t))+ \sum\limits_{j \in\{i-1, ...
- python求众数程序_python求众数问题实例
本文实例讲述了python求众数问题的方法,是一个比较典型的应用.分享给大家供大家参考.具体如下: 问题描述: 多重集中重数最大的元素称为众数...就是一个可以有重复元素的集合,在这个集合中重复的次数 ...
- python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法
计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...
- Python 求最大子集的递归实现
Python 求最大子集的递归实现 def PowerSetsRecursive(items): """Use recursive call to return all ...
- python递归排序组合_如何用Python求list的排列组合:一种递归方式
问题描述: 给定一个包含n个元素的列表,从中选择m个元素作为一个子列表,求解所有可能的子列表. 例如: 一个列表是[1,2,3,4],从中任选3个数作为一个子列表. 则所有可能的子列表为:[1,2,3 ...
最新文章
- 性能超过人类炼丹师,AutoGluon 低调开源
- hdu 2602 Bone Collector
- 检查用户显示器的分辨率
- ORACLE10g安装
- Mxnet的.lst文件介绍
- Angular Universal 官网翻译
- IdentityServer4与ocelot实现认证与客户端统一入口
- EasyUI学习总结(一)——EasyUI入门
- Win7虚拟无线AP以及Android手机抓包
- Linux允许61440端口,释放对某端口的占用
- mysql workbench 1064_mysql - MySQL Workbench中的正向工程输出错误1064 - 堆栈内存溢出
- Matlab数据标准化——mapstd、mapminmax
- php word 生成图片,PHP导出成word,带图片样式
- 域名是什么?怎样注册一个域名?
- 深度报道 | 5G兵临城下:AIoT将面临哪些变革和挑战?
- 1.SPSS概述(安装与界面基本认识)
- PHP学习练手(十)
- Undirected Vertex Geography
- 面试宝典-Java I/O操作
- tello通信_鸿蒙HarmonyOS and 大疆Tello 无人机 BUILD SUCCESS
热门文章
- 一个运维工程师必须要知道的(工作职责与应用场景)干货整理
- 字符编码、Unicode原理、数据流压缩Zlib与Miniz的实现
- mysql握手_详细介绍mysql 协议的服务端握手包及对其解析
- matlab打开F90文件,ifort编译f90程序命令
- Excel Sheet页相关操作(21.10现代设计体验)
- 学习日记day17 ps
- uva 10115(字符串)
- 【论文阅读笔记】Structured-light 3D surface imaging: a tutorial(结构光三维表面成像)
- 理解C#中装箱和拆箱的概念
- 励销云全流程智能销售解决方案,助力B2B企业高效增长