问题一
建立模型:线性规划模型
符号说明
符号 | 符号说明 |
x1 | 动物饲料 |
x2 | 谷物饲料 |
min | 目标值 |
列出约束条件与目标函数
约束条件:
目标函数: min=x1*0.30+x2*0.18
需要调用linprog函数,使用方法参照A题。
代码实现:
clc;
clear;
c = [0.3 0.18]; % min = 0.3*x1 + 0.18*x2
A = [-4 1]; % x1/(x1 + x2) > 0.2 化简
b = [0];
Aeq = [1 1]; % 一天的饲料量 100 * 0.5
beq = 500;
vlb = [0; 0];
vub = [ ; 6000./7]; % [0 0] <= [x1, x2] <= [+∞, 6000/7]
[x, val] = linprog(c, A, b, Aeq, beq, vlb, vub)
运行结果:
Optimization terminated.
x =
100.0000
400.0000
val =
102.0000
问题二
建立模型:平衡运输问题的数学模型
1、符号说明
符号 | 符号说明 |
运往 的运费 | |
运往 的供应 | |
地的产量 | |
地的销量 |
代码实现:
clc;
clear;
c=[4,12,4,11;2,10,3,9;8,5,1,6];
c=c'; c=c(:) ; %取c的转置;c取矩阵内所有数值
Aeq=zeros(7,12); %将a赋值为7*12的零矩阵%
for i=1:3
Aeq(i,4*i-3:4*i)=1;
Aeq (i+3,i:4:12)=1; Aeq(7,4:4:12)=1;
%等式系数向量
end
beq=[16;10;22;8;14;12;14];
lb=zeros(12,1);intcon=1:12; %lu取12*1的零矩阵;intcon从1取到12%
[x,y]=intlinprog(c,intcon,[],[], Aeq, beq,lb,[]);
x=reshape(x,[1,12]),y %重新调整矩阵的行数、列数%
运行结果:
x =
0 0 12 4 8 0 0 2 0 14 0 8
y =
244
(注:x的12*1矩阵代表A1、A2、A3分别运往B1、B2、B3、B4的量(可理解为3*4矩阵))
问题三
建立模型:多元回归分析模型
模型建立与求解
在matlab中创建txt文件(这里命名为test)并输入(可作为附件提交):
1 135.0 13.70 12.68 80.32 0.16 16 102.5 17.48 15.13 73.35 0.19
2 130.0 18.09 17.51 83.65 0.26 17 100.0 15.73 14.41 68.75 0.13
3 137.5 13.43 21.73 76.18 0.19 18 97.5 12.16 12.55 61.38 0.15
4 140.0 16.15 16.10 84.09 0.19 19 95.0 13.04 11.15 58.41 0.13
5 142.5 14.67 15.48 81.72 0.16 20 92.5 13.03 14.87 69.55 0.16
6 127.5 10.90 10.76 70.84 0.09 21 90.0 12.40 10.45 59.27 0.14
7 125.0 13.70 12.68 80.32 0.16 22 87.5 15.22 12.03 46.35 0.19
8 122.5 21.49 18.00 78.78 0.28 23 85.0 13.39 11.83 52.41 0.21
9 120.0 15.06 15.70 70.60 0.18 24 82.5 12.53 11.99 52.38 0.16
10 117.5 13.48 14.07 72.60 0.20 25 80.0 16.30 12.33 55.99 0.16
11 115.0 15.28 15.35 79.83 0.22 26 78.0 14.07 12.04 50.66 0.21
12 112.5 15.01 13.84 68.59 0.14 27 75.0 16.50 13.12 61.61 0.11
13 110.0 17.39 16.44 74.59 0.21 28 72.5 18.44 13.54 55.94 0.18
14 107.5 18.03 16.49 77.11 0.19 29 70.0 11.80 11.73 52.75 0.13
代码:
clc ;
clear ;
n=29;m=4;
q=load('test.txt');
x=[q(:,1:6);15 105.0 13.75 13.57 79.80 0.14;q(:,7:12);]
y=[x(:,2)];
x1=[x(:,3)];
x2=[x(:,4)];
x3=[x(:,5)];
x4=[x(:,6)];
X=[ones(n,1),x1,x2,x3,x4]
[b,bint,r,rint,s]=regress(y,X);
s2=sum(r.^2)/(n-m-1);
b,bint,s,s2
rcoplot(r,rint)
运行结果:
得到残差图,此时可见第15与第20、22点是异常点,于是删除上述三点,对其进行优化,再次进行回归得到改进后的回归模型的系数、系数置信区间与统计量。
数据处理后代码:
clc ;
clear;
n=26;m=4;
q=load('test.txt');
q(1:4,7:12)
q(6,7:12)
q(8:14,7:12)
q1=[q(1:4,7:12);q(6,7:12);q(8:14,7:12)]
x=[q(:,1:6);q1;]
y=[x(:,2)];
x1=[x(:,3)];
x2=[x(:,4)];
x3=[x(:,5)];
x4=[x(:,6)];
X=[ones(n,1),x1,x2,x3,x4]
[b,bint,r,rint,s]=regress(y,X);
s2=sum(r.^2)/(n-m-1);
b,bint,s,s2
rcoplot(r,rint)
运行结果:
综上可得,可以通过多元回归分析,用四种微量元素来较好地预测血红蛋白。
(注:以上仅为解析,并不是评分标准)