Matlab編程介紹,循環(huán)結(jié)構(gòu)綜述_第1頁(yè)
Matlab編程介紹,循環(huán)結(jié)構(gòu)綜述_第2頁(yè)
Matlab編程介紹,循環(huán)結(jié)構(gòu)綜述_第3頁(yè)
Matlab編程介紹,循環(huán)結(jié)構(gòu)綜述_第4頁(yè)
Matlab編程介紹,循環(huán)結(jié)構(gòu)綜述_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Matlab軟件與基礎(chǔ)數(shù)學(xué)實(shí)驗(yàn)

MATLAB編程介紹與循環(huán)結(jié)構(gòu)★

MATLAB中每一個(gè)命令都是一個(gè)M-文件?!?/p>

MATLAB中各種命令可以完成許多單一的任務(wù),對(duì)于某些較為復(fù)雜的問(wèn)題,僅靠現(xiàn)有的命令或函數(shù)來(lái)解決,往往是難以達(dá)到目的。為此,要運(yùn)用MATLAB編程語(yǔ)言編制程序,形成M-文件。

程序是使計(jì)算機(jī)完成各項(xiàng)運(yùn)算的命令集,運(yùn)行一個(gè)編制好的程序,計(jì)算機(jī)會(huì)從第一條命令行開(kāi)始,一行接一行地執(zhí)行相應(yīng)的命令,直到終止。

MATLAB作為一種高級(jí)語(yǔ)言,不但可以以命令行的方式完成操作,而且可以像大多數(shù)程序語(yǔ)言一樣具有結(jié)構(gòu)控制語(yǔ)句、輸入輸出語(yǔ)句和面向?qū)ATLAB程序(又稱(chēng)為M-文件)有兩種形式,一種是可直接運(yùn)行的命令文件,另一種是可供調(diào)用的函數(shù)文件,這兩種文件的擴(kuò)展名相同,均為“.m”,故稱(chēng)為M-文件。象編程的能力。

MATLAB編程介紹

MATLAB程序編輯是在編輯窗口(MATLABEditor/Debugger)中進(jìn)行,程序運(yùn)行結(jié)果或錯(cuò)誤信息顯示在在命令窗口(CommandWindows)中。1、編寫(xiě)M-文件的步驟(1)打開(kāi)程序編輯窗口:點(diǎn)擊MATLAB命令窗口工具條上的NewFile圖標(biāo),或點(diǎn)擊命令窗口中的[File]菜單,點(diǎn)擊選項(xiàng)中的New,選擇M-file,就可打開(kāi)MATLAB程序編輯窗口(MATLABEditor/Debugger),用戶(hù)可在窗口中編寫(xiě)、修改程序。(2)保存編寫(xiě)的程序:在程序編寫(xiě)過(guò)程中,或程序編寫(xiě)完成后,點(diǎn)擊工具條上的Save圖標(biāo),或按F2鍵,再選擇文件夾:\Matlab\Work,輸入自己定義的文件名,點(diǎn)擊[保存]保存文件,保存后文件名后自動(dòng)加上“.m”后綴,即為M-文件。注意:★文件名要以字母開(kāi)頭中間不含空格和標(biāo)點(diǎn)符號(hào)且不超過(guò)8個(gè)字符;不能用數(shù)字和專(zhuān)用變量名作為文件名,如1,11,pi,ans,eps等。★

程序通常保存在文件夾:\Matlab\Work中,此路徑為MATLAB軟件默認(rèn)路徑?!锍绦蛉粢娣诺狡渌募A中,則要添加該路徑到MATLAB的路徑設(shè)置中,否則程序不能連接執(zhí)行。

點(diǎn)擊編輯窗工具條上[File]菜單,選擇SetPath..,此時(shí)打開(kāi)路徑設(shè)置窗口,再點(diǎn)擊AddFoider..,選擇你所使用的文件夾(若沒(méi)有則要先新建),選定后該路徑自動(dòng)顯示在列表的第一行或最后一行,再點(diǎn)擊Save保存即可。具體操作:2、運(yùn)行M-文件

運(yùn)行一個(gè)已經(jīng)編寫(xiě)好且存盤(pán)的M-文件有兩種方法:

