數(shù)學(xué)實驗課件:數(shù)學(xué)實驗第二章_第1頁
數(shù)學(xué)實驗課件:數(shù)學(xué)實驗第二章_第2頁
數(shù)學(xué)實驗課件:數(shù)學(xué)實驗第二章_第3頁
數(shù)學(xué)實驗課件:數(shù)學(xué)實驗第二章_第4頁
數(shù)學(xué)實驗課件:數(shù)學(xué)實驗第二章_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、表達式和運算符 命令文件(程序文件) 程序設(shè)計中的流程控制 函數(shù)文件的編寫格式, ,數(shù)學(xué)實驗第二章,表達式由變量、運算符、函數(shù)、數(shù)字組成 球坐標變換,表達式和運算符,用賦值語句創(chuàng)建變量 變量名=數(shù)據(jù) 變量名=表達式,x=R*cos(theta)*cos(fai); y=R*cos(theta)*sin(fai); z=R*sin(theta);,緯度 經(jīng)度,例2.2 格林威治天文臺建于1675年,其經(jīng)度為零,緯度為北緯510。計算格林威治天文臺在地心直角坐標系中的坐標并在球面上標記,X,Y,Z=sphere(24); mesh(X,Y,Z),hold on fai=0; theta=51*pi

2、/180; x0=cos(theta)*cos(fai); y0=cos(theta)*sin(fai); z0=sin(theta); plot3(x0,y0,z0,ro,linewidth,2) view(124,30),例2.3 四邊形柱面繪圖原理和方法。,設(shè)四邊形頂點為(-1, -1), (1, -1), (1, 1), (-1, 1). 設(shè)柱面高為1,創(chuàng)建Z坐標矩陣,創(chuàng)建柱面的X坐標和Y矩陣,cylinder(R,N)創(chuàng)建單位高度繞Z軸旋轉(zhuǎn)曲面,R為母線,N表示圓圈上點數(shù),N缺省默認值為 20。 Cylinder %單位高度二十邊形柱面 x,y,z=cylinder(1,1,4);

3、mesh(x,y,z) %單位高度四邊形柱面 x,y,z=cylinder(1,0,3); mesh(x,y,z) %單位高度的三角形錐面,使用cylinder繪柱面,+ 加 - 減 * 乘 .* 點乘 / 右除 ./ 點右除 左除 . 點左除 矩陣冪 . 點冪,1 .算術(shù)運算符,2.關(guān)系運算符 大于 = 大于等于 = 等于 = 不等于,3.邏輯運算符 R=6400; S0=4*pi*R*R; S=2*pi*R*R*d/(R+d); S/S0*100,命令文件MATLAB命令的有序集合。 文件執(zhí)行對文件中命令進行批處理,即從第一 條命令開始按順序執(zhí)行,直到最后一條命令。如果 中間某條命令出錯,

4、則中斷并輸出錯誤信息,M文件分為命令文件和函數(shù)文件兩種,在編輯窗口中編寫; 保存并對文件命名; 命令窗口鍵入文件名運行; 觀察運行結(jié)果; ,條件控制; 循環(huán)控制; 錯誤控制;終止運行控制,條件控制有選擇地運行程序塊 1. if / elseif 語句 例2 .8 判潤年程序,程序設(shè)計中的流程控制,year=input(input year:=); n1=year/4; n2=year/100; n3=year/400; if n1=fix(n1) f(1)=1;f(2)=1; for k=3:n f(k)=f(k-1)+f(k-2); end f(n),f(44)=701408733,1,1,

5、2,3,5,8,13,21,,例2.11 程序功能如下:把邊長為2以原點為中心的正方形旋轉(zhuǎn)pi/24,將其壓縮(r=0.89),重復(fù)24次并繪圖,xy=-1 -1;1 -1;1 1;-1 1;-1 -1; A=cos(pi/24) -sin(pi/24); %創(chuàng)建正交矩陣 sin(pi/24) cos(pi/24); x=xy(:,1);y=xy(:,2); %提取坐標數(shù)據(jù) line(x,y),pause(1) %畫線并暫停一秒 for k=1:24 xy=.89*xy*A; %旋轉(zhuǎn)并壓縮 x=xy(:,1);y=xy(:,2); line(x,y),pause(1) end,例 利用幀動畫方

