java 线性代数 线性代码_最小值

 

 

C=[-2 -3 -5]; %C为行向量
%%第一行表示求-2x-3y-5z的最小值 原求的是2x+3y+5z的最大值 只需要将该值fval取反即可
A=[-2,5,-1;1,3,1];
b=[-10;12];%%代表2x-5y+z>=10;x+3y+z<=12  注意将2x-5y+z>=10转化成公式的时候  左右两边都要取符号 尤其是10变为-10
Aeq=[1,1,1];
beq=[7];%%Aeq和beq行代表 x+y+z=7;
% [x,y]=linprog(f,A,b,Aeq,beq,zeros(3,1));
% x,y=-y
lb=[0;-inf;-1];
ub=[inf;1;2];%%lb和ub行代表 x》=0;y《=1》;-1《=z《=2;
[x,fval]=linprog(C,A,b,Aeq,beq,lb,ub);
x,fval=-fval%%最后别忘了把favl变成负的

 

C=input("请输入一个行向量,表示变量前面的系数\n"); %C为行向量
%%第一行表示求-2x-3y-5z的最小值 原求的是2x+3y+5z的最大值 只需要将该值fval取反即可
A=input("请输入表达式中<=的部分变量前面的系数,为矩阵\n");
b=input("请输入<=部分后面的系数部分,为列向量\n");%%代表2x-5y+z>=10;x+3y+z<=12 注意将2x-5y+z>=10转化成公式的时候 左右两边都要取符号 尤其是10变为-10
Aeq=input("请输入表达书中等式的系数部分,为矩阵\n");
beq=input("请输入表达式中等式号后面的部分,为列向量\n");%%Aeq和beq行代表 x+y+z=7;
lb=input("请输入表达式中自变量》=前的部分,按列向量的格式");
ub=input("请输入表达式中自变量《=后的部分,按列向量的格式");%%lb和ub行代表 x》=0;y《=1》;-1《=z《=2;
[x,fval]=linprog(C,A,b,Aeq,beq,lb,ub);
x,fval=-fval;%%最后别忘了把favl变成负的