實驗三MATLAB的程序設計_第1頁
實驗三MATLAB的程序設計_第2頁
實驗三MATLAB的程序設計_第3頁
實驗三MATLAB的程序設計_第4頁
實驗三MATLAB的程序設計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、桂林電子科技大學數(shù)學與計算科學學院實驗報告院(系) 課程 名稱數(shù)學與計算科學 數(shù)學應用軟件實驗學號實驗項目 名 稱姓名實驗三 MATLAB的程序設計2.,實驗目的1. 掌握建立與編輯函數(shù)文件和腳本文件的方法;2. 掌握MATLAB編程語言的基本控制語句;3. 掌握MATLAB程序的調試。二,實驗原理if 語句、 switch 語句、forMATLAB有三種基本程序結構:順序、選擇和循環(huán)。主要的語句有 循環(huán)語句和while循環(huán)。1.選擇結構(1) if語句:if條件表達式執(zhí)行語句elseif條件表達式執(zhí)行語句endswitch語句 switch表達式 case表達式 執(zhí)行語句 case表達式 執(zhí)

2、行語句otherwise執(zhí)行語句end循環(huán)結構(1) for循環(huán)for循環(huán)變量=表達式執(zhí)行語句end其中表達式是一個矩陣,矩陣的列被一個一個的賦給循環(huán)變量,然后執(zhí)行循環(huán)體內的語句。while循環(huán)while條件表達式執(zhí)行語句End3. 其它流程控制函數(shù)for循環(huán)和while循環(huán),用于結束當次continue語句與if語句相結合,當滿continue : continue語句通常用在循環(huán)控制中,包括 循環(huán),繼續(xù)執(zhí)行下一次循環(huán),但是不結束當前循環(huán)。一般 足一定的條件時,執(zhí)行continue語句。break:與continue相同的是,break函數(shù)也是用于循環(huán)控制,中斷當前循環(huán)。與continue不

3、同,break跳出當前循環(huán),不再執(zhí)行該循環(huán)的任何操作。return :結束該程序的執(zhí)行,返回到調用函數(shù)或者鍵盤。4.創(chuàng)建M文件M文件以.m為擴展名,它有兩種形式:腳本文件和函數(shù)文件。(1)腳本文件的創(chuàng)建進入MATLAB命令窗口后,選擇“File”下拉菜單中的“new”選擇“ M-file ”,或在MATLAB 命令窗口輸入“ edit M文件名”,或點擊工具欄中的“新建”按鈕。在M文件編輯窗口中,寫入符合語法規(guī)則的。編寫完命令文件后,選擇“file ”下拉式菜單中的“ save”項,然后依提示輸入一個文件名。至此,完成了腳本文件的創(chuàng)建。(2)函數(shù)文件的創(chuàng)建函數(shù)文件的創(chuàng)建與腳本文件的創(chuàng)建方法完全

4、一樣,只是在函數(shù)文件的第一句可執(zhí)行語句必 須是function引導的定義語句,并且輸入文件名時要與定義語句中的函數(shù)名相同。(3)腳本文件與函數(shù)文件的調用創(chuàng)建了腳本文件后,只在命令窗口鍵入腳本文件名,再按回車鍵,就可以執(zhí)行腳本文件中 所包含的所有命令。函數(shù)文件一旦創(chuàng)建,就可以與其它的MATLAB函數(shù)一樣調用了。5.程序的調試在程序調試時,程序運行中變量的值為一個重要的線索。因此,查看變量值為程序調試的 重要線索,由于在函數(shù)調用時只返回最后的輸出參數(shù),而不返回中間變量,因此,可以選擇下 面的方法查看程序運行中的變量值。;)刪除,將結果顯示在命令窗口中,與(1)通過分析后,將可能出錯的語句后面的分號

5、( 預期值進行比較;當MATLAB執(zhí)行至此處時將暫停,等待用 k>>提示符,用戶可以查看工作區(qū)中的變量,(2)利用函數(shù) disp顯示中間變量的值;(3) 在程序中的適當位置添加keyboard指令。戶反應。當程序運行至此時將暫停,在命令窗口中顯示可以改變變量的值。輸入return指定返回程序,繼續(xù)運行。(4)在調試一個單獨的函數(shù)時,可以將函數(shù)改寫為腳本文件,此時可以直接對輸入?yún)?shù)賦值,然后以腳本方式運行該M文件,這樣可以保存中間變量,在運行完成后,可以查看中間變量的值,對結果進行分析,查找錯誤所在。1三,實驗內容21.分別用腳本文件和函數(shù)文件實現(xiàn)以下功能:輸入?yún)?shù)a,b,c,畫出函

