利用MATLAB求多元函数的极值(2)

标签:
杂谈 |
利用MATLAB求多元函数的极值分两种情况,(1)无约束条件;(2)有约束条件。
(2)有约束条件下求极小值的方法:
假设多变量非线性函数的数学模型为
X, b,beq,lb,ub为矢量,A,Aeq为矩阵,c(X),ceq(X)为函数(可非线性)。
命令格式: x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,beq)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
[x,fval] = fmincon(...)
[x,fval,exitflag] = fmincon(...)
[x,fval,exitflag,output] = fmincon(...)
[x,fval,exitflag,output,lambda] = fmincon(...)
[x,fval,exitflag,output,lambda,grad] =
fmincon(...)
例如
的极小值
解:首先,编制 M-file文件
function f myfun(x)
f=-x(1)*x(2)*x(3)
然后重写约束条件为两个小于或等于一个常数的不等式,
http://s16/middle/5b5a25e9gaf7e9e7202af&690
因为约束条件是线性的,
用矩阵表示为Ax<=b 其中;
http://s3/middle/5b5a25e9gaf7e9e041f62&690
其次,猜测估计提供一个起点,调用优化程序。
x0 = [10; 10;
10];
[x,fval] = fmincon(@myfun,x0,A,b)
x =
fval =
-3.4560e+03
A*x-b=
当x1=24,x2=12,x3=12,时函数有极小值-3.4560e+03