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

比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?怎样写程序?... 比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?怎样写程序? 展开
 我来答
m___________2
推荐于2019-09-28 · TA获得超过1042个赞
知道答主
回答量:15
采纳率:0%
帮助的人:1739
展开全部

用matlab求函数最大值的步骤如下:

1.

打开matlab软件,清空桌面环境;

clear

clc

2.

定义一个符号变量:

syms t

3.

定义一个函数:

y=t/(1+t*t);

再通过以下函数来查看上面的函数图像;

ezplot(y);

4.

查看该函数的图像可知,函数在0到2之间有一个极值,本例求解该最大值为例;

5.

输入以下的指令可以求得该函数最大值;

max(subs(y,t,[0:0.00001:2]));

其中0.00001是精度,求得最大值为0.5000

122173382
2009-03-27 · TA获得超过241个赞
知道答主
回答量:222
采纳率:0%
帮助的人:0
展开全部
求极值:
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
至于遗传算法,以后提个复杂的问题再回答。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kekekeyide
2012-11-13
知道答主
回答量:5
采纳率:100%
帮助的人:5281
展开全部
fminsearch函数为不使用微分运算的全局寻优;
fminunc函数为使用微分运算的全局寻优;
fmincon函数为使用微分运算的受限寻优;
fminbnd函数为使用微分运算的区间寻优;
参数定义详见matlab帮助。注意前两个函数都是全局寻优,而对于区间寻优而言,要使用fminbnd函数。对于本例应为fminbnd(@(x)x^3+x^2+1, LowerBound, UpperBound),其中LowerBound和UpperBound分别表示开区间左右端点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b7cd76a
2009-03-23 · TA获得超过1337个赞
知道小有建树答主
回答量:660
采纳率:0%
帮助的人:317万
展开全部
f=inline('x.^3+x.^2+1')
[x,y]=fminbnd(f,-2,2)
ezplot('x.^3+x.^2+1')

因为在图像上可看到是单调递增的,所以只需带入x的最大值即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hyqwel
2009-03-23 · TA获得超过143个赞
知道答主
回答量:51
采纳率:0%
帮助的人:35.3万
展开全部
先写个函数:
function out=myfun(x)
out=x^3+x^2+1;
再用fminbnd(@myfun,min,max)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式