6、數(shù)y = ax +bx + c的圖像;x + 1,xc02.編程實現(xiàn):輸入x的值,計算函數(shù)f(x)的函數(shù)值,其中f(x) =1,1<xc1,并計算I 2x ,x > 1f (-0.7), f (0.5), f (1.5)3.編寫一個函數(shù) mylog(n,x)來計算實數(shù)x的對數(shù),其中,當 n取10,計算以10為底的對數(shù);當n 取2時,計算以2為底的對數(shù),當n取3時,計算以自然底數(shù)為底的對數(shù),當n取其它數(shù)時候,用換底公式進行計算。4. 編程實現(xiàn)求和:s(n) =1-2+3-4+.+(-1)n十ns(n) h-1 +1-丄+. +(-1).*丄234n5.計算和式S(n) =1!+2!

7、+ . + n!,當和大于1000時,退出;n!6.計算組合數(shù)八忒礦,用遞歸實現(xiàn);7,計算以下和式,并估計其求和公式以及驗證:nS(n) =2 k =1 +2 +3 +.+nk inS(n) =2 k2 =12 +22 +32 +. + n2k :nS(n) =£ k3 =13 +23 +33 + . + n3k rn8,估計以下級數(shù)的和,并編程驗證。處 11111S =送 一:=+1H H+k#k!1! 2!3!n!S=丄+丄+丄+.+: +k#k(k +1)1咒2 2 咒3 3咒 4nx(n+1)k4 2k -13 5 7 2k-19,畫一個國際象棋的棋盤;10,給N個人編上號:

8、1,2,3,., N,按順序圍成一個圈坐好,從1號開始報數(shù),報到 M (M C N)的人退出,下一個人再從 1開始往下報數(shù),重復這個過程,請問最后剩下的那個人的號數(shù)是多少?請編程實現(xiàn),并取 N =10, M =3進行驗證;11,求出1 N之間的所有素數(shù);12,求出所有的水仙花數(shù)(所謂水仙花數(shù),是滿足以下條件的三位數(shù):各位數(shù)的立方之和等于它本身,例如,13 +53 + 33 =153);13,14,15,16,將一個正整數(shù)進行質因數(shù)分解,例如: 90 = 2*3*3*5;求兩個正整數(shù) m, n的最小公倍數(shù)和最大公因數(shù);有一個已排好序的數(shù)組,現(xiàn)在輸入一個數(shù),請按照原來的規(guī)律將此數(shù)插入到數(shù)組中; 將

9、一個數(shù)組逆序輸出;四,實驗結果分析或總結21.分別用腳本文件和函數(shù)文件實現(xiàn)以下功能:輸入?yún)?shù)a,b,c,畫出函數(shù)y=ax +bx + c的圖像;(1)M腳本文件: a=inpu t('a='); b=i np ut('b='); c=inpu t('c='); x=-5:5/1000:5; y=a.*x.A2+b.*x+c; plot(x,y) 結果輸入:>> lx11a=1b=1c=1 >>C占HLQiihr-ap IJ nioT Ivlph 追Q 劈竄 S iz 圖像:(2) M函數(shù)文件:fun ction lx12(

10、a,b,c) x=-5:5/1000:5; y=a.*x.A2+b.*x+c; plot(x,y)運行函數(shù):1x12(1,1,1)圖像:卜FiKiiEt ilx + 1,x c 02.編程實現(xiàn):輸入x的值,計算函數(shù)f(x)的函數(shù)值,其中f(x) =1,1<xc1 ,并計算x2,x 31f (-0.7), f (0.5), f (1.5)M函數(shù)文件:function y =f(x) if x<0y=x+1; elseif x<1 y=l; else y=x2 end結果:>> f(-0.7)ans =0.3000>> f(0.5) ans =1 >

11、> f(1.5) y =2.2500 ans =2.25003.編寫一個函數(shù) mylog(n,x)來計算實數(shù)x的對數(shù),其中,當 n取10,計算以10為底的對數(shù);當 n 取2時,計算以2為底的對數(shù),當n取3時,計算以自然底數(shù)為底的對數(shù),當n取其它數(shù)時候,用換底公式進行計算。M函數(shù)文件function y = mylog( n,x)if n=10 y=log10(x);elseif n=2y=log2(x); elseif n=3y=log(x); elsey=log(x)/log( n); end結果:>> mylog(10,5) ans =0.6990 >> my

12、log(2,5) ans =2.3219ans =1.29254.編程實現(xiàn)求和:s(n) =1-2+3-4+.+(-1)n*n1111s(n) =1 +. +(1)n* _23 4n(1)M函數(shù)文件: fun cti on Y=s( n)Y=0;for i=1:nY=Y+(-1)A(i+i)*i; end結果測試:> s(4) ans =-2153>> s(100) fun cti onY=s( n)Y=0;for i=1:nY=Y+(-1)A(i+l)*(l/i); end結果測試:>> s(4) ans =0.58335.計算和式S(n)=1!+2!+.+ n

