數學建模的MATLAB課件(1-6章)_第1頁
數學建模的MATLAB課件(1-6章)_第2頁
數學建模的MATLAB課件(1-6章)_第3頁
數學建模的MATLAB課件(1-6章)_第4頁
數學建模的MATLAB課件(1-6章)_第5頁
已閱讀5頁,還剩275頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、開始Matlab基礎及其應用學軟件應結束數用8/25/20221Matlab基礎及其應用目錄 第六章 Matlab空間作圖第二章 Matlab語言基礎 第三章 Matlab數值運算 第四章 Matlab符號運算 第五章 Matlab平面作圖第一章 Matlab軟件介紹8/25/20222第一章Matlab 簡介 Matlab集成環境 Matlab概述 Matlab的運行環境與安裝 Matlab幫助系統8/25/202231.1 Matlab 概述Matlab是Matlab公司于1982年推出的一套高性能的數值計算和可視化數學軟件,被譽為“巨人肩上的工具”。由于使用Matlab編程運算與人進行科

2、學計算的思路和表達方式完全一致,所以用Matlab編寫程序就猶如在演算紙上排列出公式與求解問題.因此,Matlab又被稱為演算紙式的科學算法語言。經過十幾年的完善和擴充,Matlab現已發展成為線性代數課程的標準工具。由于它不需定義數組的維數,并給出矩陣函數、特殊矩陣專門的庫函數,使之在求解諸如信號處理、建模、系統識別、控制、優化等領域的問題時,顯得大為簡捷、高效、方便,這是其它高級語言所不能比擬的。1.1.1 Matlab的簡況8/25/20224 1984年,Matlab第1版(DOS版) 1992年,Matlab版 1994年,Matlab版 1997年,Matlab版 1999年,Ma

3、tlab版 2000年,Matlab版 2001年,Matlab版 2002年,Matlab版 2004年,Matlab版1.1.2 Matlab的發展歷史8/25/202251.1.3 Matlab的主要功能(4) Matlab的工具箱Matlab中包括了被稱作工具箱(TOOLBOX)的各類應用問題的求解工具。它可用來求解各類學科的問題,包括信號處理、圖象處理、控制系統辨識、神經網絡等。隨著Matlab版本的不斷升級,其所含的工具箱的功能也越來越豐富。8/25/202271.1.4 Matlab操作示例例1-1 在同一坐標系中繪出正弦曲線y=sinx和余弦曲線y=cosx在0,2*Pi上的圖

4、形. x=0:1/180:2*pi; % 輸入自變量x的行矩陣 f1=sin(x);%輸出因變量f1的行矩陣 f2=cos(x);%輸出因變量f2的行矩陣 plot(x,f1,x,f2); %調用繪圖命令一次畫出兩條曲線.例1-2 求方程 3x4+7x3 +9x2-23=0的全部根: p=3,7,9,0,-23; %建立多項式系數向量 x=roots(p) %調用求根命令求出方程的根.8/25/20228例1-3 求f=xlog(1+x)在0.1上的定積分S解 S=quad(x.*log(1+x),0,1)例1-4 求解線性方程組:Ax=b。 其中 A=2,-3,1; 8,3,2; 45,1,

5、-9; b=4;2;17; 解 x=inv(A)*b注意:線性方程組的解也可寫成x=Ab1.1.4 Matlab操作示例8/25/20229 1.2 Matlab的運行環境與安裝 硬件環境:(1) CPU 奔騰以上(2) 內存 1G以上(3) 硬盤 40G以上(4) CD-ROM 驅動器和鼠標。軟件環境:(1) Windows XP(2) 其他軟件根據需要選用1.2.1 Matlab的運行環境8/25/2022101.2.2 Matlab的安裝安裝Matlab 7.0系統,需運行系統自帶的安裝程序setup.exe,一般只要用鼠標雙擊安裝圖標,就會啟動安裝程序,你只需按照安裝提示正確輸入(或粘

6、貼)安裝序列號后點擊確認鍵,并按提示修改安裝路徑(或默認安裝到C盤)就能完成安裝。安裝完畢后,在開始-程序-Matlab.exe菜單中,雙擊Matlab圖標,即可運行程序。8/25/2022111Matlab系統的啟動 與一般的Windows程序一樣,啟動Matlab系統有3種常見方法:(1)使用Windows“開始”菜單,找到Matlab.exe圖標,然后雙擊。(2)運行Matlab系統啟動程序matlab.exe。(3)利用桌面快捷方式。1.3.1 啟動與退出Matlab集成環境8/25/202212首次啟動Matlab時,展現在屏幕上的界面為Matlab的默認界面. 默認界面中主要有六個

