Matlab基本程序設計解讀課件_第1頁
Matlab基本程序設計解讀課件_第2頁
Matlab基本程序設計解讀課件_第3頁
Matlab基本程序設計解讀課件_第4頁
Matlab基本程序設計解讀課件_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

MATLAB的編程環境變量與表達式三類運算符程序的三種結構MATLAB

程序設計I命令行操作方式(交互方式)

在命令窗口直接輸入簡單的命令,進行一般的數學演算或繪制圖形;程序設計方式(批處理方式)

編寫M文件并在命令窗口運行.M文件分“程序文件”和“函數文件”兩類

程序文件內容是按先后次序編寫MATLAB命令的一個文本(Script-file)

函數文件在形式上只是比程序文件多一行關鍵字.

兩類文件都只能在程序編輯窗口建立。MATLAB兩種常用的工作方式:2/18例1.馬鞍面z=xy圖形r=1:20;tha=(0:72)*pi/36;x=r'*cos(tha);y=r'*sin(tha);z=x.*ysurf(x,y,z)3/18對于需要幾行(或幾十行)命令才能完成的作業,最好用程序編輯器編寫程序。對該程序命名,保存在當前工作目錄中.磁盤上會產生一個后綴為.M的文件。所謂程序,就是一個MATLAB的命令序列在命令窗口鍵入文件名,系統會逐行執行該文件中的每條命令.這就是“批處理”的意義4/18進入MATLB程序編輯器的三種方式從命令窗口的菜單欄上選擇

FileNewM-file鼠標單擊工具欄上第一個空白圖標(新文件)鍵盤鍵入edit[文件名]5/18p(10)=1;fork=10:-1:2p(k-1)=2*(p(k)+1);endp(1)例2有一天小猴摘下若干桃子,當即吃掉了一半,還覺得不過癮,又多吃了一個.第二天接著吃了剩下的一半,又多吃了一個.以后每天都吃掉尚存桃子的一半另加一個.到第十天早上,只剩下1個桃子了.問小猴第一天摘下多少桃子?解:記pk為第k天的桃子數,遞推公式

pk-1=2(pk+1)6/18變量命名規則變量名和函數名對字母的大小寫敏感;

X,x,Z,z是不同變量變量名的第一個字符必須是一個英文字母,最多可包括31個字符;

x1,x2,x3變量名可由英文字母、數字和下劃線混合組成

;變量名中不得包含空格和標點,但可以由下連字符MATLAB的變量與表達式7/18局部變量:具有函數內部作用范圍全局變量:可在幾個函數和基本工作空間之間共享,具有全局作用范圍全局變量的聲明:

global變量名1變量名2…2.

局部變量和全局變量永久變量

ans;eps;pi;i;j;inf;NaN;8/18表達式——由變量、運算符、函數、數字組成表達式創建常用賦值方法實現變量=表達式

MATLAB書寫表達式的規則與“手寫算式”幾乎相同

x=(3*4^2+exp(sin(45)))/6y=20.3+3.9*sin(x);z=sin(x)+cos(x);[x,y,z]=peaks4.基本表達式9/18

使用規則:所有字符串都用單引號括起來;字符串中的每個字符都是字符串變量中的一個元素;例a='Thisisabook'

a=Thisisabooka(1:7)ans=Thisis字符串數組length(a)ans=14將整數轉換成字符命令:int2str()拼接字符串命令:strcat(T1,T2,T3)10/18生肖問題——今年是雞年還是猴年?n=input('inputn:=');S='猴雞狗豬鼠牛虎兔龍蛇馬羊';k=rem(n,12)+1;s=S(k);s=strcat(int2str(n),'年是',s,'年')inputn:=2004s=2004年是猴年Inputn:=2008s=2008年是鼠年11/18+加.+點加-減.-點減^矩陣冪.^點冪*乘.*點乘/右除./點右除\左除.\點左除1.算術運算符2.關系運算符

<小于

<=小于等于

>大于

>=大于等于

==等于

~=不等于3.邏輯運算符

&與(and)|或(or)~非(not)12/18MATLAB程序結構1.順序結構;2.循環結構;3分支結構順序結構依照順序執行程序的各條語句。語句在程序文件中的位置將影響運行結果。循環結構按條件決定重復執行一條(組)語句分支結構根據不同條件分別執行不同語句三種基本結構語句可組合成結構復雜的程序13/18例.用y4(x)=x–x3/3!+x5/5!-x7/7!近似正弦函數sinx在區間[0,3π/2]內值并繪出逐步逼近的圖形.x=0:0.2:3*pi/2;y=sin(x);y1=x;y2=y1-x.^3/6;y3=y2+x.^5/120;y4=y3-x.^7/720;plot(x,[y;y1])plot(x,[y;y2])plot(x,[y;y3])plot(x,[y;y4])14/18for-end循環語法為:forx=array

可執行語句

