百鸡问题:
今有鸡翁一, 值钱伍; 鸡母一, 值钱三; 鸡雏三, 值钱一。 凡百钱买鸡百只,问鸡翁、母、雏各几何?
利用学过的数学知识求解,并使用MATLAB作为辅助工具求解。
1.列方程组求解
要求1.写出百鸡问题的方程组;
要求2.写出其系数矩阵(A)、常数项构成的常数列向量(b)和增广矩阵(B=[A,b])。
解法:使用行初等变换(rref)求解。
A = [1 1 1;15 9 1]; % 同时扩大3倍
b = [100 300]';
B =[A,b];
%化成最简型
format rat
rref(B)
这里得到一个简化的方程,可以写出来分别求适合的解,也就说这不是唯一解!
2.列表求解
公鸡 | 母鸡 | 小鸡 | 总数 |
---|---|---|---|
? | ? | ? | ? |
特别:公鸡的数量知道了,母鸡的数量也知道了,则根据题意可知:小鸡的数量=100-公鸡-母鸡。
根据题意,可以估算出公鸡的最大值不超过15,母鸡不超过26.
试着把上面的表格求解变成MATLAB程序。
for x=0:15
for y = 0:26
z=100-x-y;
if 15*x+9*y+z==300
sprintf('公鸡=%d,母鸡=%d,小鸡=%d',x,y,z)
end
end
end
矩阵运算
求A-3B
A=[1 2 3;1 4 9;1 8 27];
B=[2 4 5;-3 0 6;-5 2 6];
p=2*A-3*B
求AB和BA
q=A*B
求A^(-1) B,和A\B
k=A^-1 * B
高斯消元
1、高斯消元法的每个步骤:
A = [2 4 1 1 5;-1 -2 -2 1 -4;1 2 -1 2 1];
%第三行和第一行换位
A([1,3],:)=A([3,1],:);
%第一行和第二行相加
A(2,:)=A(2,:)+A(1,:);
%第三行减去两倍的第一行
A(3,:) = A(3,:)-2*A(1,:);
%第二行乘以(-1/3)
A(2,:)=-1/3*A(2,:);
%第1行加上第二行
A(1,:)=A(1,:)+A(2,:);
%第三行乘以1/3加上第二行
A(3,:) = 1/3*A(3,:)-A(2,:)
最终消元结果:
当然这些都是可以通过rref命令来解决的!