在MATLAB編輯窗口中對(duì)正在編輯的M-文件,保存后可直接點(diǎn)擊工具條上的Debug中的Run命令運(yùn)行或按F5鍵,即可運(yùn)行當(dāng)前程序,其運(yùn)行結(jié)果或信息顯示在命令窗口,此時(shí),用戶(hù)可以切換到命令窗口進(jìn)行查看,之后可回到編輯窗對(duì)程序進(jìn)行修改、重新保存再次運(yùn)行。方法一:

在MATLAB命令窗口中直接輸入文件名回車(chē),即可運(yùn)行相應(yīng)的M-文件。其運(yùn)行結(jié)果或程序運(yùn)行中的錯(cuò)誤信息等顯示在命令窗口,此時(shí),用戶(hù)若要修改程序則可以切換到編輯窗口進(jìn)行修改,修改后重新保存。方法二:

當(dāng)對(duì)程序進(jìn)行修改保存時(shí),當(dāng)前程序?qū)⒏采w原來(lái)程序,此時(shí)若要想保存為另外的文件,則要點(diǎn)擊工具條上[File]菜單,選擇Saveas..,另取文件名保存即可。注意:例1、分別建立命令文件和函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c。首先建立命令文件并以文件名yy1.m存盤(pán)。clear;%清除工作空間中的變量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中輸入yy1,將會(huì)執(zhí)行該命令文件,執(zhí)行情況為:InputFahrenheittemperature:73c=22.7778程序1:首先建立函數(shù)文件yy2.m。functionc=yy2(f)c=5*(f-32)/9然后在MATLAB的命令窗口調(diào)用該函數(shù)文件。clear;y=input('InputFahrenheittemperature:');x=yy2(y)輸出情況為:InputFahrenheittemperature:70c=21.1111x=21.1111程序2:

MATLAB程序的基本結(jié)構(gòu)

MATLAB提供了三種基本的程序結(jié)構(gòu):順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)。一個(gè)MATLAB程序就是使計(jì)算機(jī)實(shí)現(xiàn)某一類(lèi)功能任務(wù)的命令集。用戶(hù)編制程序時(shí),需要按照解決問(wèn)題的邏輯步驟和求解算法,用MATLAB的語(yǔ)句和函數(shù),按照三種基本結(jié)構(gòu)逐條編寫(xiě),一般一行一條語(yǔ)句,便于調(diào)試和查找錯(cuò)誤。其中功能處理部分是核心,主要是根據(jù)處理問(wèn)題的邏輯步驟,采用循環(huán)迭加、判斷推理、分步計(jì)算等來(lái)解決問(wèn)題。程序一般包含三個(gè)部分:數(shù)據(jù)輸入、功能處理、結(jié)果輸出

程序編寫(xiě)完成后,需要存盤(pán),形成永久性文件,之后可以隨時(shí)對(duì)它進(jìn)行調(diào)用或修改。M-文件中的輸入、輸出方式1、輸入方式s='Anystring!';%輸入字符串(1)程序中直接賦值x=2;%輸入單個(gè)值a=[1,2,3;4,5,6;7,8,0];%輸入矩陣(a為3階方陣)(2)程序運(yùn)行時(shí)賦值變量=input('提示符號(hào)串');格式:功能:

從鍵盤(pán)接收數(shù)據(jù)并賦予等號(hào)左邊變量。其中

'提示符號(hào)串'是在命令窗口中的提示。

y=input('Pleaseinputy=');%提示語(yǔ)句輸入如:x=input('x=');

當(dāng)執(zhí)行到此語(yǔ)句時(shí),暫停程序運(yùn)行,在命令窗口中光標(biāo)將停留在提示符號(hào)串后閃爍,等待從鍵盤(pán)接收數(shù)據(jù)。用戶(hù)從鍵盤(pán)輸入數(shù)據(jù)并按回車(chē)鍵確認(rèn),繼續(xù)程序運(yùn)行。其優(yōu)點(diǎn)是每次運(yùn)行可以輸入不同數(shù)據(jù),實(shí)現(xiàn)人機(jī)對(duì)話。

