Matlab知識點(二)
阿新 • • 發佈:2018-12-25
百雞問題:
今有雞翁一, 值錢伍; 雞母一, 值錢三; 雞雛三, 值錢一。 凡百錢買雞百隻,問雞翁、母、雛各幾何?
利用學過的數學知識求解,並使用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命令來解決的!