數(shù)學(xué)軟件PPT學(xué)習(xí)教案_第1頁(yè)
數(shù)學(xué)軟件PPT學(xué)習(xí)教案_第2頁(yè)
數(shù)學(xué)軟件PPT學(xué)習(xí)教案_第3頁(yè)
數(shù)學(xué)軟件PPT學(xué)習(xí)教案_第4頁(yè)
數(shù)學(xué)軟件PPT學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)學(xué)軟件數(shù)學(xué)軟件n 函數(shù)文件的定義函數(shù)文件的定義n 遞歸函數(shù)遞歸函數(shù)n 函數(shù)參數(shù)的可調(diào)性函數(shù)參數(shù)的可調(diào)性n 局部變量與全局變量局部變量與全局變量n 子函數(shù)子函數(shù)n 函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)第1頁(yè)/共27頁(yè)l M 文件根據(jù)調(diào)用方式的不同可以分為兩類文件根據(jù)調(diào)用方式的不同可以分為兩類 l Script:腳本文件腳本文件,直接輸入文件名即可運(yùn)行直接輸入文件名即可運(yùn)行l(wèi) Function:函數(shù)文件函數(shù)文件 供其它供其它M文件調(diào)用,通常帶輸入?yún)?shù)和輸出參數(shù)文件調(diào)用,通常帶輸入?yún)?shù)和輸出參數(shù)第2頁(yè)/共27頁(yè)function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列

2、表輸入形參列表) % 注釋說(shuō)明部分注釋說(shuō)明部分 (可選可選)函數(shù)體語(yǔ)句函數(shù)體語(yǔ)句 l 第一行為第一行為引導(dǎo)行引導(dǎo)行,表示該,表示該 M文件是函數(shù)文件文件是函數(shù)文件l 函數(shù)名的命名規(guī)則與變量名相同函數(shù)名的命名規(guī)則與變量名相同 ( 必須以字母開(kāi)頭必須以字母開(kāi)頭 )l 當(dāng)當(dāng)輸出形參輸出形參多于一個(gè)時(shí),用多于一個(gè)時(shí),用方括號(hào)方括號(hào)括起來(lái)括起來(lái)l 函數(shù)文件一般格式函數(shù)文件一般格式l 函數(shù)必須是一個(gè)函數(shù)必須是一個(gè)單獨(dú)的單獨(dú)的 M文件文件l 函數(shù)文件的函數(shù)文件的文件名必須與函數(shù)名一致文件名必須與函數(shù)名一致第3頁(yè)/共27頁(yè)l 函數(shù)文件函數(shù)文件(f2cf.m):5(32)9cf例:例:將華氏溫度轉(zhuǎn)化為攝氏溫度:

3、將華氏溫度轉(zhuǎn)化為攝氏溫度:clear; f=input(Please input f:);c=5*(f-32)/9;fprintf(c=%g n, c)l 腳本文件腳本文件 (f2cs.m):function c=f2cf(f)c=5*(f-32)/9;第4頁(yè)/共27頁(yè)function a,b = myswap(x,y)% swap x and y a = y; b = x;例:例:交換兩個(gè)變量的值交換兩個(gè)變量的值 myswap.ml 函數(shù)可以有多個(gè)輸入?yún)?shù)和多個(gè)輸出參數(shù)函數(shù)可以有多個(gè)輸入?yún)?shù)和多個(gè)輸出參數(shù)l 也可以沒(méi)有輸入?yún)?shù)或輸出參數(shù)也可以沒(méi)有輸入?yún)?shù)或輸出參數(shù)第5頁(yè)/共27頁(yè)functi

