您的位置:首页 > 编程语言 > MATLAB

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

2017-04-22 21:54 585 查看

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

机房里的R2010a版本

命令:

1、fmincon

FMINCON finds a constrained minimum of a function of several variables.



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