數學實驗第二章_第1頁
數學實驗第二章_第2頁
數學實驗第二章_第3頁
數學實驗第二章_第4頁
數學實驗第二章_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

2、os(theta)*cos(fai);y0=cos(theta)*sin(fai);z0=sin(theta); th=linspace(-pi/2,pi/2,100);x=cos(th);y=zeros(size(x);z=sin(th);plot3(x,y,z,b,x0,y0,z0,ro,linewidth,2)view(124,30)+ 加 - 減 * 乘 .* 點乘/ 右除 ./ 點右除 左除 . 點左除 矩陣冪 . 點冪1 .算術運算符2.關系運算符 小于 大于 = 大于等于 = 等于 = 不等于3.邏輯運算符 & 與 (and) | 或 (or) 非 (not)表達式和運算符運算優

3、先級函數運算算術運算關系運算邏輯運算exp()、log()、sin()、abs()、fix()、.、.*、./、*、/、+、;、=、=、=&、|表達式 (1+fix(pi)*mod(2,4)+2*32結果為ans=26;三角形任意兩邊之和大于第三邊的邏輯表達式 (A) a+b=c | a+c=b | b+c=a (B) a+b=c | a+c=b | b+cc | a+cb | b+ca (D) a+bc & a+cb & b+ca 命令文件計算機程序主要功能接收數據和處理數據,并將處理后的數據完整有效地提供給用戶例2.2 將地球模型取為半徑為R=6400(km)的球體,計算高度為1萬公里的地

4、球同步衛星對地面的覆蓋率在編輯窗口編寫文件 planet.m在命令窗口鍵入 planet結果顯示: ans = 30.4878R=6400;S0=4*pi*R*R;d=10000;S=2*pi*R*R*d/(R+d);S/S0*100命令文件MATLAB命令的有序集合。 文件執行對文件中命令進行批處理,即從第一條命令開始按順序執行,直到最后一條命令。如果中間某條命令出錯,則中斷并輸出錯誤信息M文件分為命令文件和函數文件兩種在編輯窗口中編寫;保存并對文件命名;命令窗口鍵入文件名運行;觀察運行結果;例2.3直線平行于Z軸沿x-y平面上的四邊形移動,形成四邊形柱面。利用矩陣方法繪制四邊形柱面. 設四

5、邊形頂點為(-1, -1), (1, -1), (1, 1), (-1, 1).由于四邊形是封閉的圖形,將第五個點設為第一個點。設柱面高為1,創建Z坐標矩陣 創建柱面的X坐標和Y矩陣x=-1,1,1,-1,-1; %確定四邊形X坐標y=-1,-1,1,1,-1; %確定四邊形Y坐標X=1;1*x ;Y=1;1*y; %創建X和Y坐標矩陣Z=0;1*ones(1,5); %創建柱面Z坐標矩陣mesh(X,Y,Z) %繪圖colormap(0 0 0) %設定黑色axis off %去掉坐標框架按順序錄入以下語句創建程序文件cylind1.m比較cylinder(1,1,4)例2.4 成都地理位置

6、:北緯30o,東經104o;北京地理位置:北緯40o,東經116o。計算兩城市距離近似值。 由兩城市經緯度可計算出地心直角坐標系的坐標P1(x1,y1,z1),P2(x2,y2,z2)向徑之間的角度 球面短程線計算公式 輸入經緯度數據和地球半徑;轉換兩城市的經緯度為地心直角坐標數據;提取兩個點的向徑坐標;計算向徑間的夾角和短程線長度并輸出計算結果。datas=30,104;40,116; %經緯度數據R=6400;theta=datas(:,1)*pi/180; %弧度制fai=datas(:,2)*pi/180;x=R*cos(theta).*cos(fai); %直角坐標轉換y=R*cos

7、(theta).*sin(fai);z=R*sin(theta);Op1=x(1),y(1),z(1); %第一城市坐標Op2=x(2),y(2),z(2); %第二城市坐標d=R*acos(Op1*Op2/(R*R) %計算并顯示距離 按順序錄入程序文件(文件名:distance.m)在命令窗口運行程序distance,屏幕將顯示:d =1563.42條件控制; 循環控制; 錯誤控制;終止運行控制條件控制有選擇地運行程序塊 if / elseif 語句例2 .5 判閏年程序程序設計中的流程控制year=input(input year:=);n1=year/4;n2=year/100;n3=

8、year/400;if n1=fix(n1)&n2=fix(n2) disp(是閏年)elseif n1=fix(n1)&n3=fix(n3) disp(是閏年)else disp(不是閏年)end閏年條件有二能被4整除,但不能被100整除;能被4整除,又能被400整除。1. for 循環語法: for 變量 =初值:步長:終值 可執行語句 end程序設計中的循環控制例2.6 裴波拉奇數列 n=input(input n:=); f(1)=1;f(2)=1; for k=3:n f(k)=f(k-1)+f(k-2); end f(n)f(44)=701408733例2.7 程序功能如下:把邊長

9、為2以原點為中心的正方形旋轉pi/24,將其壓縮(r=0.89),重復24次并繪圖 xy=-1 -1;1 -1;1 1;-1 1;-1 -1; A=cos(pi/24) -sin(pi/24); %創建正交矩陣 sin(pi/24) cos(pi/24); x=xy(:,1);y=xy(:,2); %提取坐標數據line(x,y),pause(1) %畫線并暫停一秒for k=1:24 xy=.89*xy*A; %旋轉并壓縮 x=xy(:,1);y=xy(:,2); line(x,y),pause(1)end例2.8 空間四面體底面是一三角形,將三角形三個頂點與四面體頂部的頂點相連接就形成三角

10、形錐面。利用MATLAB的幀動畫方法演示一個四面體旋轉過程。 M = moviein(16);X,Y,Z=cylinder(1,0,3); %創建四面體坐標A=cos(pi/8) -sin(pi/8);sin(pi/8) cos(pi/8);for k=1:16 mesh(X,Y,Z),axis off %繪圖 colormap(0 0 1),view(-30,40) M(:,k)=getframe; %幀設計 xy=A*X(1,:);Y(1,:); %旋轉 x=xy(1,:);X=1;0*x; %坐標提取擴充矩陣 y=xy(2,:);Y=1;0*y;endmovie(M,5) %幀播放 2.

11、 while循環 將循環體中語句循環執行直到條件不成立為止。 語法: while 條件表達式 可執行語句 end條件表達式一般由變量、數字、邏輯運算、關系運算符和一般運算符組成,以判斷循環的進行和停止;只要表達式的值(邏輯值)結果為正確(非0),循環繼續;直到表達式值為0,循環停止。程序設計中的循環控制 例2.9 3n + 1 問題. n=input(input n=); %輸入數據while n=1 r=rem(n,2); %求n/2的余數 if r = =0 n=n/2 %第一種操作 else n=3*n+1 %第二種操作 endend 對任一自然數n,按如下法則進行運算:若n為偶數,則將

12、n除2;若n為奇數,則將n乘3加1。將運算結果按上面法則繼續運算, 重復若干次后結果最終是1. n=5 16, 8, 4, 2, 1程序設計中的流程控制3. continue 命令通常用于 for 或 while 循環語句中,與 if 語句一起使用,跳過本次循環,去執行下一輪循環4. break命令通常用于for或while循環語句中,與if語句一起使用,中止本次循環,跳出最內層循環If 條件表達式,break, end程序設計中的流程控制P48 例2.165. error(message)顯示文本 message,并中斷程序執行If 條件表達式, error(message), end例2.

13、10 海倫公式其中,p = (a + b + c)/2,其中,a,b,c分別為三條邊長。 heroinput a:=3input b:=4input c:=8? Error using = hero輸入錯誤,三角形兩邊之和大于第三邊if a+bc | a+cb | b+ca error(輸入錯誤,三角形兩邊之和大于第三邊)end立方倍積問題實驗: 作一立方體, 使其體積等于單位正方體的兩倍. 對邊長取不同位數, 顯示計算結果誤差。 調整程序,使輸入數據能完整有效地提供給用戶H=power(2,1/3);D=1;for k=1:6 D=D*10; h(k)=fix(H*D)/D; V(k)=po

14、wer(h(k),3);endformat short eh,2-V 1.2000e+000 2.7200e-001 1.2500e+000 4.6875e-002 1.2590e+000 4.3830e-003 1.2599e+000 1.0024e-004 1.2599e+000 4.9998e-006 1.2599e+000 2.3761e-007程序設計中的流程控制紅、綠兩隊從相距100公里的地點同時出發相向行軍紅隊速度為10(公里/小時)綠隊速度為8(公里/小時)開始時,通訊員騎摩托從紅隊出發為行進中的兩隊傳遞消息。摩托車的速度為60(公里/小時)往返于兩隊之間. 每遇一隊,立即折回

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

16、/(vb+vc); else t(k)=(B-A)/(vc+va); end A=A+va*t(k);B=B-vb*t(k); plot(A,0,r.,B,0,g.),pause(1) f=-f;k=k+1;endkwhoYour 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 onfunction 返回變量列表函數名(輸入變量列表)%注解說明 輸入變量檢測,輸出變量檢測 函數體函數文件的編寫例2.12 編寫函數文件,輸出 n 階楊輝三角形 funct

17、ion Y=young(n)if nargin=0,n=3;endY=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為方便編寫,變形成如下矩陣形式 5 階函數內所有變量是局部變量,既不影響其他M文件中同名變量,也不被其他M文件中同名變量所影響函數文件中的輸出變量要等于某個確定的表達式函數文件的第一行必須按特定格式書寫函數文件的編寫輸入/輸出 變量檢測命令:nargin 、 nargout當函數文件被用戶調用時(程序執行時)nargin返回函數被調用時輸入變量的個數。nargout返回當函數

18、被調用時輸出變量的個數。例2.13 設地球半徑6400km,以150經緯差繪三維地球。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 off特例之一:無輸入無輸出變量的函數文件函數文件的編寫采用常規算法和遞歸算法分別編寫計算數n的階乘的函數文件fu

19、nction m=jc(n)if n=0|n=1 m=1;elsem=1;for k=2:n m=m*k;endendfunction m=jc(n)if n=0 m=1;else m=n*jc(n-1);end12nABC例2.14 Hanoi問題(遞歸算法)有A、B、C三個塔柱。柱A上n個有孔圓盤,由上而下由小到大疊放。要將柱A上圓盤移到柱C上,并仍按同樣順序疊放。移動圓盤過程中,不允許大圓盤壓小圓盤,可將圓盤移至A,B,C中任何一柱上。 n-112ABCn-112ABCn12ABC問題分析:n張盤片,A、B、C三根柱子將A做為開始塔柱,C為目標塔柱,B為中間塔柱。要列出整個轉移的操作過程

20、,應用遞歸技術。 將A上的n-1個盤轉移到B上 將A上第n號盤轉移到C上 將B上的n-1個盤轉移到C上。第一步是n-1個盤問題(A開始, C中間, B目標);第二步是1個盤問題;(A到C)第三步是n-1個盤問題(B開始, A中間, C目標)。 將三步操作按次序編寫函數文件,第一步操作和第三步操作需要調用函數本身,即自己調用自己。if nargin=1, A= A;B= B;C= C;endif n=1 disp(strcat(No,int2str(n),:,A, - ,C) else hanoi(n-1,A,C,B); disp( strcat(No,int2str(n),:,A, - ,C)

21、 hanoi(n-1,B,A,C);end遞歸技術實現的關鍵是設置邊界條件(即一個盤的情況)程序運行結果表明,三個盤的漢諾塔問題需要七步操作。 64個盤需要18446744073709551615步!function hanoi(n,A,B,C)%n-圓盤數,A-開始,B-中間,C-目標No1: A - CNo2: A - BNo1: C - BNo3: A - CNo1: B - ANo2: B - CNo1: A - CNo1: A - BNo4: A - CNo1: B - CNo2: B - ANo1: C - ANo3: B - CNo1: A - BNo2: A - CNo1: B

22、 - Chanoi(3)hanoi(4)No1: A - BNo2: A - CNo1: B - CNo3: A - BNo1: C - ANo2: C - B數據文件的輸入方法對于大型矩陣,用文本文件錄入數據,并用load命令將數據載入。具體使用格式為 load(filename.txt) 或load filename.txt 其中,filename是文件名,如data.txt。如果數據文件上載成功,則文件名就成為變量名。 例2.15 某數學課成績由三部分構成:平時10%,期中30%,期末60%。一個行政班學生成績數據如下編號平時成績期中成績期末成績1 99 98 972 89 95 93 將成績輸入數據文件,按成績構成比例計算每位同學的最后成績,并統計出各分數段的人數及百分比。 用記事本將成績

溫馨提示

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

評論

0/150

提交評論