Matlab知识点基础(一)

最近感觉在这上面搜相应的知识点都好困难,所以自己写点总结,以免又忘了。

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

在这里插入图片描述

猜你喜欢

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