第1个回答 推荐于2016-06-02
主要思想:除了求极值点对应的函数外还要比较给定范围端点对应的函数值.
一般用的命令为:
[x,fval,exitflag,output]=fminbnd(fun,x1,x2,option)
option可省.X1,X2为给定的范围,FUN为句柄或内联函数
例如:
y=2*x^3-3*x^2 -1=<x<=4 的最大与最小值
程序
clc;clear;
fun=@(x)2*x^3-3*x^2-1;
fun2=inline('-(2*x^3-3*x^2-1)','x');
ezplot(fun,[-1 4]); %先画图判断大概情况
[xmin,fmin,exitflag,output]=fminbnd(fun,-1,4);
[xmax,fmax,exitflag,output]=fminbnd(fun2,-1,4);
fmax=-fmax; %
xmin,fmin,xmax,fmax %最大最小值
x=sym('x');
dfun=diff('2*x^3-3*x^2-1',x,1);
xm=solve(dfun);
xm=subs(xm);
fm=subs('2*x^3-3*x^2-1',x,xm);
xm,fm %极小值,极大值
结果:
xmin =
-1
fmin =
-6
xmax =
4
fmax =
79
xm =
0
1
fm =
-1
-2
可见最大最小值并非在极值点处而是在给定范围的端点本回答被网友采纳