概述
两种方法:
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)))])
elseif
subs(s2,x,h(i))>0
disp(['函数在' num2str(h(i))
'处取得极小值,极小值为'
num2str(subs(f,x,h(i)))])
else
disp(['函数在' num2str(h(i))
'处二阶导数也为0,故在该点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本
end
end
最后
以上就是阳光翅膀为你收集整理的matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值的全部内容,希望文章能够帮你解决matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复