版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
浙江大學(xué)城市學(xué)院實(shí)驗(yàn)報(bào)告課程名稱(chēng)數(shù)學(xué)建模(II)實(shí)驗(yàn)項(xiàng)目名稱(chēng)實(shí)驗(yàn)三Matlab程序設(shè)計(jì)學(xué)生姓名專(zhuān)業(yè)班級(jí)學(xué)號(hào)實(shí)驗(yàn)成績(jī)指導(dǎo)老師(簽名)日期實(shí)驗(yàn)?zāi)康暮鸵?、掌握M
atlab特有的M文件的設(shè)計(jì);2、掌握并能熟練應(yīng)用關(guān)系運(yùn)算、邏輯運(yùn)算、程序的控制結(jié)構(gòu);實(shí)驗(yàn)預(yù)備知識(shí)利用MATLAB的命令窗口,可以完成較為簡(jiǎn)單的運(yùn)算,但遇到較為復(fù)雜的問(wèn)題時(shí),僅靠命令窗口來(lái)解決可能會(huì)非常繁瑣,這時(shí)我們就要考慮使用MATLAB的程序設(shè)計(jì)。MATLAB提供了一個(gè)完善的程序設(shè)計(jì)語(yǔ)言環(huán)境,使我們能方便地編寫(xiě)復(fù)雜的程序,完成各種復(fù)雜的計(jì)算。MATLAB語(yǔ)言在形式上與C語(yǔ)言相似,但它的編程效率比C語(yǔ)言高得多,因?yàn)橛肕ATLAB語(yǔ)言編程,不需要事先定義變量,不需要考慮數(shù)據(jù)類(lèi)型,系統(tǒng)會(huì)自動(dòng)把所有的數(shù)據(jù),包括標(biāo)量、向量、字符、字符串等統(tǒng)一處理成矩陣,矩陣的大小是根據(jù)需要?jiǎng)討B(tài)變化。本實(shí)驗(yàn)中我們主要介紹MATLAB類(lèi)似于其它高級(jí)語(yǔ)言的關(guān)系運(yùn)算、邏輯運(yùn)算、程序的控制結(jié)構(gòu),以及MATLAB特有的M-文件。關(guān)系運(yùn)算是指對(duì)兩個(gè)量之間的大小比較,MATLAB提供了6個(gè)關(guān)系運(yùn)算符,如表3.1所示。表3.1>大于<小于>=大于或等于<=小于或等于==等于~=不等于若關(guān)系運(yùn)算比較兩個(gè)數(shù)值,則當(dāng)關(guān)系成立時(shí),結(jié)果為1(表示真),否則為0(表示假)。進(jìn)行關(guān)系運(yùn)算的兩個(gè)量也可以是具有相同格式的矩陣(事實(shí)上,若比較的是兩個(gè)數(shù),這兩個(gè)數(shù)可以看作為兩個(gè)1×1矩陣),此時(shí)兩矩陣的所有對(duì)應(yīng)位置的元素作關(guān)系運(yùn)算,最終的結(jié)果是由各對(duì)應(yīng)元素進(jìn)行關(guān)系運(yùn)算后的結(jié)果“0”和“1”組成的矩陣,格式與比較矩陣相同。>>a1=5>8a1=0>>a2=[123;456];a3=[654;321];>>a4=a2<=a3%兩矩陣進(jìn)行關(guān)系運(yùn)算。a4=111000>>a5=a2>=3%矩陣與標(biāo)量間的關(guān)系運(yùn)算是指矩陣的每個(gè)元素與該標(biāo)量進(jìn)行關(guān)系運(yùn)算。a5=001111MATLAB提供了3各邏輯運(yùn)算符,如下表3.2所示:表3.2&邏輯與|邏輯或~邏輯非邏輯運(yùn)算將每個(gè)非零元素當(dāng)作1(真)來(lái)處理。同關(guān)系運(yùn)算一樣,它也可以作用于格式相同的矩陣,運(yùn)算結(jié)果為由“0”和“1”組成的矩陣。>>b1=3&0,b2=3|0,b3=~(2>=3)%數(shù)值的邏輯運(yùn)算。b1=0b2=1b3=1>>b4=[-2-10;123];b5=[135;-1-3-5];>>b6=(b4>-2)&(b5<=3),b7=~(b5>=b4|b4<0)%矩陣間的邏輯運(yùn)算。b6=010111b7=000111除上述的關(guān)系運(yùn)算符和邏輯運(yùn)算符之外,MATLAB還提供了大量的關(guān)系和邏輯函數(shù),最常見(jiàn)的有函數(shù)any(A)、all(A)以及異或運(yùn)算函數(shù)xor(A,B)。若矩陣A的某列中有非零元素,則any(A)的關(guān)于此列的值為1,否則為0。若矩陣A的某列中所有元素非零,all(A)的關(guān)于此列的值為1,否則為0。>>c=[123;010];>>c1=any(c),c2=all(c)c1=111 %矩陣c的每一列中都有非零元素。c2=010 %矩陣c中只有第二列中所有元素非零。MATLAB程序的控制結(jié)構(gòu)有順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種。順序結(jié)構(gòu)較為簡(jiǎn)單,即根據(jù)語(yǔ)句的書(shū)寫(xiě)順序,從上到下按行執(zhí)行,執(zhí)行完所有語(yǔ)句后結(jié)束程序運(yùn)行。我們這里主要介紹循環(huán)結(jié)構(gòu)的控制流語(yǔ)句for、while和選擇結(jié)構(gòu)的控制流語(yǔ)句if、switch,這四個(gè)語(yǔ)句均以end結(jié)束。for循環(huán)語(yǔ)句的一般格式為: for循環(huán)變量=冒號(hào)表達(dá)式 循環(huán)體end其中的循環(huán)體可以是一條語(yǔ)句或命令,也可以是由逗號(hào)、分號(hào)隔開(kāi)的若干語(yǔ)句或命令。冒號(hào)表達(dá)式用來(lái)控制循環(huán)的次數(shù),對(duì)于由冒號(hào)表達(dá)式確定的每一個(gè)循環(huán)變量的值,循環(huán)體中的所有語(yǔ)句都被重復(fù)執(zhí)行。我們利用for循環(huán)來(lái)計(jì)算自然數(shù)1~5的階乘。>>d=zeros(1,5);%開(kāi)辟存放各階乘的地址,MATLAB可動(dòng)態(tài)調(diào)節(jié)矩陣的格式,故只使用后面的語(yǔ)句結(jié)果也是將各階乘存放到矩陣d中,但預(yù)先開(kāi)辟空間可節(jié)約運(yùn)行時(shí)間。>>e=1;%對(duì)乘積因子變量e賦初值。>>fori=1:5%循環(huán)變量i從1一直到5,步長(zhǎng)為1。d(i)=e*i;%此for循環(huán)的循環(huán)體包含兩個(gè)語(yǔ)句,此句作用是求i的階乘并存放在d(i)處且結(jié)果不顯示(不顯示可節(jié)約運(yùn)行時(shí)間)。e=d(i);%改變e的值且結(jié)果不顯示。end%結(jié)束for循環(huán)。>>disp(d)%顯示各階乘。12624120前述for語(yǔ)句一般格式中的“冒號(hào)表達(dá)式”部分也可以是任意的向量或矩陣的變量名,此時(shí),循環(huán)變量依次取向量的值或按矩陣的列依次取值。>>f1=[135];f2=[135;468];i=1;j=1;>>forg=f1f3(i)=g;i=i+1;%取出f1的各分量的值。end>>forh=f2f4(j)=h(2)*h(1);j=j+1;%求各列元素的乘積。end>>disp(f3)135>>disp(f4)41840for循環(huán)可以嵌套使用,如以下程序可以生成3×5Hilbert矩陣。>>k=zeros(3,5);>>fori=1:3forj=1:5k(i,j)=1/(i+j-1);endend>>formatrat%改變顯示格式。>>kk=11/21/31/41/51/21/31/41/51/61/31/41/51/61/7 >>format%恢復(fù)顯示格式。 for循環(huán)主要用于循環(huán)次數(shù)固定的情形,而很多實(shí)際計(jì)算中循環(huán)次數(shù)往往并不能預(yù)先確定,此時(shí)我們可以使用while循環(huán)語(yǔ)句。while循環(huán)語(yǔ)句的一般格式為: while條件 循環(huán)體end“條件”即執(zhí)行循環(huán)的條件,用來(lái)控制循環(huán)的次數(shù),它可以是關(guān)系表達(dá)式或邏輯表達(dá)式。當(dāng)條件成立(即為1)時(shí),循環(huán)體被執(zhí)行,直到條件不成立(即為0)時(shí),結(jié)束循環(huán)。我們利用while循環(huán)來(lái)尋找階乘小于100萬(wàn)的最大的自然數(shù)。>>m=1;>>whileprod(1:m)<1000000%prod為向量的連乘函數(shù)。m=m+1;end>>m=m-1%結(jié)束循環(huán)的條件為階乘大于100萬(wàn),故最終的結(jié)果需減1。m=9選擇結(jié)構(gòu)的if語(yǔ)句的格式主要有以下三種:格式1:if條件 語(yǔ)句組end當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組,否則執(zhí)行end的后續(xù)語(yǔ)句。格式2:if條件語(yǔ)句組1 else 語(yǔ)句組2end當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2。執(zhí)行完成之后,執(zhí)行end的后續(xù)語(yǔ)句。格式3:if條件1語(yǔ)句組1 elseif條件2語(yǔ)句組2…… elseif條件n語(yǔ)句組n else 語(yǔ)句組n+1end當(dāng)條件1成立時(shí),執(zhí)行語(yǔ)句組1,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句;當(dāng)條件1不成立時(shí),判斷條件2,若其成立,執(zhí)行語(yǔ)句組2,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句;依次類(lèi)推,若所有條件均不成立,則執(zhí)行語(yǔ)句組n+1,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句。我們可以利用上述3種格式的if語(yǔ)句自定義符號(hào)函數(shù)。若用格式1,需分別調(diào)用3次;若用格式2,則需使用嵌套;下面是用格式3書(shū)寫(xiě)的程序。>>ifx>0y=1;elseifx<0y=-1;elsey=0;end 無(wú)論是for循環(huán)還是while循環(huán),break語(yǔ)句可以強(qiáng)行退出循環(huán),立即執(zhí)行此循環(huán)end的后續(xù)語(yǔ)句。一般我們用if語(yǔ)句與break語(yǔ)句組合使用來(lái)中斷循環(huán)。 我們用while循環(huán)來(lái)統(tǒng)計(jì)由MATLAB產(chǎn)生的100個(gè)隨機(jī)數(shù)中介于0.5到1的隨機(jī)數(shù)個(gè)數(shù),并使用break語(yǔ)句來(lái)中斷循環(huán)。事實(shí)上,本例通過(guò)簡(jiǎn)單的循環(huán)語(yǔ)句即可實(shí)現(xiàn),下列程序僅為說(shuō)明break語(yǔ)句的用法。 >>p=rand(1,100);i=1;s=0;%生成隨機(jī)數(shù),循環(huán)變量、計(jì)數(shù)器賦初值。>>while1%該條件總為真,如無(wú)中斷語(yǔ)句break,循環(huán)將無(wú)休止地運(yùn)行。ifp(i)>=0.5s=s+1;endi=i+1;ifi>100%設(shè)置循環(huán)中斷條件。break%該條件總為真,如無(wú)中斷語(yǔ)句break,循環(huán)將無(wú)休止地運(yùn)行。endend>>ss=54%換新的100個(gè)隨機(jī)數(shù)得到的統(tǒng)計(jì)個(gè)數(shù)可能不同。選擇結(jié)構(gòu)的switch語(yǔ)句根據(jù)表達(dá)式的值來(lái)選擇執(zhí)行相應(yīng)的語(yǔ)句組。switch的格式為:switch表達(dá)式case值1語(yǔ)句組1case值2語(yǔ)句組2……case值n語(yǔ)句組notherwise語(yǔ)句組n+1end當(dāng)表達(dá)式的值為值1時(shí),執(zhí)行語(yǔ)句組1,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句;當(dāng)表達(dá)式的值為值2時(shí),執(zhí)行語(yǔ)句組2,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句;依次類(lèi)推,若以上均不滿(mǎn)足,執(zhí)行語(yǔ)句組n+1,執(zhí)行完成后,執(zhí)行end的后續(xù)語(yǔ)句。 到目前為止,我們?nèi)匀灰恢痹诿畲翱谥鹦休斎霐?shù)據(jù)和命令來(lái)實(shí)現(xiàn)計(jì)算等功能。這種方法對(duì)于較為簡(jiǎn)單的問(wèn)題還可以接受,一旦問(wèn)題較為復(fù)雜,這種方法就顯得相當(dāng)麻煩,這時(shí)MATLAB提供的以m為擴(kuò)展名的M文件的作用就突顯出來(lái)了。M文件有兩種類(lèi)型:文本M文件和函數(shù)M文件。 建立M文件可以在MATLAB的主窗口的File下拉式菜單中選擇New,再選擇M-file,此時(shí)MATLAB將打開(kāi)一個(gè)文本編輯窗口,在此窗口中輸入一系列的命令和數(shù)據(jù)。編輯結(jié)束后,在此窗口的File下拉式菜單中選擇Save,將彈出保存對(duì)話(huà)框,選擇文件的保存位置并鍵入文件名稱(chēng)(需遵循變量的命名規(guī)則)和“.m”,單擊保存按鈕即完成M文件的建立。已經(jīng)建立好的M文件可以隨時(shí)打開(kāi)、編輯、修改,方法同Windows操作系統(tǒng)。 文本M文件就是命令行的簡(jiǎn)單疊加,調(diào)用文本M文件時(shí),MATLAB會(huì)自動(dòng)按順序執(zhí)行文件中的命令行。以下是我們自己編寫(xiě)的命名為Fibo.m的一個(gè)文本M文件,它的功能是產(chǎn)生前n個(gè)Fibonnaci數(shù)。f=[11];i=1;ifn==1 f(2)=[];elseifn==2%如果n為2,不執(zhí)行任何語(yǔ)句else whilei<n-1 f(i+2)=f(i)+f(i+1); i=i+1; endendf這里要注意的是,文本M文件中所定義和使用的變量均為全局變量,如本例中的f、i及n,它們不僅在本程序的運(yùn)行過(guò)程中有效,程序運(yùn)行完成之后仍然有效。我們?cè)诰庉嫵绦驎r(shí),要盡量避免使用全局變量。運(yùn)行文本M文件,只需在MATLAB的命令窗口中直接鍵入該文本M文件的文件名即可。>>n=10;Fibo%產(chǎn)生前10個(gè)Fibonnaci數(shù);文件中未指定n的大小,需事先指定。f=11235813213455函數(shù)M文件是另一類(lèi)M文件。MATLAB所提供的絕大多數(shù)功能函數(shù)都是由函數(shù)M文件實(shí)現(xiàn)的,可見(jiàn)函數(shù)M文件的重要性。我們可以根據(jù)需要建立自己的函數(shù)M文件,它能夠像系統(tǒng)中的功能函數(shù)一樣方便地調(diào)用,從而極大地?cái)U(kuò)展了MATLAB的功能。函數(shù)M文件的第一行有特殊的格式,必須以function開(kāi)頭。函數(shù)M文件的一般格式為:function[輸出參數(shù)表]=函數(shù)名(形式參數(shù))語(yǔ)句組end這里的輸出參數(shù)表可以是一個(gè)變量,也可以是多個(gè)變量,他們表示要計(jì)算的量。如果是一個(gè)參數(shù),雙括號(hào)可以去掉;如果是多個(gè)變量,兩兩之間用逗號(hào)隔開(kāi)。這里的函數(shù)名必須與該文件的文件名一致,這樣才能保證成功調(diào)用。形式參數(shù)是一組形式變量,本身沒(méi)有任何意義,只有在調(diào)用時(shí)賦予它們實(shí)際值才有意義。我們編寫(xiě)一個(gè)命名為Fibon.m的函數(shù)M文件,它的功能是產(chǎn)生前n個(gè)Fibonnaci數(shù),并計(jì)算這n個(gè)數(shù)之和。function[f,s]=fibon(n)%返回兩個(gè)量f、s,n為形式參數(shù)。f=[11];i=1;ifn==1f(2)=[];elseifn==2%如果n為2,不執(zhí)行任何語(yǔ)句。elsewhilei<n-1f(i+2)=f(i)+f(i+1);i=i+1;endends=sum(f);函數(shù)M文件的調(diào)用格式為:[輸出參數(shù)表]=函數(shù)名(實(shí)際參數(shù))。若我們想知道前10個(gè)Fibonnaci數(shù)及這10個(gè)之和,只需在MATLAB的命令窗口中鍵入:>>[fib,fibs]=Fibon(10)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年信息流廣告素材創(chuàng)意方法
- 2026年農(nóng)產(chǎn)品品牌包裝設(shè)計(jì)策略
- 無(wú)人機(jī)維修調(diào)試與校驗(yàn)規(guī)范手冊(cè)
- 2026年農(nóng)產(chǎn)品國(guó)際貿(mào)易規(guī)則解析
- 2026年氫能儲(chǔ)運(yùn)安全技術(shù)規(guī)范培訓(xùn)
- 關(guān)于鼓勵(lì)小微企業(yè)吸納勞動(dòng)者就業(yè)的意見(jiàn)
- 職業(yè)壓力管理的醫(yī)療化干預(yù)體系
- 職業(yè)健康遠(yuǎn)程隨訪(fǎng)的醫(yī)患協(xié)同管理策略
- 職業(yè)健康監(jiān)護(hù)中的標(biāo)準(zhǔn)化培訓(xùn)效果評(píng)估
- 院長(zhǎng)培訓(xùn)教學(xué)課件
- 2025大模型安全白皮書(shū)
- 2026國(guó)家國(guó)防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫(kù)及1套參考答案詳解
- 工程款糾紛專(zhuān)用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長(zhǎng)江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫(kù)及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國(guó)心臟病協(xié)會(huì)心肺復(fù)蘇和心血管急救指南(中文完整版)
- 民宿入股合伙人合同范本
- 上海 衛(wèi)生健康數(shù)據(jù)分類(lèi)分級(jí)要求
- 《質(zhì)量管理體系成熟度評(píng)價(jià)指南》
- 遼寧大學(xué)第八屆校學(xué)術(shù)委員會(huì)認(rèn)定的學(xué)術(shù)期刊分類(lèi)標(biāo)準(zhǔn)及目錄
評(píng)論
0/150
提交評(píng)論