1. 程式人生 > >Matlab無約束優化小例

Matlab無約束優化小例

例1:
求f=2exp(-x)sin(x)在(0,8)上的最大、最小值。

f='2*exp(-x).*sin(x)';
fplot(f,[0,8]);
%xmin最小值點,fmin函式在該點的值
[xmin,fmin]=fminbnd(f,0,8)
f1='-2*exp(-x).*sin(x)';
%求最大值,就把原函式求-f(x)的最小值
[xmax,fmax]=fminbnd(f1,0,8);
xmax
famx=abs(fmax)

例2 邊長3m的正方形鐵板,四角減去相等正方形,製成方形無蓋水槽。怎樣減使水槽容積最大。
解:列出目標函式(加負號,轉化為求最小)
min y=-((3-2x)^2)*x

f='-(3-2*x).^2*x';
[x,fval]=fminbnd(f,0,1.5);
xmax=x
fmax=-fval

例3 求多元函式最小值
minf(x)=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)

%多元函式無約束優化問題
x0=[-1,1];%初始點
[x,fval]=fminunc('exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)',x0)