7、窗口,其分布如下圖所示。1.3.1 啟動與退出Matlab集成環境默認設置下主要窗口布局8/25/202213 從默認界面中可切換出左邊兩個主要窗口如下圖所示。1.3.1 啟動與退出Matlab集成環境8/25/202214 Matlab的集成環境包括Matlab主窗口、命令窗口(Command Window)、工作空間窗口(Workspace)、命令歷史窗口(Command History)、當前目錄窗口(Current Directory)和啟動平臺窗口(Launch Pad)。1.3.1 啟動與退出Matlab集成環境工作空間命令歷史命令窗口8/25/202215命令窗口(Command

8、 Window) 工作空間 (Workspace) 命令歷史(Command History) 當前目錄(Current Directory)主窗口 8/25/202216 2Matlab系統的退出要退出Matlab系統,也有3種常見方法:(1) 在Matlab主窗口File菜單中選擇Exit Matlab命令。(2) 在Matlab命令窗口輸入Exit或Quit命令。(3) 單擊Matlab主窗口的“關閉”按鈕。1.3.1 啟動與退出Matlab集成環境8/25/202217Matlab主窗口是Matlab的主要工作界面。主窗口除了嵌入一些子窗口外,還主要包括菜單欄和工具欄。1菜單欄在Mat

9、lab主窗口的菜單欄,共包含File、Edit、View、Web、Window和Help 6個菜單項。(1) File菜單項:File菜單項實現有關文件的操作。(2) Edit菜單項:Edit菜單項用于命令窗口的編輯操作。(3) View菜單項:View菜單項用于設置Matlab集成環境的顯示方式。(4) Desktop菜單項:在MATLAB中,Desktop主菜單用于設置工作空間和工具欄等的顯示項。單擊Desktop主菜單或按下快捷鍵Alt+D,可以彈出Desktop下拉菜單。 (5) Window菜單項:主窗口菜單欄上的Window菜單,只包含一個子菜單Close all,用于關閉所有打開

10、的編輯器窗口,包括M-file、Figure、Model和GUI窗口。(6) Help菜單項:Help菜單項用于提供幫助信息。1.3.2 主窗口及子窗口8/25/2022182工具欄Matlab 7主窗口的工具欄共提供了10個命令按鈕。這些命令按鈕均有對應的菜單命令,但比菜單命令使用起來更快捷、方便。命令窗口是Matlab的主要交互窗口,用于輸入命令并顯示除圖形以外的所有執行結果。 Matlab命令窗口中的“ ”為命令提示符,表示Matlab正在處于準備狀態。在命令提示符后鍵入命令并按下回車鍵后,Matlab就會解釋執行所輸入的命令,并在命令后面給出計算結果。1.3.2 主窗口及子窗口8/25

11、/202219在通常的編程中,一個行只輸入一條獨立的命令,命令行以回車結束。但一行也可以輸入若干條命令,但各命令之間必須以逗號分隔,互相獨立的命令也可用分號分隔。例如 p=15, m=35 , n=20 p=15; m=35; n=20在編程中,逗號表示換列,相當于一個空格;分號表示換行,分號與回車的作用都是換行.如果一個命令行很長,一個物理行之內寫不下,可以在第一個物理行之后加上3個小黑點“”并按下回車鍵,然后接著下一個物理行繼續寫命令的其他部分。3個小黑點稱為續行符,即把后面的物理行看作該行的邏輯繼續。在Matlab里,有很多的控制鍵和方向鍵可用于命令行的編輯。1.3.3 Matlab編程

12、輸入法8/25/202220工作空間是Matlab用于存儲各種變量和結果的內存空間。在該窗口中顯示工作空間中所有變量的名稱、大小、字節數和變量類型說明,可對變量進行觀察、編輯、保存和刪除。如果想要把工作空間中的變量及其數據存成文件,只需鍵入命令: Save variblename不寫變量名將會把工作空間中全部數據保存到你所給的文件內.1.3.4 工作空間窗口8/25/2022211當前目錄窗口當前目錄是指Matlab運行文件時的工作目錄,只有在當前目錄或搜索路徑下的文件、函數可以被運行或調用。在當前目錄窗口中可以顯示或改變當前目錄,還可以顯示當前目錄下的文件并提供搜索功能。將用戶目錄設置成當前

13、目錄也可使用cd命令。例如,將用戶目錄c:mydir設置為當前目錄,可在命令窗口輸入命令: cd c:mydir1.3.5 當前目錄窗口和搜索路徑8/25/202222 2Matlab的搜索路徑當用戶在Matlab命令窗口輸入一條命令后,Matlab按照一定次序尋找相關的文件。基本的搜索過程是:(1) 檢查該命令是不是一個變量。(2) 檢查該命令是不是一個內部函數。(3) 檢查該命令是否當前目錄下的M文件。(4) 檢查該命令是否Matlab搜索路徑中其他目錄下的M文件。1.3.5 當前目錄窗口和搜索路徑8/25/202223用戶可以將自己的工作目錄列入Matlab搜索路徑,從而將用戶目錄納入M

14、atlab系統統一管理。設置搜索路徑的方法有: (1) 用path命令設置搜索路徑。例如,將用戶目錄c:mydir加到搜索路徑下,可在命令窗口輸入命令:path(path,c:mydir)(2) 用對話框設置搜索路徑 在Matlab的File菜單中選Set Path命令或在命令窗口執行pathtool命令,將出現搜索路徑設置對話框。通過Add Folder或Add with Subfolder命令按鈕將指定路徑添加到搜索路徑列表中。在修改完搜索路徑后,則需要保存搜索路徑。1.3.5 當前目錄窗口和搜索路徑8/25/202224 在默認設置下,歷史記錄窗口中會自動保留自安裝起所有用過的命令的歷史

