版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)學建模講義數(shù)學軟件簡介A Mathematica側重于數(shù)學方面,其它方面應用不是很廣泛Lindo, Lingo主要求解優(yōu)化問題(建議與結合使用)2的發(fā)展史名字由MATrix和 LABoratory 兩詞的前三個字母組合而成。那是20世紀七十年代,時任美國新墨西哥大學計的CleveMoler出于減輕學生編程負擔的動算機科學系機,為學生設計了一組調(diào)用LINPACK和EISPACK矩陣軟件工具包庫程序的的“通俗易用”的接口,此即用FORTRAN編寫的萌芽狀態(tài)的。§ 1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把正式推向市場。從這時起,
2、的內(nèi)核采用C語言編寫,而且除原有的數(shù)值計算能力外,還新增了數(shù)據(jù)圖視功能。§ 1997年仲春,5.0版問世,緊接著是5.1、5.2,以及和1999年春的5.3版,現(xiàn)在最高版本有6.5?,F(xiàn)今的擁有更豐富的數(shù)據(jù)類型和結構、更友善的面向?qū)ο?、更加快速精良的圖形可視、更廣博的數(shù)學和數(shù)據(jù)分析發(fā)工具。、的應用開3語言的主要特點(1) 具有豐富的數(shù)學功能§ 包括矩陣各種運算。如:正交變換、三角分解、特征值、常見的特殊矩陣等。§ 包括各種特殊函數(shù)。如:貝塞爾函數(shù)、勒讓德函數(shù)、伽碼函數(shù)、貝塔函數(shù)、橢圓函數(shù)等。§ 包括各種數(shù)算功能. 如: 數(shù)值微分, 數(shù)值, 插值, 求極值,
3、方程求根, FFT , 常微分方程的數(shù)值解, 符號運算, 極限問題、問題等。(2) 具有很好的圖視系統(tǒng)§ 可方便地畫出二維和三維圖形。§ 高級圖形處理。如:色彩、句柄圖形、動畫等。§ 圖形用戶界面GUI制作工具,可以制作用戶菜單和控件。使用者可以根據(jù)的需求編寫出滿意的圖形界面。4(3) 可以直接處理聲音和圖象文件。§ 聲言文件。如: WAV文件(例:wavread,sound等).§ 圖象文件。如: bmp 、gif 、 pcx 、tif 、jpeg等文件。(4) 具有若干功能非常強大的應用工具箱。§ 如:OPTIMAL、SIMULI
4、NK、DSP、 SIGNAL等30多種.(5) 使用方便,具有很好的擴張功能。§ 使用語言編寫的程序可以直接運行,無需編譯。§ 可以M文件轉(zhuǎn)變?yōu)橛谄脚_的EXE可執(zhí)行文件。的應用接口程序API是提供的十分重要的組件 ,由 一系列接口指令組成 。用戶就可在FORTRAN或C中 , 把當作計算引擎使用 。(6) 具有很好的幫助功能§ 提供十分詳細的幫助文件(PDF 、HTML 、demo文件)。§ 聯(lián)機指令:help指令(例:help elfun,help exp,helpsimulink),lookfor(例: lookforfourier )。5簡介的計算
5、功能的數(shù)據(jù)類型1(1)補充§ 現(xiàn)有四種基本數(shù)據(jù)類型:雙精度數(shù)組、字符串數(shù)組、元胞數(shù)組、構架數(shù)組。(矩陣是特殊的數(shù)組)§ 元胞數(shù)組(Cell Array)如同里的保險箱庫一樣。 該數(shù)組的基本組分是元胞(Cell),以下標來區(qū)分。 元胞可以存放任何類型、任何大小的數(shù)組。 同一個元胞數(shù)組中各元胞的內(nèi)容可以不同。§ 構架數(shù)組(Structure Array)也能存放各類數(shù)據(jù)。 該數(shù)組的基本組分是構架( Structure ),以下標來區(qū)分。 構架必須在劃分“域”后才能使用。 數(shù)據(jù)不能存放于構架,只能存放在域中。 構架的域可以存放任何類型、任何大小的數(shù)組。 不同構架的同名域
6、中存放的內(nèi)容可不同。6一、變量與函數(shù)1、變量中變量名規(guī)則(1) 變量名必須是不含空格的單個詞;(2) 變量名區(qū)分大小寫;(3)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不使用標點符號.(4) 不區(qū)分變量與常量.7特殊變量表8特殊變量取值ans用于結果的缺省變量名pi圓周率eps計算機的最小數(shù),當和 1 相加就產(chǎn)生一個比 1 大的數(shù)inf無窮大,如 1/0NaN不定量,如 0/0i,ji=j= - 1nargin所用函數(shù)的輸入變量數(shù)目nargout所用函數(shù)的輸出變量數(shù)目realmin最小可用正實數(shù)realmax最大可用正實數(shù)2、數(shù)算符號及標點符號(1)的每條命令后,若為逗號
7、或無標點符號, 則顯示命令的結果;若命令后為分顯示結果.號,則(2)“%”后面所有文字為注釋.(3) “.”表示續(xù)行.9+加法運算適用于兩個數(shù)或兩個矩陣或矩陣與向量的運算; 不同符號用法稍有差異。減法運算*乘法運算.*點乘運算/除法運算./點除運算乘冪運算.點乘冪運算反斜杠表示左除.3. 常用數(shù)學函數(shù)注意:這些函數(shù)可以直接以向量或矩陣作為參數(shù),輸出為對應向量或矩陣。10函數(shù)名稱函數(shù)名稱sin(x)正弦函數(shù)asin(x)反正弦函數(shù)cos(x)余弦函數(shù)acos(x)反余弦函數(shù)tan(x)正切函數(shù)atan(x)反正切函數(shù)abs(x)絕對值max(x)最大值min(x)最小值sum(x)元素的總和sq
8、rt(x)開平方exp(x)以e為底的指數(shù)log(x)自然對數(shù)log10(x)以10為底的對數(shù)floor(x)取整log2(x)以2為底的對數(shù)sign(x)符號函數(shù)fix(x)取整4、M文件M文件有兩種形式 :文件(Script File)和函數(shù)文件(Function File )。這兩種文件的擴展名,均為“ . m” 的可執(zhí)行文件。4.1M文件§ 對于一些比較簡單的問題 ,在指令窗中直接輸入指令計算 。§ 對于復雜計算,采用文件(Script file)最為合適 。§ M只是按文件所寫的指令執(zhí)行 。文件的特點是:文件的比較簡單,只是一串按用戶意圖排列而成的(包括
9、流向指令在內(nèi)的)指令集合。11M文件文件建立方法:1. 在中,點: File->New->M-file, 生成編輯窗口2. 在編輯窗口中輸入復雜的計算命令集合;3. 點:File->Save,存盤,文件名任意易記憶的.例、隨機產(chǎn)生50個隨機數(shù),并用圖形顯示結果(比較均勻分布與正態(tài)分布)a=rand(1,50);subplot(1,2,1); plot(a);b=randn(1,50); subplot(1,2,2); plot(b);124.2§ 與M函數(shù)文件文件不同 ,函數(shù)文件猶如一個“黑箱”,把一些數(shù)據(jù)送進并經(jīng)處理,再把結果送出來。提供的函數(shù)指令大部分都是由函數(shù)
10、文件定義的。§ M函數(shù)文件的特點是: 從形式上看 ,與文件不同 ,函數(shù)文件的笫一行總是以 “function”引導的“函數(shù)申明行”。一般結構如下function注釋行函數(shù)體.return因變量名=函數(shù)名(自變量名)function 因變量名=函數(shù)名(自變量名)Å子函數(shù)%(只在上函數(shù)中使用)%注釋內(nèi)容函數(shù)體.return.134.3M函數(shù)文件的一般結構§ 典型 M函數(shù)文件的結構如下 : 函數(shù)申明行:位于函數(shù)文件的首行,以關鍵字 function 開頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。 笫一注釋行:緊隨函數(shù)申明行之后以%開頭笫一注釋行。該行供lookfo
11、r和 help使用 。文本區(qū) :笫一注釋行及其之后的連續(xù)以%開頭的所有注釋行 編寫和修改整個:與文本。文本區(qū)相隔一個“空”行,也以%開頭,標志編寫及修改該M文件的作者和日期等 。 函數(shù)體:為清晰起見,它與前面的注釋以“空”行相隔。14M文件建立方法:1.2.3.中點:File->New->M-file在在編輯窗口中輸入程序內(nèi)容點:File->Save存盤,文件名必須函數(shù)名一致。例:定義函數(shù) f(x1,x2)=100(x2-x1 ) +(1-x1)2 221.建立M文件:fun.mfunctionf=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;retu
12、rn2. 可以直接使用函數(shù)fun.m例如:計算 f(1,2), 只需在x=1 2;fun(x)命令窗口鍵入命令:154.4函數(shù)調(diào)用和參數(shù)傳遞§ 在中,調(diào)用函數(shù)的常用形式是:輸出參數(shù)1,輸出參數(shù)2, = 函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2, )§ 函數(shù)調(diào)用可以嵌套,一個函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它(遞歸調(diào)用)。使用比 “標稱數(shù)目 ”較少的輸入輸出變量,實現(xiàn)對函數(shù)的調(diào)用 。16二. 矩陣(含數(shù)組):1. 矩陣的建立與表示法:在命令窗口中輸入:A=1,2,3;4,5,6;7,8,9A =可以得到:147258369若要顯示整行或整列,則可以用(:)冒號來表示。冒(:)代表矩陣中行
13、(ROWS)或列(COLUMNS)的全部。例如執(zhí)行命令:A(:,2),就會顯示第2列的全部,結果為:ans =258172.矩陣的四則運算符號:“+”“/”“”“*”乘方“”加除減乘“'”非共軛轉(zhuǎn)置 “.'”共軛轉(zhuǎn)置特殊符號“.”“.*”, “./”,例如:b=1+2i;3+4ib =1.0000 + 2.0000i3.0000 + 4.0000ib' ans =“.”左除“”運算非常靈活1.0000 - 2.0000ib.' ans =1.0000 + 2.0000i3.0000 - 4.0000i3.0000 + 4.0000i183. 其他特殊矩陣的生成方
14、法:1)eye (m,n)或eye (m)陣。例如:產(chǎn)生m*n 或 m*m的矩eye (3,4)與eye (3)分別產(chǎn)生如下矩陣:1000100010001000100012)zeros (m,n) 或 zeros (m) 產(chǎn)生m*n 或m*m 的zeros (3,4) 與zeros (3) 分別零矩陣。例如:產(chǎn)生如下矩陣:000000000000000000000193) ones (m,n) 或ones (m) 產(chǎn)生m*n或m*m的全部元素為1的矩陣。例如:ones (3,4)與ones(3)分別產(chǎn)生如下矩陣:1111111111111111111114.常用矩陣函數(shù):1) d=eig (
15、A)返回矩陣A的特征值所組成的列向量;v,d=eig (A)返回分別由矩陣A的特征向量和特征值(以其為主對角線元素,其余元素為零) 的兩個矩陣。20例如執(zhí)行命令:d=eig (A) 結果為:d =16.1168-1.1168-0.0000例如執(zhí)行命令:v,d=eig (A) 結果為:v = 0.23200.52530.8187d =16.11680.78580.0868-0.61230.4082-0.81650.408200000-1.11680-0.0000其中v (:,i) 為d (i,i)所對應的特征向量。212) det (A) 計算行列式A的值。例如det (A) 結果為:ans =
16、 03) inv (A) 求矩陣A的逆。例如:inv (A) 結果為:Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 2.055969e-018.ans =1.0e+016 *-0.45040.9007-0.45040.9007-1.80140.9007-0.45040.9007-0.4504224) orth (A)返回對應于A的正交化矩陣。例如:orth(A) 結果為:ans = 0.21480.52060.82630.88720.2496-0.38795) po
17、ly (A)若A為一矩陣,則返回A的特征多項式。例如:poly (A) 結果為:ans = 1.0000-15.0000-18.0000-0.0000若A為一向量,則返回以A的元素為根的特征多項式。例如:r=1,2,3; p= poly (r) 結果為:p =1-611-66) rank (A) 計算矩陣A的秩。例如:r=rank (A)為:r = 2結果235.矩陣分解:1) q,r=qr (A)將矩陣A做正交化分解,使得A=q*r。q為矩陣 (unitary matrix),其范數(shù)(norm)為1。r為對角化的上三角矩陣。例如:q,r=qr(A)q =-0.1231-0.4924-0.86
18、16r =-8.12400.90450.3015-0.30150.4082-0.81650.4082-9.6011-11.078200norm(q) ans =0.90451.80910-0.00001.0000242)L,U=lu (A)將矩陣A做對角線分解,使得A=L*U,L為下三角矩陣(lower triangularmatrix),U為上三角矩陣(upper triangular matrix)。例如:L,U=lu(A) L =0.14290.57141.0000U =7.0000001.00000.5000001.000008.00000.857109.00001.71430.000
19、0256.關系運算符有用于比較矩陣的六個關系運算符,也可以對矩陣與一個標量進行比較,即矩陣中的每個元素與標量進行比較。關系運算符如下:<< =>> = = =小于小于等于大于大于等于等于不等于關系運算符比較對應的元素,產(chǎn)生一個僅包含1和0的具有相同維數(shù)的矩陣。其元素是:10比較結果是真比較結果是假在一個表達式中,算術運算符優(yōu)先級最高,其次是關系運算符,最低級別是邏輯運算符。圓括號可以改變其順序。26可用于同維矩陣比較及矩陣與單個元素比較。7.邏輯運算符在中有四種邏輯運算符:&| xor與或非 異或邏輯運算符的運算優(yōu)先級最低。在一個表達式中,關系運算符和算術運算符
20、的運算級別要高于邏輯運算符。xor和or之間的差別在于:表達式中至少有一個是真,那么or是真; xor是表達式中有一個是真但不能兩者均為真時才為真。運算符&和|比較兩個相同維數(shù)的矩陣,如同前一節(jié)一 樣,它也能使一個標量與一個矩陣進行比較。邏輯運算符是按元素比較的。零元素表示邏輯值假,任何其他值的元素表示邏輯值真。其結果是一個包含1和0的矩陣。278.邏輯函數(shù)在中有幾個邏輯函數(shù)。在以下定義的函數(shù)中,假設A是一個m×n的矩陣, x是一個向量。在一些計算中,很重要的一點是要在給定的矩陣中以一定的特征。例如,在部分選主元的高斯消去法中,必須在工命令find可以用于這種情況。作列中尋找
21、最大的項。find(x)返回一個x中包含非零元素的下標的向量。如果所有的元素都是零,那么返回一個空矩陣,即 。find( A ) 返回一個長的列向量,表示A中包含非零元素的下標向量。u, v=find(A) 返回向量u和v,它們包含A中的非零元素的下標,即A中元素(uk, vk)為非零。u,v,b = find(A) 返回包含A中非零元素的下標向量u和v以及一個包含對應非零元素的向量。A中元素(uk, vk)為非零并且能在bk中找到。命令find可以與關系運算符合用,這樣使命令更有用。例如:28index = find( x>0.5 )8.邏輯函數(shù)(續(xù))any( x ) 如果x中的有一個
22、元素為非零值,那么返回1;否則,返回0。any( A ) 對A進行列運算,根據(jù)相應列是否包含非零元素,返回一個帶1 和0的行向量。all( x )all( A )如果所有的元素都是非零值,返回1;否則,返回0。對A進行列操作,根據(jù)相應列是否所有元素都為非零值,返回帶1和0的一個行向量。例:all ( x < = 5 )、all ( all ( A = A) )isnan( A )返回一個維數(shù)與A相同的矩陣,在這個矩陣中,對應A中有N a N處為1,其他地方為0。isinf( A ) 返回一個維數(shù)與A相同的矩陣,在這個矩陣中,對應A中有inf處為1,其他地方為0。isempty( A )
23、如果A是一個空矩陣,返回1;否則返回0。isequal(A, B)則返回1。如果A和B是相同的,即有相同的維數(shù)和相同的內(nèi)容,isreal( A ) 如果A是一個不帶虛部的實矩陣,則返回1;否則,返回零。isfinite( A )返回一個與A維數(shù)相同的矩陣。在這個矩陣中, A中元素是有限的,則對應元素為1;否則,為零。29二、圖形功能2維1.2維圖形生產(chǎn) 函數(shù)plot例子:1)y=0 0.58 0.70 0.95 0.83 0.25;plot(y)2) x=0:2*pi/30:2*pi; y=sin(x); plot(x,y)多條曲線:x=0:2*pi/30:2*pi; y1=sin(x); y
24、2=cos(x); plot(x,y1,x,y2)命令hold on;hold off函數(shù)linspase線型和顏色: plot(x,y1,.+,x,y2,-*)標記:xlabel, ylabel, title, text, gtext(sinx):axis坐標系多幅圖形:subplot(m,n,p)畫面分成m×n區(qū)域的第p個區(qū)域中畫圖;畫函數(shù)圖象:fplot(sin(x)./x,-20 20 -0.4 1.2), gtext(sin(x)/x)30二、圖形功能3維2.3維圖形mesh、surf、plot3()等+ y2x2sinz =例子:1)做函數(shù)圖形+ y2x2x=-10:0.
25、3:10;y=x;X,Y=meshgrid(x,y); Z=sqrt(X.2+Y.2); Z=sin(Z)./Z;mesh(X,Y,Z); (或surf(X,Y,Z)空間曲線螺旋線2)t=0:pi/50:10*pi;3) 等高線 contour對1),plot3(sin(t),cos(t),t)hold on;contour3(X,Y,Z,10,r)31三、多項式:多項式是用向量形式來表示,從最右邊算起,第一個為0 階系數(shù),第二個為1階系數(shù),依次類推。例如一個元三次多項式:4x3+3x2+2x+1用向量4 3 2 1來表示。1. 多項式的運算:1) 乘:conv指令執(zhí)行多項式的相乘運算,指令格
26、式為:z=conv (x,y) 例如:x=1 3 5; y=2 4 6;z=conv(x,y) z =210283830如果要對兩個以上的多項式進行相乘,可以重復使用conv指令,例如:(x,y同上) conv(conv(x,y),x)ans =21668172284280150322)分解:與1)相反,用deconv指令,其指令格式為: z,r=deconv (x,y)表示x除以 y商為z,余數(shù)為r。例如:z,r=deconv(z,x)z =246r =000003)求根:roots指令用于求多項式的根。例如:fx=1 3 2;rootoffx=roots(fx) rootoffx =-2-
27、1有如roos(1 0 1)334) polyval (p,x) 計算多項式p在x處的值,其中x可以是數(shù)或向量或矩陣。例如:p = 1-611-6;x=1;p1=polyval (p,x)結果為: p1 =0x=1,2,3;p2=polyval (p,x)結果為:p2 = x=A;p3 =06000p3=polyval (p,x)結果為:0240601202103365) polyder (p) 求p的微分多項式。 例如:p=1 -6 11 -6;dp=polyder(p) dp =343-12116) r,p,k=residue (a,b) a,b都沒有重根,則:求a/b的部分因式分解。若多
28、項式例如用求x/(x2+3x+2)的部分因式分解:x=1 0;y=1 3 2;當輸入三個參數(shù) r,p,k 時,該函數(shù)又會生成原來的函數(shù)。例如:r,p,k=residue(x,y)r =又例:x = 5 3 -2 7;y = -4 0 8 3;r, p, k = residue(x,y);2-1p =-2-1k = x,y=residue(r,p,k) x =1y =103235三 、符號變量、符號運算符號運算工具箱函數(shù)sym用于生成符號變量和符號表達式,如:x=sym(x); a=sym(alpha)分別創(chuàng)建變量x,alphaf=sym(a*x2+b*x+c)創(chuàng)建變量表達式f ,但要注意此式并
29、沒有自動創(chuàng)建變量a, b, c, x??梢杂煤瘮?shù)syms對多個變量同時定義,如 :symsabcx函數(shù)sym也可以用來表示確定的函數(shù),如f=sym (f(x)函數(shù)f (x) 。36常見符號計算:1. 微分:diff是求微分最常用的函數(shù)。其輸入?yún)?shù)既可以是函數(shù)表達式,也可以是符號矩陣。Diff (f, x, n)表示對f關于x求n階導數(shù)。例如:1) 下面程序段將生成表達式sin (ax), 并分別對其中的x和a求導。symsaxf=sin(a*x); df=diff(f,x) df =cos(a*x)*a dfa=diff(f,a) dfa =cos(a*x)*x372) 若輸入?yún)?shù)為矩陣,將對
30、矩陣中的每個元素求導.symsaxA=-sin(a*x),sin(a*x);cos(a*x),cos(a*x)A = -sin(a*x), cos(a*x), dy=diff(A,x) dy =sin(a*x)cos(a*x) -cos(a*x)*a, cos(a*x)*a -sin(a*x)*a, -sin(a*x)*a383)、可用函數(shù)jacobian來計算Jacobi矩陣。syms r l f x=r*cos(l)*cos(f); y=r*cos(l)*sin(f); z=r*sin(l); J=jacobian(x;y;z,r l f)J = cos(l)*cos(f), -r*sin
31、(l)*cos(f), -r*cos(l)*sin(f) cos(l)*sin(f), -r*sin(l)*sin(f),r*cos(l)*cos(f)sin(l),r*cos(l),0392.:用函數(shù)int來求符號表達式的格式為:。命令int (f, r, x0, x1)其中f為所要的表達式,r為,則x0,x1為變量,若為定上下限。例:syms x; f=exp(-x2) f =exp(-x2)int(f,x) ans =1/2*pi(1/2)*erf(x)int(f,x,-inf,inf) ans =pi(1/2)03.級數(shù)求和:函數(shù)用于對符號表達式求和。例:syms k; s1=syms
32、um(1/k2,1,inf) s1 =1/6*pi2 s2=symsum(1/k,1,inf) s2=inf414. 極限:用函數(shù)limit來求表達式的極限。函數(shù)limit的常用調(diào)用格式:數(shù)學表達式命令格式Limit (f ),或limit (f , x ) Limit (f , x , a) , 或 limit (f , aLimit (f , x , a , left)Limit (f , x , a , right)syms x;f=exp(-x2);limit(f,x,inf) ans=042limf ( x )x ® 0limf ( x )x ® alimf (
33、x )x ® a -limf ( x )x ® a +5.化簡:1)、collect (f )將表達式中相同次冪的項合并,也可以再輸入一個參數(shù)指定以哪個變量的冪次合并。2)、expand ( f ) 將表達式展開。3)、horner ( f )將表達式轉(zhuǎn)換為嵌套格式。減少運算次數(shù)4)、factor ( f )將表達式分解因式,并且分解后的多項式的所有系數(shù)都為有理數(shù)。5)、simplify ( f )進行化簡。利用函數(shù)規(guī)則對表達式43函數(shù) f (設有,利用的符號運算工具箱可以對該函數(shù)進行分、Taylor 冪級數(shù)展開等。clear clc推導,得出諸如高階導數(shù)、積syms x;
34、 f='x2*(sin(x)2' diff(f); f1=simple(ans) diff(f,x,2); f2=simple(ans) diff(f,x,3); f3=simple(ans) diff(f,x,4); f4=simple(ans) int(f4,x) taylor(x2*(sin(x)2,15,x)44的程序設計45文件和函數(shù)文件M文件有兩種形式 :文件(Script File)和函數(shù)文件(FunctionFile )。這兩種文件的擴展名,均為“ . m” 。1.1M文件§ 對于一些比較簡單的問題 ,在指令窗中直接輸入指令計算 。§ 對于復
35、雜計算,采用文件(Script file)最為合適 。§ M只是按文件所寫的指令執(zhí)行 。文件的特點是:文件的比較簡單,只是一串按用戶意圖排列而成的(包括流向指令在內(nèi)的)指令集合。文件運行后 ,所產(chǎn)生的所有變量都駐留在基本工作空間(Base workspace)中。只要用戶不使用清除指令(clear),在基本工作空間中。指令窗不關閉,這些變量將一直保存46M文件文件建立方法:1. 在中,點: File->New->M-file, 生成編輯窗口2. 在編輯窗口中輸入復雜的計算命令集合;3. 點:File->Save,存盤,文件名任意易記憶的.例、隨機產(chǎn)生50個隨機數(shù),并
36、用圖形顯示結果(比較均勻分布與正態(tài)分布)a=rand(1,50);subplot(1,2,1); plot(a);b=randn(1,50); subplot(1,2,2); plot(b);471文件和函數(shù)文件(續(xù)1)1.2M函數(shù)文件§ 與進并經(jīng)文件不同 ,函數(shù)文件猶如一個“黑箱”,把一些數(shù)據(jù)送處理,再把結果送出來。提供的函數(shù)指令大部分都是由函數(shù)文件定義的。§ M函數(shù)文件的特點是: 從形式上看 ,與文件不同 ,函數(shù)文件的笫一行總是以 “function”引導的“函數(shù)申明行”。 從運行上看行,與文件運行不同,每當函數(shù)文件運就會專門為它開辟一個臨時工作空間,稱為函數(shù)工作空間(
37、 Function workspace) 。當執(zhí)行文件最后一條指令時 ,就結束該函數(shù)文件的運行,同時該臨時函數(shù)空間及其所有的中間變量就立即被清除。使用比 “標稱數(shù)目 ”較少的輸入輸出變量,實現(xiàn)對函數(shù)的調(diào)用 。481.3M文件的一般結構§ 由于從結構上看 ,文件只是比函數(shù)文件少一個“函數(shù)申明行”,所以只須描述清楚函數(shù)文件的結構 。§ 典型 M函數(shù)文件的結構如下 : 函數(shù)申明行:位于函數(shù)文件的首行,以關鍵字 function 開頭,函數(shù)名以及函數(shù)的輸入輸出宗量都在這一行被定義。 笫一注釋行:緊隨函數(shù)申明行之后以%開頭笫一注釋行。該行供lookfor和 help使用 。文本區(qū) :
38、笫一注釋行及其之后的連續(xù)以%開頭的所有注釋行 編寫和修改整個:與文本。文本區(qū)相隔一個“空”行,也以%開頭,標志編寫及修改該M文件的作者和日期等 。 函數(shù)體:為清晰起見,它與前面的注釋以“空”行相隔。49M文件建立方法:1.2.3.中點:File->New->M-file在在編輯窗口中輸入程序內(nèi)容點:File->Save存盤,文件名必須函數(shù)名一致。例:定義函數(shù) f(x1,x2)=100(x2-x1 ) +(1-x1)2 221.建立M文件:fun.mfunctionf=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;2. 可以直接使用函數(shù)fun.m例如:計
39、算 f(1,2), 只需在x=1 2;fun(x)命令窗口鍵入命令:502函數(shù)調(diào)用和參數(shù)傳遞2.1局部變量和全局變量§ 局部(Local)變量:它存在于函數(shù)空間內(nèi)部的中間變量,產(chǎn)生于該函數(shù)的運行過程中,其影響范圍也僅限于該函數(shù)本身 。§ 全局(Global)變量:通過 global 指令,也幾個不同的函數(shù)空間以及基本工作空間共享同一個變量,這種被共享的變量稱為全局變量。2.2函數(shù)調(diào)用§ 在中,調(diào)用函數(shù)的常用形式是:輸出參數(shù)1,輸出參數(shù)2, = 函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2, )§ 函數(shù)調(diào)用可以嵌套,一個函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)(遞歸調(diào)用)。用它51
40、2.3參數(shù)傳遞在函數(shù)調(diào)用上有一個與眾不同之處 :函數(shù)所傳遞的參數(shù)具有可調(diào)性 。§ 傳遞參數(shù)數(shù)目的可調(diào)性來源于如下兩個變量: 函數(shù)體內(nèi)的 nargin 給出調(diào)用該函數(shù)時的輸入?yún)?shù)數(shù)目。 函數(shù)體內(nèi)的 nargout 給出調(diào)用該函數(shù)時的輸出參數(shù)數(shù)目。§ 只要在函數(shù)文件中包括這兩個變量,就可以知道該函數(shù)文件調(diào)用時的輸入?yún)?shù)和輸出參數(shù)數(shù)目。§ 值得注意:nargin、 nargout 本身都是函數(shù),不是變量,所以用戶不能賦值,也不能顯示。§ “變長度”輸入輸出變量:varargin 、 varrgout。具有接受“任意多輸入” 、返回“任意多輸出”的能力 。522
41、.32.3.1程序流§ 循環(huán)結構:的程序結構和流提供兩種循環(huán)方式。forend 循環(huán)和while-end循環(huán)。§ 分支結構: ifelseend 。/ifelseifelseend§ switch-case 結構。for x=arraycommands endwhile expressioncommands endif expressioncommands1 elsecommands2endswitch (a) case (a)1commands1 case (a=)2commands3 case 3 otherwisecommandn endif(express
42、ion1)commands1elseif (expression2)commands2 elseif (expression3)commands3 elseif elsecommands end5323233的程序結構和圖形用戶界面(GUI)編程流(續(xù))§ 現(xiàn)代的主流應用程序已經(jīng)從命令行的交互方式轉(zhuǎn)變?yōu)橐詧D形界面為主的交互方式,這主要是由于它給用戶帶來了操作和的方便與靈活性。(面向?qū)ο缶幊蹋┠軌蛞员容^簡單的方式實現(xiàn)一系列的圖形界面功能。通過對控件、菜單屬性的設置和 Callback 的編寫,就能夠滿足大多數(shù)用戶的需求。§ 控件的 Callback 屬性: Callback 屬性的取值是字符串,可以是某個M文件名或一小段語句。當用戶激活控件對象(例如 :在控件對象圖標上單擊鼠標左鍵 )時,應用程序就運行 Callback 屬性定義的子程序。§ 菜單的 Callba
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合同模板從業(yè)人員退職酬勞金運用及支配辦法范本
- 2025墻體廣告制作合同范文
- 課題申報參考:綠色轉(zhuǎn)型下“綠天鵝”風險傳染網(wǎng)絡效應研究:實證識別與政策協(xié)同
- 課題申報參考:聯(lián)合國教科文組織STEM一類中心建設研究
- 課題申報參考:考慮農(nóng)戶異質(zhì)性的農(nóng)產(chǎn)品直播電商平臺供應鏈合作模式與運營決策研究
- 設計未來辦公體驗科技創(chuàng)新的視角
- 科技助力下的現(xiàn)代家庭急救體系
- 2024年會議電視圖像保密機項目資金籌措計劃書
- 游戲化學習在小學科普教育中的重要性研究
- 河北省石家莊市正定縣2024-2025學年八年級上學期1月期末道德與法治試題(含答案)
- 2023-2024學年度人教版一年級語文上冊寒假作業(yè)
- 2024醫(yī)療銷售年度計劃
- 稅務局個人所得稅綜合所得匯算清繳
- 人教版語文1-6年級古詩詞
- 上學期高二期末語文試卷(含答案)
- 職業(yè)發(fā)展展示園林
- 七年級下冊英語單詞默寫表直接打印
- 2024版醫(yī)療安全不良事件培訓講稿
- 中學英語教學設計PPT完整全套教學課件
- 移動商務內(nèi)容運營(吳洪貴)項目五 運營效果監(jiān)測
- 比較思想政治教育學
評論
0/150
提交評論