4、on printyh(n) % 打印楊輝三角形打印楊輝三角形, 本函數(shù)沒(méi)有輸出參數(shù)本函數(shù)沒(méi)有輸出參數(shù)yh=1; disp(yh); if n=1, return; endyh=1,1; disp(yh);for k=3:n yh_old=yh; k2=ceil(k/2); for i=2:k2 yh(i)=yh_old(i-1)+yh_old(i); end yh(k2+1:k)=yh(k-k2:-1:1); disp(yh);end例:例:打印楊輝三角形打印楊輝三角形 printyh.m第6頁(yè)/共27頁(yè)l 函數(shù)調(diào)用的一般格式函數(shù)調(diào)用的一般格式輸出輸出實(shí)參實(shí)參列表列表=函數(shù)名函數(shù)名(輸入輸入實(shí)

5、參實(shí)參列表列表)l 函數(shù)調(diào)用時(shí),函數(shù)調(diào)用時(shí),實(shí)參的順序?qū)崊⒌捻樞驊?yīng)與函數(shù)定義時(shí)應(yīng)與函數(shù)定義時(shí)形參的順序形參的順序一致一致l 實(shí)參實(shí)參與與形參形參之間的結(jié)合是通過(guò)之間的結(jié)合是通過(guò)值傳遞值傳遞實(shí)現(xiàn)的實(shí)現(xiàn)的l 函數(shù)可以函數(shù)可以嵌套調(diào)用嵌套調(diào)用,即一個(gè)函數(shù)可以被其它函數(shù)調(diào)用,即一個(gè)函數(shù)可以被其它函數(shù)調(diào)用, 甚至可以被它自身調(diào)用,此時(shí)稱為甚至可以被它自身調(diào)用,此時(shí)稱為遞歸調(diào)用遞歸調(diào)用l 函數(shù)所傳遞的參數(shù)具有可調(diào)性,函數(shù)所傳遞的參數(shù)具有可調(diào)性,Matlab 用兩個(gè)永久變量用兩個(gè)永久變量 nargin 和和 nargout 分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參 和輸出實(shí)參的個(gè)數(shù)和輸出

6、實(shí)參的個(gè)數(shù)第7頁(yè)/共27頁(yè)1,1!(1)!,1nnnnn % 函數(shù)文件函數(shù)文件 myfactor.mfunction y=myfactor(n)if n y1=ex4nargin(3) y2=ex4nargin(3,4) x=ex4nargout(5,3) x,y=ex4nargin(5,3)第10頁(yè)/共27頁(yè)n 函數(shù)文件的定義函數(shù)文件的定義n 遞歸函數(shù)遞歸函數(shù)n 函數(shù)參數(shù)的可調(diào)性函數(shù)參數(shù)的可調(diào)性n 局部變量與全局變量局部變量與全局變量n 子函數(shù)子函數(shù)n 函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)第11頁(yè)/共27頁(yè)l 局部變量:只能在其被定義的局部變量:只能在其被定義的 M 文件

7、中使用文件中使用l 全局變量:可以在多個(gè)全局變量:可以在多個(gè) M 文件中使用文件中使用l Matlab 中,變量默認(rèn)是局部變量中,變量默認(rèn)是局部變量l 局部變量與全局變量局部變量與全局變量l 局部變量局部變量l Matlab 中,變量默認(rèn)是局部變量,即一個(gè)中,變量默認(rèn)是局部變量,即一個(gè)M文件中定義的變量不能被其它文件中定義的變量不能被其它 M 文件引用文件引用l 當(dāng)函數(shù)調(diào)用完畢后,該函數(shù)文件中所定義的所有局部變量都將被釋放,即當(dāng)函數(shù)調(diào)用完畢后,該函數(shù)文件中所定義的所有局部變量都將被釋放,即全部被清除全部被清除l 函數(shù)通過(guò)函數(shù)通過(guò)輸入和輸出參數(shù)輸入和輸出參數(shù)與其它與其它 M 文件進(jìn)行數(shù)據(jù)傳遞文件