15、記錄,并且還標明了使用時間,從而方便用戶查詢。而且,通過雙擊命令可進行歷史命令的再運行。如果要清除這些歷史記錄,可以選擇Edit菜單中的Clear Command History命令。1.3.6 命令歷史記錄窗口8/25/202225 Matlab的啟動平臺窗口可以幫助用戶方便地打開和調用Matlab的各種程序、函數和幫助文件。 Matlab主窗口左下角還有一個Start按鈕,單擊該按鈕會彈出一個菜單,選擇其中的命令可以執行Matlab產品的各種工具,并且可以查閱Matlab包含的各種資源。1.3.7 啟動平臺窗口和Start按鈕8/25/202226 1.4 Matlab幫助系統進入幫助窗口

16、可以通過以下3種方法:(1) 單擊Matlab主窗口工具欄中的Help按鈕。(2) 在命令窗口中輸入helpwin、helpdesk或doc。(3) 選擇Help菜單中的“Matlab Help”選項。1.4.1 幫助窗口1.4.2 幫助命令 Matlab幫助命令包括help、lookfor以及模糊查詢1help命令在Matlab命令窗口中直接輸入help命令將會顯示當前幫助系統中所包含的所有項目,即搜索路徑中所有的目錄名稱。同樣,可以通過help加函數名來顯示該函數的幫助說明。8/25/2022272lookfor命令help命令只搜索出那些關鍵字完全匹配的結果,lookfor命令對搜索范圍

17、內的M文件進行關鍵字搜索,條件比較寬松。lookfor命令只對M文件的第一行進行關鍵字搜索。若在lookfor命令加上-all選項,則可對M文件進行全文搜索。3模糊查詢Matlab以上的版本提供了一種類似模糊查詢的命令查詢方法,用戶只需要輸入命令的前幾個字母,然后按Tab鍵,系統就會列出所有以這幾個字母開頭的命令。1.4.2 幫助命令8/25/202228 在幫助窗口中選擇演示系統(Demos)選項卡,然后在其中選擇相應的演示模塊,或者在命令窗口輸入Demos,或者選擇主窗口Help菜單中的Demos子菜單,打開演示系統。1.4.3 演示系統 在MathWorks公司的主頁( :/)上可以找到

18、很多有用的信息,國內的一些網站也有豐富的信息資源。1.4.4 遠程幫助系統8/25/202229第二章Matlab語言基礎 Matlab的工作環境 2.2 Matlab的變量及其命名規則 Matlab矩陣命令及其變換 Matlab常用數學函數 Matlab矩陣的運算與分解 Matlab的邏輯運算、條件語句與循環控制語句8/25/202230 在MATLAB命令窗口下進行基本數學運算,只需將運算式直接打入提示號之後,并按入Enter鍵即可。例如在命令窗口中鍵入: (10*19+2/4-34)/2*3 , 回車后可得: ans = 234.7500 MATLAB會將運算結果直接存入一變數ans,代

19、表MATLAB運算後的答案,并顯示其數值屏幕上。如果在上述的例子結尾加上分號”;”,則計算結果不會顯示在指令視窗上,要得知計算值只須鍵入該變數值即可.2.1.1 Matlab的命令窗口計算輸入2.1 Matlab的工作環境8/25/202231 MATLAB可以將計算結果以不同的精確度的數字格式顯示,我們可以在指令視窗上的功能選單上的Options下 選 Numerical Format,或者直接在指令視窗鍵入以下的各個數字顯示格式的指令。 format short (這是默認的)MATLAB利用了二個游標鍵可以將所下過的指令叫回來重覆使用。按下則前一次指令重新出現,之后再 按Enter鍵,即

20、再執行前一次的指令。而鍵的功用則是往后執行指令。其它在鍵盤上的幾個鍵如, Delete, Insert,其功能則顯而易見,試用即知,無須多加說明。當要暫時執行作業系統(例如Dos)的指令而還要執行MATLAB,可以利用!加上原作業系統的指令,例如 !dir, !format a:。2.1.2 Matlab的數字格式8/25/202232Ctrl-C(即同時按Ctrl及C二個鍵)可以用來中止執行中的MATLAB的工作。 有三種方法可以結束MATLAB 1.exit 2.quit 3.直接關閉MATLAB的命令視窗(Command window)2.1.3 Matlab的退出8/25/202233

21、1.變量名的大小寫是敏感。2. 變量的第一個字符必須為英文字母,而且不能超 過31個字符。3. 變量名可以包含下連字符、數字,但不能為空格 符、標點。4. 為讀取方便,變量名盡量采用首寫字母為大寫的 英文單詞,避免和庫函數名沖突.2.2 Matlab的變量及其命名規則8/25/202234ans 預設的計算結果的變量名eps 正極小值esppi 內建的值inf或值 無限大NaN 無法定義一個數目 ( 1/0 )i 或 j 虛數單位i=j= sqrt(-1)nargin 函數輸入參數個數nargout 函數輸出參數個數realmax 最大的正實數realmin 最小的正實數flops 浮點運算次

