Matlab知识点(二)

百鸡问题

今有鸡翁一, 值钱伍; 鸡母一, 值钱三; 鸡雏三, 值钱一。 凡百钱买鸡百只,问鸡翁、母、雏各几何?

利用学过的数学知识求解,并使用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命令来解决的!

猜你喜欢

转载自blog.csdn.net/Unicorn_wan/article/details/85221558