6、法演示馬鞍面旋轉(zhuǎn)過程。,M = moviein(24); x,y=meshgrid(-6:.5:6); z=x.2-y.2; %創(chuàng)建馬鞍面坐標數(shù)據(jù) AZ=-30; for k=1:24 mesh(x,y,z),axis off %繪圖 colormap(0 0 1),view(AZ,20) %旋轉(zhuǎn)15O M(:,k)=getframe; %幀設(shè)計 AZ=AZ+15; end movie(M,2) %幀播放,2. while循環(huán) 將循環(huán)體中語句循環(huán)執(zhí)行直到條件不成立為止。 語法: while 條件表達式 可執(zhí)行語句 end,條件表達式一般由變量、數(shù)字、邏輯運算、關(guān)系運 算符和一般運算符組成,以判

7、斷循環(huán)的進行和停止; 只要表達式的值(邏輯值)結(jié)果為正確(非0),循環(huán)繼 續(xù);直到表達式值為0,循環(huán)停止。,程序設(shè)計中的循環(huán)控制,例2.14 3n + 1 問題.,n=input(input n=); %輸入數(shù)據(jù) while n=1 r=rem(n,2); %求n/2的余數(shù) if r = =0 n=n/2 %第一種操作 else n=3*n+1 %第二種操作 end end,對任一自然數(shù)n,按如下法則進行運算:若n為偶數(shù), 則將n除2;若n為奇數(shù),則將n乘3加1。將運算結(jié)果按 上面法則繼續(xù)運算, 重復(fù)若干次后結(jié)果最終是1.,n=5 16, 8, 4, 2, 1,程序設(shè)計中的流程控制,3. co

8、ntinue 命令,通常用于 for 或 while 循環(huán)語句中,與 if 語句一起使用,跳過本次循環(huán),去執(zhí)行下一輪循環(huán) 4. break命令 通常用于for或while循環(huán)語句中,與if語句一起使用,中止本次循環(huán),跳出最內(nèi)層循環(huán) If 條件表達式,break, end 5. error(message) 顯示文本 message,并中斷程序執(zhí)行 If 條件表達式, error(message), end,程序設(shè)計中的流程控制,紅、綠兩隊從相距100公里的地點同時出發(fā)相向行軍 紅隊速度為10(公里/小時)綠隊速度為8(公里/小時) 開始時,通訊員騎摩托從紅隊出發(fā)為行進中的兩隊 傳遞消息。摩托車

9、的速度為60(公里/小時)往返于兩隊 之間. 每遇一隊,立即折回駛向另一隊.當(dāng)兩隊距離小 于0.2公里時,摩托車停止。計算通訊員駕駛摩托車跑 了多少趟(從一隊駛向另一隊為一趟)。,例2.15 摩托車問題,將紅隊、綠隊和摩托車假設(shè)為A、B、C三個點. A點初始位置A=0, 速度va=10 (運動向右); B點初始位置B=100, 速度vb=8(運動向左); C點初始位置C=0, 速度vc=60 (f=1表示運動方向) 當(dāng)C向右運動時, C、B相遇時間: tk= (B A)/(8+60) 當(dāng)C向左運動時,A、C相遇時間: tk= (B A)/(60+10) 利用相遇時間tk、及時計算A, B的最新

10、位置 當(dāng) (B A)0.2 時程序結(jié)束。,相遇問題的數(shù)學(xué)模型,while (B-A)0.2 if f= =1 tk=(B-A)/(vb+vc); else tk=(B-A)/(vc+va); end A=A+va*tk;B=B-vb*tk; plot(A,0,r.,B,0,g.),pause(1) f=-f;k=k+1; end k,who Your variables are: A f tk vb B k va vc,A=0; B=100; va=10;vb=8;vc=60; f=1;k=0; plot(A,0,ro,B,0,go),hold on,function 返回變量列表函數(shù)名(輸入

11、變量列表) %注解說明 輸入變量檢測,輸出變量檢測 函數(shù)體,函數(shù)文件的編寫,function Y=young(n) if nargin=0,n=3;end Y=eye(n);Y(:,1)=ones(n,1); for k=3:n Y(k,2:k-1)=Y(k-1,1:k-2)+Y(k-1,2:k-1); end,例2.18 楊輝三角形,函數(shù)內(nèi)所有變量是局部變量,既不影響其他M文件 中同名變量,也不被其他M文件中同名變量所影響 函數(shù)文件中的輸出變量要等于某個確定的表達式,函數(shù)文件的第一行必須按特定格式書寫,函數(shù)文件的編寫,輸入/輸出 變量檢測命令:nargin 、 nargout 當(dāng)函數(shù)文件被用

12、戶調(diào)用時(程序執(zhí)行時),nargin返回函數(shù)被調(diào)用時輸入變量的個數(shù)。 nargout返回當(dāng)函數(shù)被調(diào)用時輸出變量的個數(shù)。,例2.19 設(shè)地球半徑6400km,以150經(jīng)差繪三維地球。,function earthface() R=6400; theta,fai=meshgrid(-90:15:90,-180:15:180); theta=theta*pi/180;fai=fai*pi/180; X=R*cos(theta).*cos(fai); Y=R*cos(theta).*sin(fai); Z=R*sin(theta); colormap(0 0 1) mesh(X,Y,Z),axis o

