如何用matlab求函数最优解(2)
我要求函数在最小值下x和y的解怎么办啊minx+y+81条件是xy>100000,x>1,y>1...
我要求函数在最小值下x和y的解怎么办啊
min x+y+81
条件是xy>100000,x>1,y>1 展开
min x+y+81
条件是xy>100000,x>1,y>1 展开
3个回答
展开全部
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 %最小值为这个值
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 %最小值为这个值
展开全部
利用罚函数法求解
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.
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是小于100000吧 如果大于 那没有什么意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询