最近感觉在这上面搜相应的知识点都好困难,所以自己写点总结,以免又忘了。
1、循环的总结
1.1、编写MATLAB程序,计算1到100的和:
% for 循环
s=0;
for i = 1:1:100 %这里分别是初始值:间隔:终止值
s = s+i;
end
s
% while 循环
s1 =0;
i = 0;
while i<=100
s1 = s1+i;
i = i+1;
end
s1
1.2、编写C++程序,计算1到100的和
#include<iostream>
using namespace std;
int main(){
int i=1,sum=0;
while(i<100){
sum+=i;
i++;
}
comt<<"1到100的累加和为:"<<sum<<endl;
return 0;
}
2、鸡兔同笼问题
今有雉、兔同笼,上有三十五头,下有九十四足。问:雉、兔各几何?答曰:雉二十三,兔一十二。
问题1.根据下面的中国古代算法编写一个MATLAB程序。
术曰:上置头,下置足,半其足,以头除足,以足除头,即得。
h=35; % 上置头
f=94; % 下置足
f=f/2; % 半其足
f=f-h; % 以头除足
h=h-f; % 以足除头
% 输出结果,两种不同的输出
disp('鸡的数量:');
disp(h);
disp('兔子的数量:');
disp(f);
sprintf('鸡的数量:%d,兔子的数量:%d,',h,f)
问题2.利用学过的数学知识总结鸡兔同笼问题的求解方法,并使用MATLAB作为辅助工具求解。
1.列方程组求解
要求1.写出鸡兔同笼问题的方程组
要求2.写出其系数矩阵(A)、常数项构成的常数列向量(b)和增广矩阵(B=[A,b])
解法1.使用克莱姆法则求解。计算行列式的值(det)
% 克莱默法则求解
A=[1 1;2 4];
b=[35;94];
B=[A b];
for i=1:2 %循环
b0 = A;
b0(:,i)=b; %每一次替换相应得列
a(i)=det(b0)/det(A); %克莱姆求解公式
end
a
解法2.使用行初等变换(rref)求解。
%化行最简型
rref(B)
解法3.使用系数矩阵的逆(inv、A^(-1))求解。
%求逆矩阵(inv,A^-1)
A=[1 1;2 4];
b=[35;94];
B=[A b];
inv(A)*b %求解
解法4.使用系数矩阵左除(A\)求解。
%左除法
A=[1 1;2 4];
b=[35;94];
B=[A b];
A\b
3、用一个matlab程序来解决这个问题:
for ji=0:35 % 鸡的数量是0~35
for tuzi =0:35 %对于鸡的一个特定值,兔子的数量也是0~35
if 2*ji+4*tuzi==94 && ji+tuzi==35
sprintf('鸡的数量为:%d,兔子的数量为:%d,',ji,tuzi)
end
end
end