作业帮 > 综合 > 作业

以矩阵的方式求解多元一次方程组的最小值问题 用编程的方法

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 00:16:35
以矩阵的方式求解多元一次方程组的最小值问题 用编程的方法
目标函数F=min:1.5X11+0.7X12+1.6X13+0.85y1+
0.8X21+1.5X22+2.2X23+1.00y2+
1.2X31+2.3X32+1.1X33+0.90y3
约束函数:(1):X11+X12+X13==1.5
Xij>=0,i=1,2,3 j=1,2,3
yj=0或1,j=1,2,3
求:yj中哪两者为1,另外一个为0时,函数可以取得最小值
求一个程序解决之.任何语言都行.
用Matlab!
可以调用 fmincon函数.
具体代码如下.
function y = fmin(x )
x11=x(1);x12=x(2);x13=x(3);y1=x(4);x21=x(5);x22=x(6);x23=x(7);y2=x(8);x31=x(9);x32=x(10);x33=x(11);y3=x(12);
y=1.5.*x11+0.7.*x12+1.6.*x13+0.85.*y1+0.8.*x21+1.5.*x22+2.2.*x23+1.00.*y2+1.2.*x31+2.3.*x32+1.1.*x33+0.90.*y3;
end %创建最小值函数
function [c ceq] = mycon( x )
c=0;
ceq(1)=x(4).*(x(4)-1);
ceq(2)=x(8).*(x(8)-1);
ceq(3)=x(12).*(x(12)-1);
end %创建非线性约束条件函数.
>> A=[1 1 1 -1.7 0 0 0 0 0 0 0 0;0 0 0 0 1 1 1 -2.9 0 0 0 0;0 0 0 0 0 0 0 0 1 1 1 -2.1;-1 -1 -1 0 0 0 0 0 0 0 0 0;0 0 0 0 -1 -1 -1 0 0 0 0 0;0 0 0 0 0 0 0 0 -1 -1 -1 0];
b=[0;0;0;-1.2;-0.8;-1.5]
>> lb=zeros(1,12);
>> x0=zeros(1,12);
>> fmincon('fmin',x0,A,b,[],[],lb)
结果如下.ans =
0.2056 0.2056 0.2056 0 0.0722 0.0722 0.0722 0 0.3056
0.3056 0.3056 0
顺序是 x11,x12,x13,y1,x21,x22,.y3
>> fmin(ans)
ans =
2.5119
可能有点晚了.不过还是希望能够帮助你.
^.^