Matlab有约束的多元函数的最小值!!

在约束条件中,出现等式,怎样计算?比如说,有X1+X2+X3=50,还有一些不等式,用fmincon或是linprog函数怎么求解,在线等待,谢谢!
有多个等式,怎样作呢?

求最小值:f = 0.2*x^2+0.2*y^2+0.2*z^2+310*x+305*y+300*z-1000
约束:
等式: x+y+z = 60
x+2*z = 30
不等式:x-2y <= 8
y+z >=0
x+z >=0
%[x,fval] = fmincon(fun,x0,A,B,Aeq,Beq)
%x 所求的自变量
%fval 满足条件的函数最小值
%fun:函数
%x0:初值,自己取
%A,B不等式条件Ax<=B,写出矩阵乘法形式
%Aeq,Beq等式约束 Aeq x = B,写成矩阵形式

x0 = [1 2 3];
fun = @(x) 0.2*x(1)^2+0.2*x(2)^2+0.2*x(3)^2+310*x(1)+305*x(2)+300*x(3)-1000
A = [1,-2,0;0 -1 -1;-1 0 -1];
B = [8;0;0];
Aeq = [1,1,1;1 0 2];
Beq = [60;30];
[x,fval] = fmincon(fun,x0,A,B,Aeq,Beq)

运行结果
x =

7.5000 41.2500 11.2500

fval =

1.7658e+004
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-02
clear all;
close all;
warning off all;
[X fval]= fmincon('2*pi*x(1)*x(2)+4*pi*x(1)^2',[1 1],[-1 0],-1,[],[],[],[],'myfunc');
x = X(1)
y = X(2)
fval

%%另外新建一个m文件,将下列代码放入
function [ce ceq] = myfunc(x)
ce = [];
ceq = pi*x(1)^2*x(2)-350;
return
相似回答