22、數8/25/2022352.3 Matlab矩陣命令及其變換MATLAB書寫表達式的規則與“手寫算式”差不多相同。如果一個指令過長可以在結尾加上.(代表此行指 令與下一行連續),例如鍵入 3*. 6 %求3與6的乘積 運行可得結果 ans = 182.3.1 Matlab的賦值語句表達式8/25/2022362.3.2矩陣(數組)的創建格式格式一: 手工輸入3行4列矩陣; A=1,2,3,4;-1,5,3,6;2,0,3,7;格式二:給定步長自動生成行矩陣; B=1:0.1:2; %行矩陣也叫數組格式三:用隨機命令自動生成mn矩陣; C=rand(m,n);格式四:調用等距插值命令生成行矩陣;

23、 D=linspace(a,b,n); 8/25/2022371全零矩陣的生成: A=zeros(m,n) 2全1矩陣的生成: B=ones(m,n);3. 單位矩陣的生成: C=eye(n);4. 對角矩陣的生成: D=diag(1,2,3,4); 5. hilbert矩陣的生成: E=hilb(n)6. 魔方矩陣的生成: F=magic(n);2.3.3 特殊矩陣的表示與簡單運算8/25/202238矩陣的基本運算法則運算符名稱格式法則說明+加A+B對應元素相加-減A-B對應元素相減*乘A*B按矩陣乘法定義相乘/右除A/B方程XB=A的解A*inv(B)左除BA方程BX=A的解inv(B)

24、*A乘冪AB其中一個為標量是有意義2.3.3 特殊矩陣的表示與簡單運算8/25/202239數組的基本運算法則運算符名稱示例法則說明+加A+B對應元素相加-減A-B對應元素相減.*乘A.*B對應元相乘./右除A./B對應元素相除.左除B.A對應元素相除.乘冪A.B對應元素求冪2.3.3 特殊矩陣的表示與簡單運算8/25/202240Matlab矩陣變換操作示例(一)clearA=rand(5) %生成一個5階隨機矩陣;A1=A(1:3,2:4); %取出A中由1,2,3行,2,3,4列構 成的子矩陣A2=A(5,4,3,2,1,:); %對A中的行重新排序;A(1,2,3,:)=; %刪除A的

25、1,2,3行;A(:,1,5)=; %刪除A的1,5列;A(1,2,3,:)=A(2,3,1,:); %置換A的1,2,3行;A3=A(:); %逐列排序把A拉成一個列向量;A(:)=B; %把B中的元素按列依次賦給A; 注:要求A與B的元素一樣多,但行數可以不相等;2.3.3 特殊矩陣的表示與簡單運算8/25/202241Matlab矩陣變換操作示例(二)1.把矩陣A的第i行的s倍加到第j行: A(j,:)=A(j,:)+A(i,:)*s;2.交換A的第i列與第j列: A(:,i,j)=A(:,j,i);3.元素重排:按列元次序把m*n個元素的矩陣排成nm矩陣: B=reshape(A,n,

26、m)2.3.3 特殊矩陣的表示與簡單運算8/25/202242第三章Matlab數值計算 多項式運算 插值與擬合3.4 隨機函數rand和randn Matlab常用數學函數 Matlab矩陣的運算與分解 Matlab的邏輯運算、條件語句與循環控制語句 數值積分3.8 常微分方程數值解8/25/2022433.1 MATLAB常用數學函數符號名稱符號名稱sin(x)正弦asin(x)反正弦cos(x)余弦acos(x)反余弦tan(x)正切atan(x)反正切cot(x)余切acot(x)反余切sec(x)正割asec(x)反正割csc(x)余割acsc(x)反余割注:只要給x賦予實值或復值,