end例:利用for循環求1!+2!+3!++5!的值

sum=0;fori=1:5pdr=1;fork=1:ipdr=pdr*k;endsum=sum+pdr;end15/18while-end循環

while循環將循環體中的語句循環執行不定次數。語法為:

while表達式循環體語句

end表達式一般是由邏輯運算和關系運算以及一般運算組成的,以判斷循環的進行和停止;只要表達式的值(邏輯值)結果為正確(非0),繼續循環;直到表達式值為0,循環停止。6/18五個水手帶了一只猴子來到太平洋一個荒島上,發現有一大堆椰子.由于旅途的顛簸,大家都很疲倦,很快入睡了.第一個水手醒來后,把椰子平分成五堆,將多余的一只給了猴子,他私藏了一堆后又去睡了.第二、第三、第四、第五個水手也陸續起來,和第個水手一樣,把椰子分成五堆,恰多一只給猴子,私藏一堆,再去入睡.天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再給猴子.試問原先共有幾只椰子?水手、猴子、椰子問題17/1818/18p=1.5;x=0;whilep~=fix(p)x=x+1;p=5*x+1;fork=1:5p=5*p/4+1;endenddisp([x,p])ans=102315621設最初的椰子數為p0,椰子數變化規律:五個水手最后得到椰子數為x試探求解計算:

P5=5x+1Pk=5Pk+1

/4+1(k=4,3,2,1,0)MATLAB的函數文件For循環語句While循環語句If分支語句MATLAB

程序設計IIMATLAB的函數文件編寫函數文件的主要目的,是為了解決某一特殊問題而擴充MATLAB的功能.函數文件名必須以英文字母開頭,并以.m為后綴,如f1.m、f2.m、g1.m、g2.m、……function

因變量名=函數名(自變量名)

函數體注意:函數名應該和文件名相同編寫函數文件一定要按以下格式2/18編寫函數文件functiony=h1(x)y=1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6;例1.分析函數性質存盤后,回到MATLAB命令窗口fplot(‘h1’,[0,2])grid3/18for變量=初值:[步長:]終值

··············…語句組……………endwhile條件

……………語句組…………endfor循環語句和while循環語句的結構4/18sum=0;i=1;whilei<=100sum=sum+i;i=i+1;endsum

例2:用循環語句求1~100間整數的和例3Fibonacci數列遞推公式:

Fn+1=Fn

+Fn–1

(F0=1,F1=1)計算前n項n=input('inputn:=');f(1)=1;f(2)=2;k=2;whilek<nf(k+1)=f(k)+f(k-1);k=k+1;endf5/18functionm=fi(n)a=1;b=1;ifn==0|n==1m=a;elsefork=2:nm=a+b;a=b;b=m;endendif表達式

…語句組………………endIf條件語句的結構if表達式

…語句組1…Else···語句組2···end6/18

if表達式1

語句1elseif表達式2

語句2elseif表達式3

語句3

··

else

語句nend多分支語句7/18

例4.某學生發現一個奇妙的“定理”,請角谷教授證明,教授無能為力,于是產生了角谷猜想。其內容是:對任一自然數n,按如下法則進行運算:若n為偶數,則將n除2;若n為奇數,則將n乘3加1。運算結果是自然數,將新數按上面法則繼續運算,重復若干次后計算結果最終是1。設計算法用計算機驗證這一猜想。算法:(1)輸入數n;(2)求n除2的余數r;(3)如果r為零,則將n除2,否則將n乘3加1; (4)判斷:若n為1則結束算法,否則轉2.8/18n=input(‘inputn=’); %輸入數據whilen~=1 %循環入口

r=rem(n,2); %求n/2的余數

ifr==0n=n/2 %第一種操作

elsen=3*n+1 %第二種操作

endendn %顯示n驗證角谷猜想的MATLAB程序:9/18練習.關于數學模型1.考慮拋射體的落點比發射點高的情況(如投藍球、高壓水龍頭用于樓房滅火),最遠射程與發射角的關系。數學模型如何描述?2.考慮拋射體的落點比發射點低的情況(如投標槍、推鉛球),最遠射程與發射角的關系。數學模型如何描述?15/18練習.關于程序設計選用一種計算機語言(例如VisialBASIC)繪制不同發射角所對應的拋射曲線所形成的曲線族用水平滾動條控制發射角度,使發射角在0到900之間變化16/18寶石加工廠需要將石料內已知位置上的一塊精品切割出來.石料尺寸為19×14×12(cm3)

,需要切割的精品尺寸為5×4×2(cm3),且二者的左側面、前面、底面相互平行,距離分別為6cm,7cm,9cm。寶石加工問題:切割加工費用:垂直切割3元/cm2

,水平切割5元/cm2。試確定切割的工作流程,使切割的總費用最少。

(為了減少旋轉刀具的次數,要求同向切割連續兩次后再旋轉刀具)17/1818/1819

