这些函数求得是极值,不是最值,所以求出来有可能就不是最小值,你要提前确定它的解在8附近,你就直接改取值范围
[x,favl]=fminbnd(@(x)exp(-0.1*x)*sin(x)^2-0.5*(x+0.1)*sin(x),7,9)
x =
8.0236
favl =
-3.5680
还有就是可以用分段法来求
xrange=[-10,10];
N=100;
Xrange=linspace(xrange(1),xrange(2),N+1);
x_min=zeros(N,1);
fval_min=zeros(N,1);
for i=1:N
[x_min(i),fval_min(i)]=fminbnd(@(x)exp(-0.1*x)*sin(x)^2-0.5*(x+0.1)*sin(x),Xrange(i),Xrange(i+1));
end
[fval,i]=min(fval_min);
x=x_min(i)
fval