matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值

您所在的位置:网站首页 二次函数极值公式推导过程图 matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值

matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值

2024-04-06 00:17| 来源: 网络整理| 查看: 265

两种方法:

1、求导的方法:syms x y;

>>

y=x^3+x^2+1

>>

diff(y)

ans =3*x^2 + 2*x

>>

solve(ans)

ans

=-2/3

0

极值有两点。

同时也是最值;​

2、直接用最小值函数:​

求最大值,既求-y的最小值:

>>

f=@(x)(-x^3-x^2-1)

f =@(x)(-x^3-x^2-1)

>>

x=fminunc(f,-3,3)%

在-3;-3范围内找Warning: Gradient must be provided for

trust-region method;  using line-search method

instead. > In fminunc at

354Optimization terminated: relative infinity-norm of gradient less

than options.TolFun.

x =

-0.6667

>> f(x)

ans =

-1.1481在规定范围内的最大值是1.1481由于函数的局限性,

求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。

例子:syms x

f=(200+5*x)*(0.65-x*0.01)-x*0.45;

s=diff(f);%一阶导数

s2=diff(f,2);%二阶导数

h=double(solve(s));%一阶导数为零的点可能就是极值点,注意是可能,详情请见高数课本

for

i=1:length(h)

if

subs(s2,x,h(i))0

disp(['函数在' num2str(h(i))

'处取得极小值,极小值为'

num2str(subs(f,x,h(i)))])

else

disp(['函数在' num2str(h(i))

'处二阶导数也为0,故在该点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本

end

end



【本文地址】


今日新闻


推荐新闻


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