8、進(jìn)行數(shù)據(jù)傳遞第12頁(yè)/共27頁(yè)% main.mclear; a=1; b=3;z=mysquaresum(a,b);fprintf( z=%d n, z); disp(mysum) % ERROR% mysquaresum.mfunction mysum = mysquaresum(x,y)mysum=x2+y2; mysum=a2+b2; % ERROR第13頁(yè)/共27頁(yè)l 全局變量全局變量global 變量名列表變量名列表l 全局變量的定義或聲明全局變量的定義或聲明l 變量名列表中的各個(gè)變量變量名列表中的各個(gè)變量用空格隔開(kāi)用空格隔開(kāi),不能用逗號(hào)!,不能用逗號(hào)!l 在需要使用全局變量的所有在

9、需要使用全局變量的所有M文件中,都要進(jìn)行聲明文件中,都要進(jìn)行聲明l 定義全局變量是定義全局變量是 M文件間傳遞信息的一種手段文件間傳遞信息的一種手段第14頁(yè)/共27頁(yè)% main.mclear; global a b; % 聲明聲明 a b 是全局變量是全局變量a=1; b=3;z=mysquaresum();fprintf( z=%d n, z); disp(mysum); % ERROR,mysum 不是全局變量不是全局變量% mysquaresum.mfunction mysum = mysquaresum()global a b; % 這里也必須聲明這里也必須聲明 a b 是全局變量是

10、全局變量global mysum;mysum=a2+b2; % OK第15頁(yè)/共27頁(yè)全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來(lái)了方便,但卻破壞了函數(shù)對(duì)變量的封裝,降低了程序的可讀性,因而全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來(lái)了方便,但卻破壞了函數(shù)對(duì)變量的封裝,降低了程序的可讀性,因而在結(jié)構(gòu)化程序設(shè)計(jì)中,全局變量是不受歡迎的在結(jié)構(gòu)化程序設(shè)計(jì)中,全局變量是不受歡迎的。特別是當(dāng)程序較大,子程序較多時(shí),全局變量將給程序調(diào)試和維護(hù)帶來(lái)不便,故。特別是當(dāng)程序較大,子程序較多時(shí),全局變量將給程序調(diào)試和維護(hù)帶來(lái)不便,故一般不提倡使用全局變量一般不提倡使用全局變量。第16頁(yè)/共27頁(yè)% ex4global.mclear; glo

11、bal a b;a=1; b=3;z=mysquaresum(a,b);fprintf( a=%d, b=%d n, a,b);z=myproduct(a,b);fprintf( a=%d, b=%d n, a,b);% mysquaresum.mfunction mysum=mysquaresum(x,y)mysum=x2+y2; a=x+y;% myproduct.mfunction myprod=myproduct(x,y)global amyprod=x*y; a=x+y;第17頁(yè)/共27頁(yè)n 函數(shù)文件的定義函數(shù)文件的定義n 遞歸函數(shù)遞歸函數(shù)n 函數(shù)參數(shù)的可調(diào)性函數(shù)參數(shù)的可調(diào)性n 局部

12、變量與全局變量局部變量與全局變量n 子函數(shù)子函數(shù)n 函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)函數(shù)句柄、內(nèi)聯(lián)函數(shù)、匿名函數(shù)第18頁(yè)/共27頁(yè)l 一個(gè)函數(shù)文件中可以包含一個(gè)或多個(gè)函數(shù),一個(gè)函數(shù)文件中可以包含一個(gè)或多個(gè)函數(shù), 其中第一個(gè)稱為其中第一個(gè)稱為主函數(shù)主函數(shù),其它函數(shù)稱為,其它函數(shù)稱為子函數(shù)子函數(shù)l 除全局變量外,所有函數(shù)(主函數(shù)、子函數(shù))中的變量都是局部變量,函數(shù)之間通過(guò)輸入、輸出參數(shù)進(jìn)行數(shù)據(jù)傳遞除全局變量外,所有函數(shù)(主函數(shù)、子函數(shù))中的變量都是局部變量,函數(shù)之間通過(guò)輸入、輸出參數(shù)進(jìn)行數(shù)據(jù)傳遞l 主函數(shù)必須位于最前面,子函數(shù)出現(xiàn)的次序任意主函數(shù)必須位于最前面,子函數(shù)出現(xiàn)的次序任意l 子函數(shù)只能被主函