13、ff,特例之一:無輸入無輸出變量的函數(shù)文件,函數(shù)文件的編寫,球函數(shù)的圖形: 拉普拉斯方程的解,記勒讓德多項式,令,球諧函數(shù),令,在球坐標系數(shù)繪球諧函數(shù)圖,function sphefun() t=linspace(0,pi,40);s=linspace(0,2*pi,60); theta,fai=meshgrid(t,s); x=cos(theta);w=sqrt(1-x.2); P31=3*(5*x.2-1)/2; YR=w.*P31.*cos(fai); X=YR.*sin(theta).*cos(fai); Y=YR.*sin(theta).*sin(fai); Z=YR.*cos(th

14、eta); surf(X,Y,Z),axis off,例2.24 Hanoi問題(遞歸算法),有A、B、C三個塔柱。柱A上n個有孔圓盤,由上而下由小到大疊放。要將柱A上圓盤移到柱C上,并仍按同樣順序疊放。移動圓盤過程中,不允許大圓盤壓小圓盤,可將圓盤移至A,B,C中任何一柱上。,漢諾塔:漢諾塔(又稱河內(nèi)塔)問題是源于印度一個古老傳說的益智玩具。大梵天創(chuàng)造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。,問題分析:n張盤片,A、

15、B、C三根柱子,將A做為開始塔柱,C為目標塔柱,B為中間塔柱。要列出整個轉(zhuǎn)移的操作過程,應(yīng)用遞歸技術(shù)。 將A上的n-1個盤轉(zhuǎn)移到B上 將A上第n號盤轉(zhuǎn)移到C上 將B上的n-1個盤轉(zhuǎn)移到C上。h(n)=2h(n-1)+1, h(n)=2n-1 第一步是n-1個盤問題(A開始, C中間, B目標); 第二步是1個盤問題; 第三步是n-1個盤問題(B開始, A中間, C目標)。,將三步操作按次序編寫函數(shù)文件,第一步操作和第三步操作需要調(diào)用函數(shù)本身,即自己調(diào)用自己。,if nargin=1, A= A;B= B;C= C;end if n=1 disp(strcat(No,int2str(n),:,A

16、, - ,C) else hanoi(n-1,A,C,B); disp( strcat(No,int2str(n),:,A, - ,C) hanoi(n-1,B,A,C); end,遞歸技術(shù)實現(xiàn)的關(guān)鍵是設(shè)置邊界條件(即一個盤的情況)。程序運行結(jié)果表明,三個盤的漢諾塔問題需要七步操作。,function hanoi(n,A,B,C) %n-圓盤數(shù),A-開始,B-中間,C-目標,No1: A - C No2: A - B No1: C - B No3: A - C No1: B - A No2: B - C No1: A - C,No1: A - B No4: A - C No1: B - C N

17、o2: B - A No1: C - A No3: B - C No1: A - B No2: A - C No1: B - C,hanoi(3),hanoi(4),No1: A - B No2: A - C No1: B - C No3: A - B No1: C - A No2: C - B,數(shù)據(jù)文件的輸入方法,對于大型矩陣,用文本文件錄入數(shù)據(jù),并用load命令將數(shù)據(jù)載入。具體使用格式為,load(filename.txt) 或load filename.txt,其中,filename是文件名,如data.txt。如果數(shù)據(jù)文件上載成功,則文件名就成為變量名。,例 某數(shù)學(xué)課成績由三部分構(gòu)成:

18、平時10%,期中30%,期末60%。一個行政班學(xué)生成績數(shù)據(jù)如下,將成績輸入數(shù)據(jù)文件,按成績構(gòu)成比例計算每位同學(xué)的最后成績,并統(tǒng)計出各分數(shù)段的人數(shù)及百分比。,用記事本將成績錄入,存為文本文件datas.txt 將該文件拷貝到MATLAB 工作目錄(work)下; 在命令窗口用命令load datas.txt將數(shù)據(jù)文件裝入內(nèi)存,處理數(shù)據(jù)程序如下:,score=0.1*datas(:,1)+0.3*datas(:,2)+0.6*datas(:,3); N=length(score); %統(tǒng)計總?cè)藬?shù),II=find(score=60 fensu=F0,F1,F2,F3,F4 %顯示各分數(shù)段人數(shù) format bank

溫馨提示

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

評論

0/150

提交評論