1. 程式人生 > >Matlab知識點基礎(一)

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

在這裡插入圖片描述