如何用matlab求函数最优解(2)

我要求函数在最小值下x和y的解怎么办啊
min x+y+81
条件是xy>100000,x>1,y>1

function f=myfun(x)
f=x(1)+x(2)+81;
end %%函数,其中x=x(1)y=x(2)

function [c,ceq]=mycon(x)
c(1)=100000-x(1)*x(2);
c(2)=1-x(1);
c(3)=1-x(2);
ceq=[];
end %%条件

clc,clear all
x0=[400 ;400];
[x,fval]=fmincon(@myfun,x0,[],[],[],[],[],[],@mycon)

x =

316.3406
316.1150 %即x=y等于这个数时最小

fval =

713.4556 %最小值为这个值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-08
利用罚函数法求解

syms x y M
%罚函数的形式写成如下函数P
P= x+y+81+M*[(x-1)^2+(y-1)^2+(x*y-10000)^2];
%计算雅可比矩阵
J=jacobian(P,[x,y]);
%雅可比矩阵等于零的解,关于M的函数表达式
[x,y]=solve(J);
%给M赋值 这里赋值100,求x y 的值
x0=subs(x,M,100)
y0=subs(y,M,100)
%得到x0,y0会有多组解 ,取有意义的值 得
x0=y0=99.9950

%通过理论求解 这里的x,y取值应是 x0=y0=100 x+y >= 2*sqrt(xy) = 2*100 =200.
第2个回答  2014-04-08
应该是小于100000吧 如果大于 那没有什么意思