如果在input函數(shù)調(diào)用時(shí)采用's'選項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:xm=input('What''syourname?','s');2、輸出方式(1)直接輸出x%變量后無(wú)分號(hào)“;”,變量直接輸出disp([a]);%a可以是矩陣、數(shù)組和單個(gè)值(2)格式控制輸出(fprintf命令)fprintf('x=%.3f

y=%.0f\n',a,b);%按指定格式輸出格式:

其中,單引號(hào)內(nèi)為格式說(shuō)明符:%前為提示符,%.3f為數(shù)據(jù)格式符,通常與單引號(hào)后面的數(shù)據(jù)相對(duì)應(yīng),

f指顯示一實(shí)數(shù),.3表示顯示的數(shù)小數(shù)點(diǎn)后3位,小數(shù)點(diǎn)前整數(shù)部分不限。%.0f指顯示一實(shí)數(shù)其小數(shù)部分顯示0位,結(jié)果只顯示整數(shù)部分。\n為換行命令符,即一行顯示結(jié)束后,光標(biāo)自動(dòng)換到下一行。a,b為要顯示的變量,它們與前面的格式符相對(duì)應(yīng)。例:

fprintf('x=%.5fy=%.0f\n',pi,sqrt(2));結(jié)果為:

x=3.14159y=1fprintf('x=%.5fy=%.0f\n',sqrt(2),pi);結(jié)果為:

x=1.41412y=3

x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);例:輸入x,y的值,并將它們的值互換后輸出。a=input('a=');b=input('b=');c=input('c=');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);例:求一元二次方程ax^2+bx+c=0的根。a=1b=2c=3x1=-1+1.4142i,x2=-1-1.4142i結(jié)果為:

若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。3、程序的暫停暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為:pause(延遲秒數(shù))如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到用戶(hù)按任一鍵后程序繼續(xù)執(zhí)行。MATLAB選擇結(jié)構(gòu)1、單項(xiàng)選擇判斷(if-end)結(jié)構(gòu)格式:

if

(condition) commands-1;endcommands-2;作用:

若條件condition成立,則執(zhí)行commands-1,再順序執(zhí)行commands-2;否則,跳過(guò)commands-1,直接執(zhí)行commands-2.例:求任意有限數(shù)組a=[a(1),a(2),…,a(n)]

中數(shù)值最大的元素M以及所在位置k.分析:

這是一個(gè)求n個(gè)實(shí)數(shù)中最大(最?。?shù)的問(wèn)題,可以編制一個(gè)函數(shù)文件,隨時(shí)調(diào)用。首先可以假設(shè)最大數(shù)M=a(1),位置k=1;再?gòu)牡诙€(gè)數(shù)到最后一個(gè)數(shù)分別同M比較,取較大者為M,同時(shí)保留其位置。因此,運(yùn)用循環(huán)加判斷編制程序來(lái)實(shí)現(xiàn)。function[M,k]=yy3(a)

%定義函數(shù)yy3,輸入變量為數(shù)組a,返回值為最大元素M及位置kn=length(a);%獲取數(shù)組的長(zhǎng)度即元素的個(gè)數(shù)nM=a(1);k=1;%將第一個(gè)元素作為最大值賦值給M,位置為1;fori=2:n%從第二個(gè)元素到最后一個(gè)元素依次進(jìn)行ifa(i)>M%比較后續(xù)元素與目前最大值M的大小M=a(i);k=i;%將數(shù)值較大的元素賦值給M,同時(shí)保留位置iend%選擇結(jié)構(gòu)結(jié)束end%循環(huán)結(jié)構(gòu)結(jié)束編寫(xiě)完成后以文件名yy3存盤(pán)(這里是函數(shù)命令程序)。此時(shí),MATLAB函數(shù)庫(kù)中多了個(gè)函數(shù)yy3.m,可進(jìn)行調(diào)用。在命令窗中試運(yùn)行如下:>>a=[1,2.2,pi,-0.8,3.2,0];%任意給定一數(shù)組>>[M,k]=yy3(a)%調(diào)用函數(shù)yy3M=3.2000k=52、多項(xiàng)選擇判斷(if-else-end)結(jié)構(gòu)格式:

if(condition1) commands-1;elseif(condition2)commands-2;elsecommands-3;endcommands-4;作用:

若條件condition1成立,則執(zhí)行commands-1,再轉(zhuǎn)向end,順序執(zhí)行后續(xù)的命令commands-4;否則判斷條件condition2是否成立,若成立,則執(zhí)行commands-2,再轉(zhuǎn)向end執(zhí)行后續(xù)的命令;若條件condition1和條件condition2均不成立,則執(zhí)行命令集commands-3,再順序向下執(zhí)行。例:編寫(xiě)一個(gè)函數(shù)將百分制成績(jī)轉(zhuǎn)換為優(yōu)(A),良(B),中(C),差(D)四等級(jí).分析:

按照通常的等級(jí)劃分,一般90-100分為優(yōu),78-89分為良,60-77分為中,60分以下的為差,因此,可以用多項(xiàng)選擇判斷結(jié)構(gòu)來(lái)實(shí)現(xiàn)。functionjb=dengji(fs)

%定義函數(shù)dengji,輸入變量為分?jǐn)?shù)fs,返回值為等級(jí)A,B,C,Diffs>=90%判斷分?jǐn)?shù)fs是否處在優(yōu)秀級(jí)別上jb=‘A’;%定義為A級(jí)elseiffs>=78%判斷分?jǐn)?shù)fs是否處在良好級(jí)別上jb='B';%定義為B級(jí)elseiffs>=60%判斷分?jǐn)?shù)fs是否處在合格級(jí)別上jb='C';%定義為C級(jí)else%分?jǐn)?shù)fs不處于以上任何級(jí)別上jb='D';%定義為D級(jí)end%選擇結(jié)構(gòu)結(jié)束

編寫(xiě)完成后以文件名dengji存盤(pán)。此時(shí),MATLAB函數(shù)庫(kù)中多了個(gè)函數(shù)dengji.m,可進(jìn)行調(diào)用。在命令窗中試運(yùn)行如下:>>jb=dengji(81)%調(diào)用函數(shù)dengjijb=Bx=input('請(qǐng)輸入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endY例:計(jì)算分段函數(shù)的值。3、switch語(yǔ)句switch語(yǔ)句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語(yǔ)句,其語(yǔ)句格式為:switch表達(dá)式

case表達(dá)式1

語(yǔ)句組1case表達(dá)式2

語(yǔ)句組2……case表達(dá)式m

語(yǔ)句組motherwise

語(yǔ)句組nend

當(dāng)表達(dá)式的值等于表達(dá)式1的值時(shí),執(zhí)行語(yǔ)句組1,當(dāng)表達(dá)式的值等于表達(dá)式2的值時(shí),執(zhí)行語(yǔ)句組2,…,當(dāng)表達(dá)式的值等于表達(dá)式m的值時(shí),執(zhí)行語(yǔ)句組m,當(dāng)表達(dá)式的值不等于case所列的表達(dá)式的值時(shí),執(zhí)行語(yǔ)句組n。當(dāng)任意一個(gè)分支的語(yǔ)句執(zhí)行完后,直接執(zhí)行switch語(yǔ)句的下一句clearn=input('inputn=');switchmod(n,5)case0fprintf('%d是5的倍數(shù)',n)otherwisefprintf('%d不是5的倍數(shù)',n)endinputn=4646不是5的倍數(shù)例:判斷任意給定的整數(shù)n是否為5的倍數(shù),并輸出判斷結(jié)果。price<200沒(méi)有折扣200≤price<5003%折扣500≤price<10005%折扣1000≤price<25008%折扣2500≤price<500010%折扣5000≤price14%折扣例:某商場(chǎng)對(duì)顧客所購(gòu)買(mǎi)的商品實(shí)行打折銷(xiāo)售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來(lái)表示):輸入所售商品的價(jià)格,求其實(shí)際銷(xiāo)售價(jià)格。price=input('請(qǐng)輸入商品價(jià)格');switchfix(price/100)case{0,1}%價(jià)格小于200rate=0;case{2,3,4}%價(jià)格大于等于200但小于500rate=3/100;casenum2cell(5:9)%價(jià)格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%價(jià)格大于等于1000但小于2500rate=8/100;casenum2cell(25:49)%價(jià)格大于等于2500但小于5000rate=10/100;otherwise%價(jià)格大于等于5000rate=14/100;endprice=price*(1-rate)%輸出商品實(shí)際銷(xiāo)售價(jià)格MATLAB循環(huán)結(jié)構(gòu)與應(yīng)用

循環(huán)結(jié)構(gòu)是MATLAB程序中最常用的結(jié)構(gòu)之一,它是讓計(jì)算機(jī)按照一定的條件多次重復(fù)執(zhí)行某一命令集,從而實(shí)現(xiàn)諸如累加、迭代、分層計(jì)算等功能。MATLAB軟件提供了兩種循環(huán)結(jié)構(gòu):有限次循環(huán)for-end結(jié)構(gòu)和條件循環(huán)while-end結(jié)構(gòu)。1、有限次循環(huán)(for-end)結(jié)構(gòu)for

