MATLAB的线性规划工具
问题描述
某次考试,总分100分.分三种题型:
单选题13题,每题3分,共39分.
多选题10题,每题3.1分,共31分.
判断题12题,每题2.5分,共30分.
交卷之后,只知道分数为79.3,问:单选题、多选题、判断题分别做错了多少?
MATLAB meshz辅助求解
假设单选题、多选题、判断题做错数量分别为x,y,z.则可列方程:
3 x + 3.1 y + 2.5 z = 100 − 79.3 3x + 3.1y + 2.5z = 100-79.3 3x+3.1y+2.5z=100−79.3
3 x + 3.1 y + 2.5 z = 20.7 3x + 3.1y + 2.5z = 20.7 3x+3.1y+2.5z=20.7
上述函数是一个空间平面,如果不理解为什么是空间平面可以参考直线与平面方程的几何表达.
最直接的办法就是把平面绘制出来,找到上面的正整数解,脚本如下:
s = linspace(0, 10, 11);
t = linspace(0, 10, 11);
[ss, tt] = meshgrid (s, t);
x = tt;
y = ss;
z = -(3.*x + 3.1.*y - 20.70)/2.5;
pbaspect ([1 1 1]);
meshz(x, y, z);
patch([0 10 10 0], [0 0 10 10], [0 0 0 0])
camproj('perspective')
xlabel('x');
ylabel('y');
set( gca, 'ydir', 'reverse' )
对应图像:
绿色平面之上的部分就是要搜索的区域.
脚本中x,y变量使用的都是正整数,所以只要确保z也是正整数就可以了,可以查看z的数值:
显然z只能取1,对应的x,y分别为4与2,所以这个问题的解是: x = 4 , y = 2 , z = 1 x = 4, y = 2, z = 1 x