x=fzero(filename,x0):
filename是待求根方程左端的函数表达式,x0是初始值。x=fsolve(filename,x0,option)
x为返回的近似解,filename是待求根方程左端的函数表达式,x0是初值。f=@(x) [sin(x(1))+x(2)+x(3)^2*exp(x(1)),x(1)+x(2)+x(3),x(1)*x(2)*x(3)];
x=fsolve(f,[1,1,1],optimset('Display','off'))
%验证:
f(x)
x = 0.022381577931908 -0.022380302441219 -0.000001275490689
ans = 1.0e-06 * -0.593080249610492 -0.000000000001322 0.000638901555530
%结果很小所以比较精确
函数极值包括极大值和极小值,或者叫最大值和最小值。MATLAB只考虑最小值 问题的计算,如果要求f(x)的最大值,可以通过求-f(x)的最小值来解决。
函数调用:
[xmin,fmin]=fminbnd(filename,x1,x2,option) [xmin,fmin]=fminsearch(filename,x0,option) [xmin,fmin]=fminunc(filename,x0,option)
f=@(x) x-1./x+5;
[xmin,fmin]=fminbnd(f,-10,-1)
[xmin,fmin]=fminbnd(f,1,10)
结果:
xmin = -9.999946678462546
fmin =-4.899946145244328
xmin =1.000053455645318
fmin =5.000106908433283
即求取一组x,使得目标函数f(x)为最小,且满足约束条件G(x)≤0。记号s.t.是英文subject to的缩写,表示x要满足后面的约束条件。
(约束条件可以进一步细化为:线性不等式约束、线性等式约束、非线性不等式约束、非线性等式约束以及x的下界和上界。)
函数调用:
[xmin,fmin]=fmincon(filename,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,option)
f=@(x) 0.4*x(2)+x(1)^2+x(2)^2-x(1)*x(2)+1/30*x(1)^3;
x0=[0.5;0.5];
A=[-1,-0.5;-0.5,-1];
b=[-0.4;-0.5];
lb=[0;0];
option=optimset('Display','off');
[xmin,fmin]=fmincon(f,x0,A,b,[],[],lb,[],[],option)%没有的条件就用空矩阵代替
结果:
xmin =
0.339562825416758
0.330218614948690
fmin =0.245609812236434