13、!,當和大于1000時,退出;fun cti onY=s( n)Y=0;a=1;for i=1:na=a*i;Y=Y+a;if Y>1000dis p('S(n)>1000, i ?3?-?-break ;end end程序測試:>> s(5) ans =S(n)>1000,退出循環(huán)ans =5913>> s(3)66.計算組合數(shù)C:n!=,用遞歸實現(xiàn);k!( n- k)!kM函數(shù)文件:fun cti onY = c(k ,n)if k<0 | n<0);error( 'k or n is smaller tha n 0,p

14、ut in aga in r return ;elseifk>nerror(end'k>n,put in aga in!');if k=0Y=1;elseifk=1&&n=1Y=1;elseifk<=nY=( n/k)*c(k-1, n-1);end程序測試:>> c(0,0) ans =>> c(0,1) ans =>> c(3,4) ans =7,計算以下和式,并估計其求和公式以及驗證:nS(n) k =1 +2+3+ nk壬fun cti on Y=s( n)Y=0;for k=1: nY=Y+k;en

15、d測試:ans =nS(n) =2 k2 =12 +22 +32 + n2k 111S=0;fun cti onY=s( n)Y=0;for k=1: n丫=丫+"2;end測試:>> s(3) ans =14nS(n)=2 k3 =13 +23 +33 +. + n3k 1fun cti on Y=s( n)Y=0;for k=1: n丫=丫+"3;end測試:>> s(2) ans =8,估計以下級數(shù)的和,并編程驗證。丄+ 1 +2!3!+丄+n!1 1 1S=2 - =1心k! 1!程序:a=1;S=0;for k=1:100000a=a*k;

16、S=S+1/a;end dis p(S);驗證:>> s1.7183ck#k(k+1)=丄+1X2233咒4+nx( n+1)程序:for k=1:100000S=S+1/(k*(k+1);end dis p(S);檢驗:>> s1.00001+1 丄+ + 凹二+3 57 2k -1程序:S=0;for k=1:100000S=S+(-1)A(k+1)/(2*k-1);end dis p(S);檢驗:>> s0.78549,畫一個國際象棋的棋盤;10,給N個人編上號:1,2,3,., N,按順序圍成一個圈坐好,從1號開始報數(shù),報到 M (M < N)

17、的人退出,下一個人再從 1開始往下報數(shù),重復這個過程,請問最后剩下的那個人的號數(shù)是多少?請編程實現(xiàn),并取 N =10, M =3進行驗證;M函數(shù)文件:fun cti onx,y=Jose ph0(N,M) a=1:N; t=1;k=1;while t l,k=size(a);if len gth(a)=1 dis p(a);break ; endif k<Mwhile kif len gth(a)=1 break ;endfor r=1:(M-1) c=a(1); a(1)=; a=a c;enda(1)=; k=k+1; endelse for i=1:(M-1) b(i)=a(i);

18、end a(M)=; for j=1:(M-1) a(M-j)=;end for i=1:(M-1) a=a b(i);end t=t+1;end end驗證:>> Jose ph0(10,3)4>> Jose ph0(7,4)211,求出1 N之間的所有素數(shù);M函數(shù)文件:fun cti onout = np rimes(N)A= 1:N;A=0;i=2;while i<= floor(sqrt(N);for j= 2:fix(N/i)A(i*j) = 0;end ;i = A(fi nd(A>i,1); end ;out=non zeros(A);檢驗:&

19、gt;> np rimes(20)ans =231113171912,求出所有的水仙花數(shù)(所謂水仙花數(shù),是滿足以下條件的三位數(shù):各位數(shù)的立方之和等于它本身,例如,13 +53 +33 =153);程序:for i=100:999a=fix(i/100); b=fix(mod(i,100)/10);c=mod(i,10);if a3+b3+c3=idis p( i);end end結果:>> 1x1015337037190 = 2*3*3*540713,將一個正整數(shù)進行質因數(shù)分解,例如:fun cti on c=p rimfactor(a)b=2:sqrt(a);c=;whil

20、eise mp ty(b)if mod(a,b(1)b(mod(b,b(1)=;con ti nue ;elsec=c,b(1);a=a/b(1); b(b>sqrt(a)=; endend dis p('該正整數(shù)的質因數(shù)為: '); c=c,a;測試:P rimfactor(90)該正整數(shù)的質因數(shù)為:ans =14,求兩個正整數(shù) m,n的最小公倍數(shù)和最大公因數(shù);M函數(shù)文件:function M,N=gcmlcm(m, n)t=mi n(m,n);while tif mod(m,t)=0 & mod( n, t)=0disp(mn的最大公約數(shù):'); dis p(t);break;endt=t-1;endg=m* n/t;disp('m,n的最小公倍數(shù):');dis p(g);程序測試:gcmlcm(4,6)的最大公約數(shù):2m,nm,n的最小公倍數(shù)

溫馨提示

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

評論

0/150

提交評論