14126795428315

14126795428315

412679542831542679542831追擊問題的模擬實驗摩托車問題的程序設計約瑟夫環問題的算法設計問題與練習MATLAB

程序設計III歐洲文藝復興時期的著名人物達·芬奇提出的“狼追兔子”問題:當一只兔子在它的洞穴南面60碼處覓食時,一只餓狼出現在它的正東100碼處.兔子急奔自己的洞穴,狼以快兔子一倍的速度緊追兔子.兔子回洞穴便可逃脫厄運,問狼是否會追趕上兔子?追擊問題用計算機模擬2/18

設在平面坐標系中有動點Q和動點P,在初始時刻動點Q的坐標為(0,0),動點P的坐標為(100,0)。在某一時刻,動點Q

以均勻速度v0=1(m/min)沿Y軸正向運動,而動點P以2v0的速度追趕Q點。計算機模擬xO10060y在時刻

tk

,動點坐標分別為:Q(uk,vk),P(xk,yk),動點P的軌跡是追趕曲線。在tk

到tk+1

時段內,uk=0,vk=tk,P點在這一時段內運動方向由k時刻位置指向Qk,用單位向量描述3/18由于P點運動速度為Q點運動速度的兩倍,而tk時刻P的坐標為(xk

,yk

),故P點在tk+1時刻的坐標(xk+1,yk+1)可表示為

以1秒鐘為一個時間步長,模擬P點追趕Q點的運動過程。

4/18xy=[100,0];uv=[0,0];e=[-1,0];d=100;fork=1:59xy(k+1,:)=xy(k,:)+2*e;uv(k+1,2)=k;e=uv(k+1,:)-xy(k+1,:);d=norm(e);e=e/d;endx=xy(:,1);y=xy(:,2);plot(x,y,'*',0,60,'o')d程序運行后,計算結果為

d=8.0953說明當Q點前進到60m時,P點沒能追上Q點

5/18當t=0時,導彈位于原點O,敵機位于(V,H)點,H=12000(km).當時刻t,導彈位于P(x(t),y(t))實驗設計題:導彈追擊問題12000P(x,y)O6/18四人追逐問題:正方形ABCD四個頂點上各有一人,在某一時刻,四人同時出發以勻速v按逆時針方向追趕下一個人.追趕者始終以下一個人為追趕目標.(已解決)(1).用計算機模擬方法畫出四條追趕曲線.(2).能否建立數學模型?7/18一次軍事演習中,A、B兩隊約好同一時間從相距離100公里的各自的駐地出發相向運動,A隊行進速度為

10(公里/小時),B隊行進速度為8(公里/小時)。行軍開始時,通訊員騎摩托從A隊駐地出發為行進中的兩隊傳遞消息。摩托車的速度為60(公里/小時)往返于兩隊之間.每遇一隊,立即折回駛向另一隊.當兩隊距離小于0.5公里時,摩托車停止。計算通訊員駕駛摩托車跑了多少趟(從一隊駛向另一隊為一趟)。(已解決)——摩托車問題——8/18——摩托車問題——問題分析:

相遇問題模型.系統中有A、B、C三個點.

設A(隊)出發點為x=0,速度為10;B(隊)出發點為x=100速度為8.A向右運動,B向左運動.C(摩托)出發點為0,第一趟向右。用“1”表示C向右運動,“–1”表示C向左運動;當C向右運動時,為C、B相遇問題當C向左運動時,為A、C相遇問題每相遇一次,計算一次相遇時間、各點的位移和位置當(b–a)<0.5時程序結束。9/18s2=100;s1=0;d=s2-s1;v1=10;v2=8;v0=60;f=1;k=0whiled>0.5iff==1t=d/(v1+v0);elset=d/(v2+v0);ends1=s1+v1*t;s2=s2-v2*t;d=s2-s1;f=-f;k=k+1;endk,s1MATLAB程序10/18有n個人圍成一圈,順序排號,從第一個人開始報數(從1到m報數),凡報到m的人退出圈子,問最后留下的是原來第幾號?約瑟夫環問題nk6543211234567891011011011013692718510410011001010001100001000100000111/18n=input('inputn:=');m=input('inputm(<=n):=');a=ones(1,n);p=0;s=0;whilep<nfork=1:ns=s+a(k);ifs==ms=0;p=p+1;b(p)=k;a(k)=0;endendendinputn:=15inputm(<=n):=3b(15)ans=512/18五個水手帶了一只猴子來到太平洋一個荒島上,發現有一大堆椰子.由于旅途的顛簸,大家都很疲倦,很快入睡了.第一個水手醒來后,把椰子平分成五堆,將多余的一只給了猴子,他私藏了一堆后又去睡了.第二、第三、第四、第五個水手也陸續起來,和第個水手一樣,把椰子分成五堆,恰多一只給猴子

溫馨提示

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

評論

0/150

提交評論