13、數(shù)和位于同一個(gè)子函數(shù)只能被主函數(shù)和位于同一個(gè)M文件中的其它子函數(shù)調(diào)用文件中的其它子函數(shù)調(diào)用l 外部外部 M 文件只能調(diào)用主函數(shù)文件只能調(diào)用主函數(shù)l 子函數(shù)子函數(shù) 第19頁(yè)/共27頁(yè)% ex4subfun.mfunction avg, med=ex4subfun(x) % 主函數(shù)主函數(shù) n=length(x);avg=mymean(x,n);med=mymedian(x,n);function y=mymean(x,n) % 子函數(shù),計(jì)算平均值子函數(shù),計(jì)算平均值y=sum(x)/n;function y=mymedian(x,n) % 子函數(shù),計(jì)算中值子函數(shù),計(jì)算中值x=sort(x);if r

14、em(n,2)=1 y=x(n+1)/2);else y=(x(n/2)+x(n/2+1)/2;end x=rand(6,1) y1,y2=ex4subfun(x)第20頁(yè)/共27頁(yè)l 函數(shù)句柄的定義函數(shù)句柄的定義fhandle= 函數(shù)名函數(shù)名 函數(shù)句柄函數(shù)句柄:可以理解成一個(gè)函數(shù)的代號(hào)或別名,調(diào)用函數(shù)句柄就等價(jià)于調(diào)用該函數(shù)。可以理解成一個(gè)函數(shù)的代號(hào)或別名,調(diào)用函數(shù)句柄就等價(jià)于調(diào)用該函數(shù)。l 的作用就是將一個(gè)函數(shù)的函數(shù)句柄賦值給左邊的變量的作用就是將一個(gè)函數(shù)的函數(shù)句柄賦值給左邊的變量 例:例:f = sin;y = f(pi/3)第21頁(yè)/共27頁(yè)l 內(nèi)聯(lián)函數(shù)的定義內(nèi)聯(lián)函數(shù)的定義函數(shù)名函數(shù)名=

15、inline(函數(shù)表達(dá)式函數(shù)表達(dá)式, 變量變量1, 變量變量2,.) MATLAB中的內(nèi)聯(lián)函數(shù)借鑒了中的內(nèi)聯(lián)函數(shù)借鑒了C語(yǔ)言中的內(nèi)聯(lián)函數(shù),使用內(nèi)聯(lián)函數(shù)可以減少調(diào)用的時(shí)間和空間開(kāi)銷。語(yǔ)言中的內(nèi)聯(lián)函數(shù),使用內(nèi)聯(lián)函數(shù)可以減少調(diào)用的時(shí)間和空間開(kāi)銷。l 由于內(nèi)聯(lián)函數(shù)是儲(chǔ)存于內(nèi)存中而不是在由于內(nèi)聯(lián)函數(shù)是儲(chǔ)存于內(nèi)存中而不是在M文件中,省去了文件訪問(wèn)的時(shí)間,加快了程序的運(yùn)行效率。文件中,省去了文件訪問(wèn)的時(shí)間,加快了程序的運(yùn)行效率。l 但內(nèi)聯(lián)函數(shù)只能定義一些簡(jiǎn)單的函數(shù)表達(dá)式。但內(nèi)聯(lián)函數(shù)只能定義一些簡(jiǎn)單的函數(shù)表達(dá)式。l 若調(diào)用函數(shù)時(shí)涉及數(shù)組運(yùn)算,則定義函數(shù)時(shí)也要用數(shù)組運(yùn)算!若調(diào)用函數(shù)時(shí)涉及數(shù)組運(yùn)算,則定義函數(shù)時(shí)也

16、要用數(shù)組運(yùn)算!例:例:f=inline(x2 + y2,x,y);y=f(2,3)第22頁(yè)/共27頁(yè)l 匿名函數(shù)的定義匿名函數(shù)的定義fhandle= (輸入?yún)?shù)列表輸入?yún)?shù)列表)運(yùn)算表達(dá)式運(yùn)算表達(dá)式例:例:f=(x,y) x2 + y2; y=f(2,3)匿名函數(shù)匿名函數(shù)是是 Matlab 7.0 版提出的一種全新的函數(shù)描述形式,和內(nèi)聯(lián)函數(shù)類似,可以讓用戶編寫簡(jiǎn)單的函數(shù)而不需要?jiǎng)?chuàng)建版提出的一種全新的函數(shù)描述形式,和內(nèi)聯(lián)函數(shù)類似,可以讓用戶編寫簡(jiǎn)單的函數(shù)而不需要?jiǎng)?chuàng)建M文件文件;它具有內(nèi)聯(lián)函數(shù)的所有優(yōu)點(diǎn),并且效率比內(nèi)聯(lián)函數(shù)高。;它具有內(nèi)聯(lián)函數(shù)的所有優(yōu)點(diǎn),并且效率比內(nèi)聯(lián)函數(shù)高。第23頁(yè)/共27頁(yè)p=