27、運行可輸出函數值,例: sin(pi/3), cos(5),但X一般取復數矩陣.8/25/202244符號名稱符號名稱sinh(x)雙曲正弦asinh(x)反雙曲正弦cosh(x)雙曲余弦acosh(x)反雙曲余弦tanh(x)雙曲正切atanh(x)反雙曲正切coth(x)雙曲余切acoth(x)反雙曲余切sech(x)雙曲正割asech(x)反雙曲正割csch(x)雙曲余割acsch(x)反雙曲余割注:只要給x賦予實值,運行可輸出函數值例: tanh(-2), asech(-3),但X通常取矩陣.8/25/202245功能 正弦函數與雙曲正弦函數格式 Y = sin(X) %計算參量X(可

28、以是向量、矩陣,元素可以是復數)中每一個角度分量的正弦值Y,所有分量的角度單位為弧度。Y = sinh(X) %計算參量X的雙曲正弦值Y。3.1.3.1 三角函數與雙曲函數的操作函數 sin、sinh8/25/202246幾點補充說明(1)sin(pi)并不是零,而是與浮點精度有關的無窮小量eps,因為pi僅僅是精確值浮點近似的表示值而已;(2)對于復數Z= x+iy,函數的定義為:sin(x+iy) = sin(x)*cos(y) + i*cos(x)*sin(y); , ; 8/25/202247例2-1 x = -pi:0.01:pi; plot(x,sin(x) x = -5:0.01

29、:5; plot(x,sinh(x) 圖形結果為圖2-1。 正弦函數與雙曲正弦函數的圖象3.1.3.1 三角函數與雙曲函數的操作8/25/202248函數 asin、asinh功能 反正弦函數與反雙曲正弦函數格式 Y = asin(X) %返回參量X(可以是向量、矩陣)中每一個元素的反正弦函數值Y。若X中有的分量處于-1,1之間,則Y = asin(X)對應的分量處于-/2,/2之間,若X中有分量在區間-1,1之外,則Y= asin(X)對應的分量為復數。Y = asinh(X) %返回參量X中每一個元素的反雙曲正弦函數值Y3.1.3.1 三角函數與雙曲函數的操作8/25/202249 反正弦

30、函數與反雙曲正弦函數的定義為: 反正弦函數與反雙曲正弦函數的圖象例2-2 x = -1:.01:1; plot(x,asin(x) x = -5:.01:5; plot(x,asinh(x) 圖形結果為圖2-2。8/25/202250函數 cos、cosh功能 余弦函數與雙曲余弦函數格式 Y = cos(X) %計算參量X(可以是向量、矩陣,元素可以是復數)中每一個角度分量的余弦值Y,所有角度分量的單位為弧度。我們要指出的是,cos(pi/2)并不是精確的零,而是與浮點精度有關的無窮小量eps,因為pi僅僅是精確值浮點近似的表示值而已。Y = sinh(X) %計算參量X的雙曲余弦值Y3.1.

31、3.1 三角函數與雙曲函數的操作8/25/202251 若X為復數z= x+iy,則函數定義為: cos(x+iy) = cos(x)*cos(y) + i*sin(x)*sin(y), 例2-3 x = -pi:0.01:pi; plot(x,cos(x) x = -5:0.01:5; plot(x,cosh(x)圖形結果為圖2-3。 余弦函數與雙曲余弦函數圖8/25/202252函數 acos、acosh功能 反余弦函數與反雙曲余弦函數格式 Y = acos(X) %返回參量X(可以是向量、矩陣)中每一個元素的反余弦函數值Y。若X中有的分量處于-1,1之間,則Y = acos(X)對應的分

32、量處于0,之間,若X中有分量在區間-1,1之外,則Y = acos(X)對應的分量為復數。Y = asinh(X) %返回參量X中每一個元素的反雙曲余弦函數Y3.1.3.1 三角函數與雙曲函數的操作8/25/202253 反余弦函數與反雙曲余弦函數定義為: 例2-4 x = -1:.01:1; plot(x,acos(x) x = -5:.01:5; plot(x,acosh(x)圖形結果為圖2-4。 反余弦函數與反雙曲余弦函數8/25/2022543.1.4指數函數、對數函數及復函數名稱exp(x)log(x)log10(x)abs(x)含義e為底的指數函數e為底的對數函數10為底的對數函數

33、X的模名稱angle (x)real (x)imag (x)conj (x)含義X的幅角X的實部X的虛部X的共軛例: exp(-2-5i), abs(3+4i), imag(1+2i) conj(-1+8i), log(-1+3i);8/25/2022553.1.4.1指數函數 exp(x)功能 以e為底數的指數函數格式 Y = exp(X) %對參量X的每一分量,求以e為底數的指數函數Y。X中的分量可以為復數。對于復數分量如,z = x +iy,則相應地計算式為: ez = ex*(cos(y) + i*sin(y)。 例2-5 A = -1.9, -0.2, 3.1415926, 5.6,

34、 7.0, 2.4+3.6i; Y = exp(A)計算結果為: Y = 1.0e+003 * Columns 1 through 4 Columns 5 through 6 8/25/202256對數函數 log(x)的命令應用功能 自然對數,即以e為底數的對數。格式 Y = log(X) %對參量X中的每一個元素計算自然對數。其中X中的元素可以是復數與負數,但由此可能得到意想不到的結果。若z = x + i*y,則log對復數的計算如下:log (z) = log (abs (z) + i*atan2(y, x)例2-6 下面的語句可以得到無理數的近似值: Pi = abs(log(-1)

35、計算結果為: Pi = 3.1.4.2對數函數 log(x)8/25/202257以10為底的對數函數 log10(A)功能 常用對數,即以10為底數的對數。格式 Y = log10(X) %計算X中的每一個元素的常用對數,若X中出現復數,則可能得到意想不到的結果。例2-7L1 = log10(realmax) % 由此可得特殊變量realmax的近似值L2 = log10(eps) % 由此可得特殊變量eps的近似值M = magic(4);L3 = log10(M)計算結果為: 0.6021 1.1461 1.1761 08/25/202258復數的求模函數 abs(X)功能 數值的絕對值

36、與復數的模格式 Y = abs() %返回矩陣X的每一個元素的絕對值;若X為復數矩陣,則返回每一元素的模:abs(X) = sqrt(real(X).2+imag(X).2)。例2-8A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;Y = abs(A)計算結果為:3.1.4.2對數函數 log(x)8/25/202259復數的共軛函數 conj(Z)功能 復數的共軛值格式 ZC = conj(Z) %返回參量Z的每一個分量的共軛復數:conj(Z) = real(Z) - i*imag(Z) 函數 imag功能 復數的虛數部分格式 Y = imag(

37、Z) %返回輸入參量Z的每一個分量的虛數部分。例2-9imag(2+3i)計算結果為:ans = 38/25/202260復數的虛部函數 imag(Z)功能 復數的虛數部分格式 Y = imag(Z) %返回輸入參量Z的每一個分量的虛數部分。例2-10imag(2+3i)計算結果為:ans = 3函數 real功能 復數的實數部分。格式 Y = real(Z) %返回輸入參量Z的每一個分量的實數部分。例2-11real(2+3i)計算結果為:ans = 28/25/202261復數的幅角函數 angle(Z)功能 復數的相角格式 P =angle(Z) %返回輸入參量Z的每一復數元素的、單位為

38、弧度的相角,其值在區間-,上。說明 angle(z) = imag (log(z) = atan2 (imag(z),real(z)例2-12Z =1-i, 2+i, 3-i, 4+i; 1+2i,2-2i,3+2i,4-2i; 1-3i,2+3i,3-3i,4+3i;Angle(Z)=8/25/202262生成復函數 complex功能 用實數與虛數部分創建復數格式 c = complex(a,b) %用兩個實數a,b創建復數c=a+bi。輸出參量c與a、b同型(同為向量、矩陣、或多維陣列)。該命令比下列形式的復數輸入更有用:a + i*b 或a + j*b因為i和j可能被用做其他的變量(不

39、等于sqrt(-1),或者a和b不是雙精度的。 c = complex(a) %輸入參量a作為輸出復數c的實部,其虛部為0:c = a+0*i。例2-13a = uint8(1;2;3;4); %非符號8-bit整數型數據b = uint8(4;3 ;2;1);c = complex(a,b)計算結果為:8/25/2022633.1.4.3 Matlab的圓整函數和求余函數 名稱 含義名稱含義ceil (x)向正無窮大圓整mod (x,y)除模取余floor (x)向負無窮大圓整rem (x,y)求余數round (x)向靠近整數圓整sign (x)符號函數fix (x)向零圓整sqrt(x)

40、平方根函數例: floor(2.6)=2, ceil(-3.5)=3 mod(7,3)=18/25/202264功能 朝零方向取整格式 B = fix(A) %對A的每一個元素朝零的方向取整數部分,返回與A同維的數組。對于復數參量A,則返回一復數,其分量的實數與虛數部分分別取原復數的、朝零方向的整數部分。例2-14 A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i; B = fix(A)計算結果為: B = Columns 1 through 4 -1.0000 0 3.0000 5.0000 Columns 5 through 6 7.0000 2.

41、0000 + 3.0 3.1.4.4圓整函數 fix8/25/2022653.1.4.5圓整函數 round功能 朝最近的方向取整。格式 Y = round(X) %對X的每一個元素朝最近的方向取整數部分,返回與X同維的數組。對于復數參量X,則返回一復數,其分 量的實數與虛數部分分別取原復數的、朝最近方向的整數部分。例2-15A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;Y = round(A)計算結果為:Y = Columns 1 through 4 -2.0000 0 3.0000 6.0000 Columns 5 through 6 8/25

42、/2022663.1.4.6 圓整函數 floor 功能 朝負無窮大方向取整格式 B = floor(A) %對A的每一個元素朝負無窮大的方向取整數部分,返回與A同維的數組。對于復數參量A,則返回一復數,其分量的實數與虛數部分分別取原復數的、朝負無窮大方向的整數部分。例2-16A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;F = floor(A)計算結果為:F = Columns 1 through 4 -2.0000 -1.0000 3.0000 5.0000 Columns 5 through 6 8/25/2022673.1.4.7 圓整函數

43、 ceil功能 朝正無窮大方向取整格式 B = floor(A) % 對A的每一個元素朝正無窮大的方向取整數部分,返回與A同維的數組。對于復數參量A,則返回一復數,其分量的實數與虛數部分分別取原復數的、朝正無窮大方向的整數部分。例2-17A = -1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i;B = ceil(A)計算結果為:B = Columns 1 through 4 -1.0000 0 4.0000 6.0000 Columns 5 through 6 8/25/202268 取余數函數rem功能 求作除法后的剩余數(正負均可)格式 R = rem(X

44、,Y) %返回結果: X-fix(X./Y).*Y其中X、Y應為整數。若X、Y為浮點數,由于計算機對浮點數的表示的不精確性,則結果將可能是不可意料的。fix(X./Y)為商數X./Y朝零方向取的整數部分。若X與Y為同符號的,則rem(X,Y)返回的結果與mod(X,Y)相同,不然,若X為負數,則rem(X,Y) = mod(X,Y) - Y。該命令返回的結果在區間 sign(X)*abs(Y),0,若Y中有零分量,則相應地返回NaN。8/25/202269功能 模數(帶符號的除法余數)用法 M = mod(X,Y) %輸入參量X、Y應為整數,此時返回余數X-Y.*floor(X./Y),其結果

45、總是正數或零;若運算數x與y有相同的符號,則mod(X,Y)等于rem(X,Y)。總之,對于整數x,y,有:mod(-x,y) = rem(-x,y)+y。若輸入為實數或復數,由于浮點數在計算機上的不精確表示,該操作將導致不可預測的結果。例2-18M1 = mod(13,5) M2 = mod(1:5,3) 計算結果為:M1 = 3M2 = 1 2 0 1 23.1.4.8 取余函數mod8/25/2022703.1.4.9 組合函數 nchoosek功能 二項式系數或所有的組合數。該命令只有對n=, , 0 t1=t1+1;B1(1,t1)=A(k);B1(2,t1)=k; else t2=

46、t2+1; B2(1,t2)=A(k);B2(2,t2)=k; endenddisp(中的正數及位置是),Bdisp(中的負數及位置是),B8/25/202280語句格式: switch case %定義case為整數變量case1 結論1 %變量取值case1時case2 結論2 %變量取值case2時case3 結論3 %變量取值case3時. .caseN 結論N %變量取值caseN時 end %語句結束(3) switch-case語句8/25/2022814循環語句 for語句命令格式:for k=n1:d:n2 % 以d為步長; g(k+1)=f(k); %循環主體,; end

47、%結束符; while語句命令格式:while f(x,n)S g(k+1)=f(k); %循環主體; end %結束符;5. Matlab編程技巧 調試程序 輸入輸出參數 nargin、nargout8/25/202282循環控制語句for-end應用示例(一)%求調和級數前100項之和SS=0; %初始化賦值;for k=1:100S=S+1/k; %循環主體語句;enddisp(調和級數前100項之和S等于),S運行結果輸出: 調和級數前100項之和S等于S =8/25/202283循環控制語句for-end應用示例(二)clear求100 之內的全部素數B(1:4)=2,3,5,7;

48、s=4; %先給出s個素數;C=1;for k=10:100 for j=1:s A(j)=mod(k,B(j); %求出k除以素數B(j)的余數; C=C*A(j); %求出前j個余數的乘積; end if C=0 s=s+1; B(s)=k; %將此數添加到素數表列中; endenddisp(100 之內的全部是), B %輸出所求素數8/25/202284循環控制語句for-end應用(三)%按給定公式生成一個10行10列的下三角矩陣clear A=zeros(10);%初始化A A(1:10,1)=1; A(1,2:10)=0; for k1=2:10 for k2=2:k1 A(k1

49、,k2)=. A(k1-1,k2)+A(k1-1,k2-1); end end disp(按公式計算結果生成的矩陣是),A運行左邊的程序后輸出結果為:按公式計算結果生成的矩陣是A = 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 3 3 1 0 0 0 0 0 0 1 4 6 4 1 0 0 0 0 0 1 5 10 10 5 1 0 0 0 0 1 6 15 20 15 6 1 0 0 0 1 7 21 35 35 21 7 1 0 0 1 8 28 56 70 56 28 8 1 0 1 9 36 84 126

50、126 84 36 9 18/25/202285用循環控制語句for-end應用(四)%雙對角形矩陣的生成clear for k1=1:7 for k2=1:7 if k2+k1=8 | k2=k1 A(k1,k2)=1; else A(k1,k2)=0; end end end disp(生成的雙對角形矩陣是),A執行左邊程序輸出結果:A=8/25/202286%三對角矩陣的生成clearm=8; n=8; for k1=1:m for k2=1:n if k1=k2 A(k1,k2)=1; elseif k2=k1+1 A(k1,k2)=3; elseif k2=k1-1 A(k1,k2)

51、=2; else A(k1,k2)=0; end end end disp(所生成的三對角矩陣是),A 循環控制語句for-end應用(五)8/25/202287循環控制語句for-end應用(六)排序函數Sort的程序設計思路%對下列行矩陣A中的元素從小到大進行排序并記取原來的位置;A = -1.9, -2, pi, 5.6, 7.0, 2.4+3.6i;%由于矩陣中有虛數,故應分兩步走.%(1)先把全部元素化為實數,其程序如右邊所示 clearA = -1.9, -2, pi, 5.6, 7.0, 2.4+3.6i;n=length(A);%求A的長度for k1=1:n if imag(

52、A(k1)=0 A1(k1)=A(k1); else A1(k1)=abs(A(k1); end end A1 %輸出實數化結果;8/25/2022883.3.8循環控制語句for-end應用(七) %(2)第二步,(續前頁)對A1中的元素進行排序,并記取它們各自原來的位置; N=max(A1)+100; for t=1:n a=N; %初始化 for k=1:n if A1(k) a a=A1(k); c=k; end end S(t)=a; D(t)=c; A1(c)=inf; end A0=A1;disp(從小到大排序后的序列是), S, disp(排序后的序列中各元素的原位置是),D8

53、/25/2022893.4 隨機函數 rand與randn功能 生成元素均勻分布于(0,1)上的數值與陣列用法 Y = rand(n) %返回n*n階的方陣Y,其元素均勻分布于 區間 (0,1)。若n不是一標量,則顯示一出錯信息。Y = rand(m,n)、Y = rand(m n) %返回階數為m*n的,元素均勻分布于區間(0,1)上矩陣Y。Y = rand(m,n,p,)、Y = rand(m n p) %生成階數m*n*p*的元素服從均勻分布的多維隨機陣列Y。3.4.1 隨機函數rand8/25/202290計算結果可能為:R1 = Y = rand(size(A) %生成一與陣列A同型

54、的隨機均勻陣列Yrand %該命令在每次單獨使用時,都返回一隨機數(服從均勻分布)。s = rand(state) %返回一有35元素的列向量s,其中包含均勻分布生成器的當前狀態。該改變生成器的當前的狀態,見表2-1。 例2-23: R1 = rand(4,5)8/25/202291例2-24: R1 = rand(4,5) R2 = 0.6 + sqrt(0.1) * randn(5)計算結果為:R1 =R2 =8/25/202292運行程序后輸出結果:R2 =例2-25 a = 10; b = 50; R2 = a + (b-a) * rand(5) % 經過線性變換后生成元素均勻分布于(

55、10,50)上的矩陣;8/25/202293s = rand(state) %返回一有2元素的向量s,其中包含正態分布生成器的當前狀態。該改變生成器的當前狀態,見下表命令含義rand(state,s)設置狀態為srand(state,0)設置生成器為初始狀態rand(state,k)設置生成器第k個狀態(k為整數)rand(state,sum(100*clock)設置生成器在每次使用時的狀態都不同(因為clock每次都不同)3.4.2 隨機函數rand8/25/2022943.4.3 隨機函數randn功能 生成元素服從正態分布(N(0,1))的數值與陣列格式 Y = randn(n) %返回

56、n*n階的方陣Y,其元素服從正態分布N(0,1)。若n不是一標量,則顯示一出錯信息.Y = randn(m,n)、Y = randn(m n) %返回階數為m*n的,元素均勻分布于區間(0,1)上矩陣Y。Y = randn(m,n,p,)、Y = randn(m n p) %生成階數m*n*p*的,元素服從正態分布的多維隨機陣列Y。Y = randn(size(A) %生成一與陣列A同型的隨機正態陣列Y;randn %該命令在每次單獨使用時,都返回一隨機數(服從正態分布)。8/25/202295s = randn(state) %返回一有2元素的向量s,其中包含正態分布生成器的當前狀態。該改變

57、生成器的當前狀態,見下表。命令含義randn(state,s)設置狀態為srandn(state,0)設置生成器為初始狀態rand(state,k)設置生成器第k個狀態(k為整數)rand(state,sum(100*clock)設置生成器在每次使用時的狀態都不同(因為clock每次都不同)3.4.4 隨機函數randn8/25/202296Randn的應用:對正態分布隨機函數產生的矩陣各元素按大小裝入8個箱中并畫出統計頻率圖clear%A=rand(10,10);B=randn(10,10);t1=0;t2=0;t3=0;t4=0;t5=0;t6=0;t7=0;t8=0; for k1=1:

58、10 for k2=1:10 if B(k1,k2)=-3 t1=t1+1; C(t1,1)=B(k1,k2); elseif B(k1,k2)-3 t2=t2+1; C(t2,2)=B(k1,k2); elseif B(k1,k2)-2 t3=t3+1; C(t3,3)=B(k1,k2); elseif B(k1,k2)-1 t4=t4+1; C(t4,4)=B(k1,k2); elseif B(k1,k2)0 t5=t5+1; C(t5,5)=B(k1,k2); elseif B(k1,k2)1 t6=t6+1; C(t6,6)=B(k1,k2); elseif B(k1,k2)2 t7=

59、t7+1; C(t7,7)=B(k1,k2); else B(k1,k2)3 t8=t8+1; C(t8,8)=B(k1,k2); end end end C P=t1,t2,t3,t4,t5,t6,t7,t8/100 bar(P)8/25/202297求多項式的根,即多項式為零的值,可能是許多學科共同的問題。用MATLAB可以求解這個問題,并提供其它的多項式操作工具。在MATLAB里,多項式由一個行向量表示,它的系數是按降冪排列。例如,輸入多項式x412x30 x225x116,只須按降冪輸入它的系數: p=1 -12 0 25 116;注意,必須包括具有零系數的項。除非特別地辨認,MATL

60、AB無法知道哪一項為零。給出這種形式,用函數roots找出一個多項式的根。 r=roots(p) %此命令可求出它的四個根為: r=11.7473 , 2.7028 , -1.2251 + 1.4672i , -1.2251 - 1.4672i3.5 多項式運算8/25/202298因為在MATLAB中,無論是一個多項式,還是它的根,都是向量,MATLAB按慣例規定,多項式是行向量,根是列向量。給出一個多項式的根,也可以構造相應的多項式。在MATLAB中,命令poly執行這個任務。 pp=poly(r) pp = 1.0e+002 * Columns 1 through 4 0.0100 -0

溫馨提示

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

評論

0/150

提交評論