n=n1:step:n2

commands-1

end

commands-2格式:其中n為循環(huán)變量(自己定義),n1為起始值,step為步長(zhǎng),n2為結(jié)束值;commands-1為循環(huán)體(循環(huán)模塊),commands-2為后序命令。

循環(huán)變量n從n1開(kāi)始,執(zhí)行commands-1,遇到end時(shí)n自動(dòng)增加step步長(zhǎng),同時(shí)與n2比較,當(dāng)n不超過(guò)n2時(shí)重復(fù)執(zhí)行commands-1;當(dāng)n超過(guò)n2時(shí)轉(zhuǎn)向執(zhí)行commands-2。當(dāng)步長(zhǎng)為1時(shí),格式中step可以省略,即為forn=n1:n2格式。在設(shè)計(jì)for-end循環(huán)結(jié)構(gòu)時(shí),應(yīng)在循環(huán)模塊內(nèi)充分利用循環(huán)變量的變化規(guī)律,開(kāi)展相關(guān)的運(yùn)算。另外,結(jié)構(gòu)中for與end要成對(duì)出現(xiàn)。作用:例:求n(n=100)個(gè)奇數(shù)的和:s=1+3+5+…+(2n-1).

這是一個(gè)逐個(gè)累加求和的過(guò)程,從1開(kāi)始存放在和s中,再累加下一個(gè)奇數(shù)之后再取代和s,依次類(lèi)推,直到累加到第n個(gè)奇數(shù)。因此,使用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。分析:clear;clc;n=100;%賦值給定奇數(shù)的個(gè)數(shù)

s=0;%設(shè)定存放和的變量s并賦初值0fori=1:n%定義循環(huán)變量i從1到n,以1為步長(zhǎng),即為奇數(shù)序號(hào)s=s+(2*i-1);%先計(jì)算右端累加后再賦給左端的變量sfprintf('i=%.0f,s=%.0f\n',i,s)%逐行顯示出累加求和的過(guò)程end%循環(huán)結(jié)構(gòu)結(jié)束

是否可以(1)直接用從1開(kāi)始的奇數(shù)作為循環(huán)變量?(2)不需要顯示求和過(guò)程,只顯示最后結(jié)果?如果可以,請(qǐng)修改上述程序并運(yùn)行。問(wèn)題:n=input('inputn:=');f(1)=1;f(2)=1;fork=3:nf(k)=f(k-1)+f(k-2);endf(n)例:求裴波拉奇數(shù)列的第n項(xiàng)(n>2)n:=10,f(10)=55n:=44,f(44)=701408733例:求正整數(shù)n的階乘:p=1×2×3×…×n=n!,并求出n=20時(shí)的結(jié)果。分析:

這是一個(gè)逐次乘積的過(guò)程,從1開(kāi)始存放在積p中,再乘以下一個(gè)正整數(shù)之后再取代積p,依次類(lèi)推,直到乘至第n個(gè)數(shù)。因此,使用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。

clear;clc;n=20;%賦值給定正整數(shù)

p=1;%設(shè)定存放階乘的變量p并賦初值1

fori=1:n%定義循環(huán)變量i從1到n,以1為步長(zhǎng),即連續(xù)正整數(shù)

p=p*i;%先計(jì)算右端乘積后再賦給左端的變量pfprintf('i=%.0f,p=%.0f\n',i,p)%逐行顯示出i!end%循環(huán)結(jié)構(gòu)結(jié)束問(wèn)題:

是否可以考慮利用input命令對(duì)n進(jìn)行賦值,隨時(shí)改變其大小。如果可以,請(qǐng)修改上述程序并運(yùn)行。例:根據(jù)麥克勞林公式可以得到e≈1+1+1/2!+1/3!+…+1/n!,試求e的近似值。分析:

這個(gè)問(wèn)題可以分解為,從1開(kāi)始的正整數(shù)階乘的倒數(shù)和的累加運(yùn)算,累加結(jié)果存放在初始值為1的變量中。因此,對(duì)上例進(jìn)行修改來(lái)實(shí)現(xiàn)。

