Python 求函数极小值、极大值点 |
您所在的位置:网站首页 › 一元二次函数最大值最小值 › Python 求函数极小值、极大值点 |
目录
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 |