我是靠谱客的博主 阳光翅膀,最近开发中收集的这篇文章主要介绍matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

两种方法:

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求函数的极值点和最大值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部