求最小值: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
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