作业帮 > 综合 > 作业

请问用matlab怎样求一个函数的最大值

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/22 22:33:16
请问用matlab怎样求一个函数的最大值
比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?怎样写程序?
请问用matlab怎样求一个函数的最大值
求极值:
syms x y
>> y=x^3+x^2+1
>> diff(y)

ans =

3*x^2 + 2*x
>> solve(ans)

ans =

-2/3
0
极值有两点.
求最大值,既求-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 354
Optimization terminated: relative infinity-norm of gradient less than options.TolFun.
x =
-0.6667
>> f(x)
ans =
-1.1481
在规定范围内的最大值是1.1481
由于函数的局限性,求出的极值可能是局部最小(大)值.
求全局最值要用遗传算法.
上面简单的函数可以自己估计出来:最大值为inf
至于遗传算法,以后提个复杂的问题再回答.