17、3; q=5;f=(x,y) xp + yq;y=f(2,3)p=2; q=4;f=(x,y) xp + yq; % 當(dāng)參數(shù)發(fā)生改變時(shí),函數(shù)必須重新定義當(dāng)參數(shù)發(fā)生改變時(shí),函數(shù)必須重新定義y=f(2,3) l 若調(diào)用函數(shù)時(shí)涉及數(shù)組運(yùn)算,則定義函數(shù)時(shí)也需要使用數(shù)組運(yùn)算若調(diào)用函數(shù)時(shí)涉及數(shù)組運(yùn)算,則定義函數(shù)時(shí)也需要使用數(shù)組運(yùn)算l 匿名函數(shù)匿名函數(shù)支持變量替換支持變量替換f=(x) x.2 + 1;x=1:5;y=f(x)第24頁(yè)/共27頁(yè)1、兔子繁殖問(wèn)題:兔子繁殖問(wèn)題:( Fibonacci number ) 假設(shè)假設(shè)每對(duì)每對(duì)大大兔每月生兔每月生出出一對(duì)一對(duì)小兔,且新生的小兔滿二個(gè)月后長(zhǎng)成大兔就能生育,小兔,且新生的小兔滿二個(gè)月后長(zhǎng)成大兔就能生育,那么從剛出生的一對(duì)小兔算起,那么從剛出生的一對(duì)小兔算起,12個(gè)月總共有個(gè)月總共有多少對(duì)兔子?多少對(duì)兔子?三年年底呢?試編寫一個(gè)三年年底呢?試編寫一個(gè)函數(shù)函數(shù)計(jì)算該題,其中輸入為月數(shù),輸出為兔子對(duì)數(shù)。計(jì)算該題,其中輸入為月數(shù),輸出為兔子對(duì)數(shù)。(函數(shù)名取為(函數(shù)名取為 m71)(只需交函數(shù)文件)(只需交函數(shù)文件)2、編寫一個(gè)函數(shù),編寫一個(gè)函數(shù),函數(shù)名為函數(shù)名為 m72,要求要求:l 一個(gè)輸出參數(shù),三個(gè)輸入?yún)?shù)一個(gè)輸出參數(shù),三個(gè)輸入?yún)?shù)l 當(dāng)輸入一個(gè)參數(shù)時(shí),輸出一個(gè)出錯(cuò)信息,并返回當(dāng)輸入一個(gè)參數(shù)時(shí),輸出一個(gè)出錯(cuò)信息,并返回l 當(dāng)輸入兩個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論