MATLAB求函数最小值已知y=e-0.1xsin2x-0.5(x+0.1)sinx,在-10≤x≤10区间,求函数的最
1个回答

这些函数求得是极值,不是最值,所以求出来有可能就不是最小值,你要提前确定它的解在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