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

您所在的位置:网站首页 一元二次函数最大值最小值 Python 求函数极小值、极大值点

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

2023-12-18 00:55| 来源: 网络整理| 查看: 265

目录 Python 求函数极小值、极大值点一、求极小值1.不含参数的函数2.含参数的函数 二、求极大值

Python 求函数极小值、极大值点 一、求极小值 1.不含参数的函数

例:求f(x)=sin(2*x)cos(3x)在x=0.2附近的极小值点。 利用scipy.optimize中的fmin函数求解,代码如下:

from scipy.optimize import fmin import numpy as np def f(x): return np.sin(2*x)*np.cos(3*x) result=fmin(f,0.2)#第一个参数是所求解的函数,第二个是x的初始迭代值 #result=fmin(f,0.2,disp=False,xtol=1e-8) print(result[0])

fmin的第一个参数是所求解的函数,第二个是x的初始迭代值,这里选取在x=0.2处开始迭代,最终找到x=0.2附近的极小值点。如果函数有多个极小值点,则会得到靠近初始迭代值的那个极小值点。此外还可以设置参数disp=False来使得在求解时不输出任何消息,还可以修改参数xtol来设置误差,还可以设置参数args来求解含参数的函数(将在下面介绍)。

2.含参数的函数

例:求f(x)=sin(w1*x)cos(w2x)在x=0.2附近的极小值点,其中w1和w2是可任取的参数。 只需在fmin函数中设置参数args即可,代码如下:

from scipy.optimize import fmin import numpy as np def f(x,w1,w2): return np.sin(w1*x)*np.cos(w2*x) result=fmin(f,0.2,args=(2,3))#参数args=(2,3)代表w1=2, w2=3 #result=fmin(f,0.2,args=(2,3),disp=False,xtol=1e-8) print(result[0]) 二、求极大值

由于scipy.optimize中只有fmin函数,没有fmax函数,我们自定义一个fmax函数。代码如下:

from scipy.optimize import fmin import numpy as np def fmax(func, x0, args=(), **kwargs): return fmin(lambda x:-func(x,*args),x0, **kwargs)#对函数加个负号相当于求极大值 def f(x): return np.sin(2*x)*np.cos(3*x) def f2(x,w1,w2): return np.sin(w1*x)*np.cos(w2*x) result=fmax(f,0.1)#,disp=False,xtol=1e-8 print(result[0]) result2=fmax(f2,0.1,args=(2,3))#,disp=False,xtol=1e-8 print(result2[0])

使用方法与fmin完全相同。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3