??講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數(shù)學(xué)建模清風(fēng)主講》。?
MATLAB教程新手入門篇(數(shù)學(xué)建模清風(fēng)主講,適合零基礎(chǔ)同學(xué)觀看)_嗶哩嗶哩_bilibili
節(jié)選自?第4章:MATLAB程序流程控制
(1)不使用sum函數(shù),計算行向量x中所有元素的和。 ?
x = [5 8 9 1 4 3 7];
s = 0; % 初始化最終的求和結(jié)果為0
for ii = x
s = s + ii;
end
disp(s)
在這個示例中,for 循環(huán)遍歷了向量 x 中的每個元素,將它們逐個加到變量 s 中,最終得到了所有元素的和。
思考:如果x是一個列向量,左側(cè)的代碼輸出的s是什么,應(yīng)該如何修改代碼?
(2)計算當(dāng)n等于100時,下面式子的結(jié)果:
n = 100; % 設(shè)置n的值
y = 0; % 初始化y的值為0
for k = 1:n
% 計算每一項并累加到y(tǒng)中
y = y + 1 / (k^2);
end
disp(y)
在這個示例中,for 循環(huán)從 1 到 n 遍歷每個整數(shù) ? k,并計算每一項 1 / (k^2),然后將它們累加到變量 y 中。最終,y 的值將是整個表達(dá)式的結(jié)果。
思考:使用上一章的知識點(diǎn),如何通過一行代碼直接計算y的值?
參考答案: y = sum(1./(1:100).^2)
(3)計算當(dāng)n從1一直取到100時,上一小問式子的計算結(jié)果,并將計算結(jié)果保存到一個長度為100的行向量S中(S中第i個元素表示y(i)的結(jié)果)。
S = zeros(1, 100);
for n = 1:100
y = 0; % 初始化y的值為0
for k = 1:n
y = y + 1 / (k^2);
end
S(n) = y;
end
disp(S)
這里使用了循環(huán)的嵌套,上一問的代碼可用來求出任意一個具體的n對應(yīng)的y。因此,這一問我們只需要使用循環(huán)讓n從1遍歷到100,并將每次的計算結(jié)果保存到向量S中。
請大家思考:(1)y = 0;這行代碼能否放在循環(huán)的外面? (2)能否優(yōu)化上面的代碼,使得通過一次循環(huán)就得到S。
這兩個問題留作本章最后的課后習(xí)題。
(4)計算從公元1年到公元9999年間,有多少個閏年。閏年的判讀條件是年份能夠被4整除,但不能被100整除,或者年份能夠被400整除。
% 初始化閏年計數(shù)器
leap_year_count = 0;
% 循環(huán)遍歷從公元1年到公元9999年的每一年
for year = 1:9999
% 檢查是否為閏年的條件
if (mod(year, 4) == 0 && mod(year, 100) ~= 0) || (mod(year, 400) == 0)
% 如果是閏年,增加計數(shù)器
leap_year_count = leap_year_count + 1;
end
end
disp(leap_year_count)
(5)一個三位正整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù),例如:1^3 + 5^3+ 3^3 = 153,則153是水仙花數(shù)。請你找出所有的水仙花數(shù)并將其保存到向量S中。
% 初始化存儲水仙花數(shù)的向量S為空
S = [];
% 循環(huán)遍歷所有的三位整數(shù)
for num = 100:999
% 拆解數(shù)字
digit1 = floor(num / 100); % 百位
digit2 = floor(mod(num, 100) / 10); % 十位
digit3 = mod(num, 10); % 個位
% 檢查是否為水仙花數(shù)的條件
if num == digit1^3 + digit2^3 + digit3^3
S = [S, num]; % 若是水仙花數(shù),則添加到向量S中
end
end
% 顯示所有的水仙花數(shù)
disp(S)
(6)斐波那契數(shù)列的遞推公式為
求F(30).
n = 30;
F = ones(1,n); % 初始化用來保存中間計算結(jié)果的向量全為1
for k = 3:n
F(k) = F(k-1) + F(k-2);
end
Fn = F(n)
% 832040
(7)生成一個5行8列的矩陣,矩陣中每個元素都是在區(qū)間[1, 10]上取值的隨機(jī)整數(shù)。接下來請循環(huán)每一列,若發(fā)現(xiàn)同一列的五個元素各不相同,則保留該列;若該列中有重復(fù)的元素則刪除該列。
% 生成隨機(jī)整數(shù)矩陣
matrix = randi([1, 10], 5, 8);
% 輸出生成的隨機(jī)整數(shù)矩陣
disp(matrix)
% 初始化新矩陣,用于存儲五個元素各不相同的列
new_matrix = [];
% 循環(huán)遍歷每一列
for column = matrix
% 使用unique函數(shù)取當(dāng)前列的唯一值
unique_column = unique(column);
% 若取完唯一值后還是5個元素,則添加到新矩陣中
if length(unique_column) == 5
new_matrix = [new_matrix, column];
end
end
disp(new_matrix) % 顯示新矩陣的結(jié)果
思考題:你能不使用循環(huán)語句求解這個問題嗎?
參考答案:文章來源:http://www.zghlxwxcb.cn/news/detail-850139.html
matrix(:,all(diff(sort(matrix))))文章來源地址http://www.zghlxwxcb.cn/news/detail-850139.html
到了這里,關(guān)于MATLAB知識點(diǎn):for循環(huán)的七道經(jīng)典例題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!