clear;clc;n=10;%賦值給定正整數(shù)p=1;%設(shè)定存放階乘的變量p并賦初值1s=1;%設(shè)定存放累加和的變量s并賦初值1fori=1:n%定義循環(huán)變量i從1到n,以1為步長(zhǎng),即連續(xù)正整數(shù)p=p*i;%先計(jì)算右端乘積后再賦給左端的變量ps=s+1/p;%先計(jì)算右端階乘倒數(shù)的累加后再賦給左端的變量sfprintf('i=%.0f,s=%.8f\n',i,s)%逐行顯示出e的近似值end%循環(huán)結(jié)構(gòu)結(jié)束問(wèn)題:

如何有效地控制e的近似值的精度,或者說(shuō)如何修改程序使其根據(jù)近似值的精度要求自動(dòng)控制循環(huán)次數(shù)?2、條件循環(huán)(while-end)結(jié)構(gòu)格式:

while(conditions) commands-1;

endcommands-2;

當(dāng)條件conditions為真時(shí),執(zhí)行commands-1,當(dāng)遇到end時(shí),自動(dòng)檢測(cè)條件;當(dāng)條件conditions不滿(mǎn)足時(shí),轉(zhuǎn)向執(zhí)行commands-2。在設(shè)計(jì)while-end循環(huán)結(jié)構(gòu)時(shí),應(yīng)在循環(huán)模塊內(nèi)有修改conditions的部分,確保在執(zhí)行了一定次數(shù)之后可以結(jié)束循環(huán);否則,就成了“死循環(huán)”,即無(wú)限次重復(fù)執(zhí)行循環(huán)。另外,結(jié)構(gòu)中while與end要成對(duì)出現(xiàn)。作用:例:對(duì)于數(shù)列,求其前n項(xiàng)和不超過(guò)1000時(shí)的n的值及和.分析:這個(gè)問(wèn)題就是求不等式從1開(kāi)始的連續(xù)正整數(shù)開(kāi)方的累加。因此,運(yùn)用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn),的整數(shù)解,而和s為但每次累加前要判斷大小。clear;clc;n=0;%設(shè)定正整數(shù)并賦初值0s=0;%設(shè)定存放累加和的變量s并賦初值0whiles<=1000%用累加和s與1000進(jìn)行比較作為循環(huán)條件n=n+1;%改變n為連續(xù)正整數(shù)s=s+sqrt(n);%先計(jì)算右端開(kāi)方數(shù)的累加后再賦給左端的變量sfprintf('n=%.0f,s=%.4f\n',n,s)%逐行顯示正整數(shù)及部分和end%循環(huán)結(jié)構(gòu)結(jié)束問(wèn)題:

從結(jié)果上可以看到,最后一行的結(jié)果并不是我們所要求解的答案,而倒數(shù)第二行則是所求問(wèn)題的解。這是為什么?如何修改程序來(lái)避免這種情況?例:小猴吃桃問(wèn)題

有一天小猴摘下了若干個(gè)桃子,當(dāng)即吃掉了一半,又多吃了一個(gè).第二天接著吃了剩下的一半,又多吃了一個(gè)以后每天都是吃掉尚存的桃子的一半零一個(gè).到第十天早上,小猴準(zhǔn)備吃桃子時(shí),看到只剩下1

個(gè)桃子了.問(wèn)小猴第一天共摘下了多少個(gè)桃子?

解:設(shè)第k天的桃子數(shù)為pk,(k=1,···,10)則規(guī)律為k=10;p(k)=1;whilek>=2k=k-1;p(k)=2*(p(k+1)+1);endp(1)Pk-1=2(pk+1)ans=1534例:根據(jù)e≈1+1+1/2!+1/3!+…+1/n!求e的近似值,要求精確到小數(shù)點(diǎn)后8位。分析:這里不能給定n的大小,但注意到第n次近似值和第n-1次近似值的差:?,F(xiàn)要精確到小數(shù)點(diǎn)后8位,則只需要因此,可以以此為條件運(yùn)用條件循環(huán)來(lái)實(shí)現(xiàn)。

