Matlab知識點基礎(一)
阿新 • • 發佈:2018-12-25
最近感覺在這上面搜相應的知識點都好睏難,所以自己寫點總結,以免又忘了。
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