用matlab求有约束条件函数的极值

用matlab求有约束条件函数的极值

机房里的R2010a版本

命令:

1、fmincon
FMINCON finds a constrained minimum of a function of several variables.
fmincon
2、fmincon用法:
X = FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON)
或者[x,fmin]=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON)

其中Fun为函数X0为初值,NONLCON为非线性约束条件。

以p194task1_1为例:

先建立约束条件,创建.m文件,内容如下:

%p194task1_1.m
%nonlcon1_1.m
function [c,ceq]=nonlcon1_1(x)
c(1)=-1*(25-x(1)^2-x(2)^2);
c(2)=-1*(7-x(1)^2+x(2)^2);
ceq=0;

其中c为非线性不等式约束,ceq为非线性等式约束。
再在同一目录下创建%p194task1-1.m

%p194task1_1.m
%min(f)=-2*x(1)-x(2);
%g1(x)=25-x(1)^2-x(2)^2>=0
%g2(x)=7-x(1)^2+x(2)^2>=0
%0<=x(1)<=5
%0<=x(2)<=10
clc,clear
% f='-2*x(1)-x(2)';
x0=[0,0];
[x,fmin]=fmincon(@(x) -2*x(1)-x(2),x0,[],[],[],[],[0,0],[5,10],@nonlcon1_1)

运行结果

x =

    4.0000    3.0000


fmin =

  -11.0000

除了以字符串、.m文件创建函数,学到了一个新的创建数量值函数的方法,在fmincon()的第一个参数中采用了此方法:

@(自变量名) 不加引号的函数

你可能感兴趣的:(matlab)