,注意:在MATLAB中用科學(xué)記數(shù)法1.0e-8來(lái)表示。clear;clc; p=1;%設(shè)定存放階乘的變量p并賦初值1s=1;%設(shè)定存放累加和的變量s并賦初值1r=1;%設(shè)定前后兩次近似值的誤差r并賦初值1k=0;%設(shè)定構(gòu)造連續(xù)正整數(shù)的變量k賦初值0又為循環(huán)次數(shù)whiler>=1.0e-8%根據(jù)近似值的精度r大小來(lái)定義條件循環(huán)k=k+1;%轉(zhuǎn)換下一個(gè)正整數(shù),或開(kāi)始統(tǒng)計(jì)循環(huán)次數(shù)p=p*k;%計(jì)算k的階乘pr=1/p;%計(jì)算前后兩次近似值的誤差rs=s+r;%計(jì)算e的近似值sfprintf('k=%.0f,s=%.8f\n',k,s)%逐行顯示出e的近似值end%循環(huán)結(jié)構(gòu)結(jié)束MATLAB程序流程控制

在編寫(xiě)程序過(guò)程中,根據(jù)問(wèn)題求解的要求,往往需要在一定條件下跳出當(dāng)前循環(huán),或終止程序運(yùn)行,或暫停程序運(yùn)行等,這也就是在編制程序過(guò)程中對(duì)程序流程進(jìn)行控制。MATLAB軟件提供了相應(yīng)流程控制語(yǔ)句:break、return和pause等。1、break語(yǔ)句break語(yǔ)句導(dǎo)致包含break

指令的最內(nèi)層while或for循環(huán)的終止。通常是根據(jù)循環(huán)內(nèi)部另設(shè)的某種條件是否滿(mǎn)足來(lái)決定是否跳出循環(huán),因此,常和if判斷一起使用。在很多情況下,這樣做是十分必要的。格式:

while

(conditions-1)

……if

(conditions-2)break;end……

endcommands;作用:

當(dāng)執(zhí)行到if模塊且條件conditions-2為真時(shí),執(zhí)行break語(yǔ)句,程序則跳出當(dāng)前while循環(huán),直接執(zhí)行循環(huán)結(jié)構(gòu)外的commands.a=3;b=6;fori=1:3b=b+1;ifi>2break%當(dāng)if條件滿(mǎn)足時(shí)不再執(zhí)行循環(huán)

enda=a+2end分析下列程序,說(shuō)明運(yùn)行結(jié)果及原因運(yùn)行結(jié)果:a=5a=72、return語(yǔ)句

return語(yǔ)句導(dǎo)致程序終止運(yùn)行,其結(jié)果對(duì)普通程序是提前結(jié)束運(yùn)行,對(duì)于函數(shù)命令程序則是結(jié)束該函數(shù)程序,并返回到調(diào)用函數(shù)處。該語(yǔ)句通常和if判斷一起使用。格式:

if

(conditions)return;end作用:

當(dāng)執(zhí)行到if模塊且條件conditions為真時(shí),執(zhí)行return語(yǔ)句,程序則被終止,提前結(jié)束程序的運(yùn)行。3、pause語(yǔ)句

pause

語(yǔ)句使程序運(yùn)行暫停,等待用戶(hù)按任意鍵繼續(xù)。Pause

語(yǔ)句在程序調(diào)試或查看中間結(jié)果時(shí)經(jīng)常使用,它有兩種用法:★

直接使用:pause

作用:程序執(zhí)行此語(yǔ)句時(shí),暫停執(zhí)行程序,等待用戶(hù)從鍵盤(pán)按任意鍵繼續(xù)運(yùn)行?!锸褂冒磿r(shí)間暫停形式:pause(n)

(其中n為暫停時(shí)間秒數(shù))作用:程序執(zhí)行此語(yǔ)句時(shí),暫停n秒后繼續(xù)執(zhí)行程序,這里n為正的小數(shù)或整數(shù),代表暫停時(shí)間。它通??梢杂脕?lái)放慢程序運(yùn)行展示內(nèi)部過(guò)程,可實(shí)現(xiàn)動(dòng)畫(huà)效果。例:Fibonacci

數(shù)組中第一個(gè)大于10000的元素。分析:

這是一個(gè)按遞推公式所生成的序列,每個(gè)元素為其前兩個(gè)元素之和,數(shù)列增加很快。因此,通過(guò)循環(huán)結(jié)構(gòu)來(lái)逐步生成數(shù)列的元素,并同時(shí)和10000比較,超過(guò)時(shí)終止循環(huán)。n=100;%給定一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論