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

比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?怎样写程序?

用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

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-27
求极值:
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
至于遗传算法,以后提个复杂的问题再回答。本回答被提问者采纳
第2个回答  2012-11-13
fminsearch函数为不使用微分运算的全局寻优;
fminunc函数为使用微分运算的全局寻优;
fmincon函数为使用微分运算的受限寻优;
fminbnd函数为使用微分运算的区间寻优;
参数定义详见matlab帮助。注意前两个函数都是全局寻优,而对于区间寻优而言,要使用fminbnd函数。对于本例应为fminbnd(@(x)x^3+x^2+1, LowerBound, UpperBound),其中LowerBound和UpperBound分别表示开区间左右端点。
第3个回答  2009-03-23
f=inline('x.^3+x.^2+1')
[x,y]=fminbnd(f,-2,2)
ezplot('x.^3+x.^2+1')

因为在图像上可看到是单调递增的,所以只需带入x的最大值即可
第4个回答  2009-03-23
先写个函数:
function out=myfun(x)
out=x^3+x^2+1;
再用fminbnd(@myfun,min,max)

请问用matlab怎样求一个函数的最大值
打开matlab软件,清空桌面环境;clear clc 2.定义一个符号变量:syms t 3.定义一个函数:y=t\/(1+t*t);再通过以下函数来查看上面的函数图像;ezplot(y);4.查看该函数的图像可知,函数在0到2之间有一个极值,本例求解该最大值为例;5.输入以下的指令可以求得该函数最大值;max(subs(y,t,[0...

MATLAB如何找最大值?
找最大元素就是max(max(A)),注意二维矩阵要写两个max找对应位置用find函数举个例子: A=[1 2 3 ;4 5 6]A =1 2 34 5 6 max(max(A))ans =6 [x y]=find(A==max(max(A)))x =2y =3找到最大元素是6,对应位置是x=2,y=3,就是第2行,第3列 ...

matlab如何求函数的最大值
(1)先在命令窗口给s,A赋值。(2)>> y=@(x)0.65*(s+x)*x\/(A+x)。(3)[x,fval]= fminbnd(y,0,inf)%用于求函数y在x在[0,inf]内的最小值。则在取负即为求最大值。不过本题我试验了,本题好像有问题。手算都没有最大值的,因为对y求导后y'在x>0内恒大于零,故y为增...

求助用matlab求这个函数的最大值
1、自定义目标函数,fmincon_fun(x),这里x=[a,b],其内容 y=-((a.^2+b.^2-1).\/(a*b)); %负号的意思求最大值即最小值的相反数 2、自定义约束条件函数,fmincon_con(x),这里x=[a,b],其内容 条件1(1≤b):c(1)=1-b 条件2(b≤a):c(2)=b-a 条件3(a≤√3...

用matlab求一元函数在某区间的最大值的方法 急急
求出的最小值再取相反数,就是函数的最大值了 fmax =52.005 MAX函数 max函数为Matlab中求最大值的函数,格式如下:M = max(A) %返回数组A中最大的元素 M = max(A,[],dim) %返回数组A中维度dim的最大的元素 [M,I] = max(___)C = max(A,B)以上内容参考:百度百科-最大值 ...

Matlab求函数最大值
(1)先在命令窗口给s,A赋值 (2)>> y=@(x)0.65*(s+x)*x\/(A+x)(3)[x,fval]= fminbnd(y,0,inf)%用于求函数y在x在[0,inf]内的最小值 则在取负即为求最大值。不过本题我试验了,本题好像有问题。手算都没有最大值的,因为对y求导后y'在x>0内恒大于零,故y为增函数...

用matlab求方程的最大值
>> 上面是将原式求导,并求出极值 点,x=±0.5时为极值 >> x=0.5 f=inline('5*x\/(4*x^2+5*x+1)');y=f(x)x = 0.5000 y = 0.5556 >> x=-0.5 f=inline('5*x\/(4*x^2+5*x+1)');y=f(x)x = -0.5000 y = 5 >> 所以,x=-0.5时,y=5 极大值 再给...

matlab已知自变量的取值范围求最大值
如何用matlab在已知自变量的取值范围下求最大值?题主的问题可以解决:1、根据函数表达式为f=QR(1-D),自定义其目标函数,fmincon_fun(x),即 f=-Q*R*(1-D); 这里负号表示最大值 2、根据约束条件,自定义其约束函数,fmincon_con(x),即 g(1)=Q-10; %Q>10;g(2)=R-0.04; %R>0....

Matlab如何找到一个数组中的最大值以及它所在的位置
用max()函数即可,比如 >> r = rand(1,10);>> [maxr,index]=max(r)maxr = 0.9649 index = 10 第一个返回参数是最大值,第二个参数是最大值所在的位置(下标)

如何通过Matlab求解函数的最大值问题
求最大值,可以转换为求最小值问题。比如:% 计算最小值f(x) = -x1*x2*x3,起始点为x = [10;10;10],约束条件为:0 ≤ x1 + 2*x2 + 2*x3 ≤ 72.–x1–2*x2–2*x3 ≤ 0 1.写出目标函数% function f = myfun(x)f = -x(1) * x(2) * x(3);% 2.约束条件...

相似回答