數(shù)學建模簡明教程課件:MATLAB軟件簡介_第1頁
數(shù)學建模簡明教程課件:MATLAB軟件簡介_第2頁
數(shù)學建模簡明教程課件:MATLAB軟件簡介_第3頁
數(shù)學建模簡明教程課件:MATLAB軟件簡介_第4頁
數(shù)學建模簡明教程課件:MATLAB軟件簡介_第5頁
已閱讀5頁,還剩125頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

MATLAB軟件簡介9.1MATLAB操作基礎9.2MATLAB程序設計基礎9.3MATLAB科學繪圖9.4常見方程求解問題的MATLAB實現(xiàn)9.5概率統(tǒng)計基礎的MATLAB實現(xiàn)

MATLAB軟件是一種功能強大,運算效率很高的數(shù)字工具軟件,全稱是MatrixLaboratory.最初它是一種專門用于矩陣運算的軟件,經過多年的發(fā)展,MATLAB已經發(fā)展為一種功能全面的軟件,幾乎可以解決科學計算中的所有問題.矩陣和數(shù)組是MATLAB的核心,因為MATLAB的所有數(shù)據(jù)都是以數(shù)組來表示和儲存的.除了常用的矩陣代數(shù)運算值外,MATLAB軟件還提供了非常廣泛和靈活的用于處理數(shù)據(jù)集的數(shù)組運算功能.另外,MATLAB除了對矩陣提供了強大的處理能力外,還具有與其他高級語言相似的編輯特性.同時它還可以與Fortran和C語言混合編程,進一步擴展了它的功能.在圖形可視化方面,MATLAB提供了圖形用戶界面(GUI),使得用戶可以進行可視化編程.因此,MATLAB是一種將數(shù)據(jù)結構、編程特性以及圖形用戶界面完美結合到一起的軟件.

9.1.1MATLAB概述

1.MATLAB的主要功能

1)數(shù)值計算和符號計算功能

MATLAB以矩陣作為數(shù)據(jù)操作的基本單位,還提供了十分豐富的數(shù)值計算函數(shù).

MATLAB和著名的符號計算語言Maple相結合,使得MATLAB具有符號計算功能.9.1MATLAB操作基礎

2)繪圖功能

MATLAB提供了兩個層次的繪圖操作:一種是對圖形句柄進行的低層繪圖操作,另一種是建立在低層繪圖操作之上的高層繪圖操作.

3)編程語言

MATLAB具有程序結構控制、函數(shù)調用、數(shù)據(jù)結構、輸入輸出、面向對象等程序語言特征,而且簡單易學、編程效率高.4)MATLAB工具箱

MATLAB包含兩部分內容:基本部分和各種可選的工具箱.MATLAB工具箱分為兩大類:功能性工具箱和學科性工具箱.

2.MATLAB工作界面

(1)MATLAB的啟動界面:當MATLAB啟動時,展現(xiàn)在屏幕上的界面為MATLAB的默認界面,它有四個窗口,分別是命令窗口、工作空間窗口、幫助窗口和歷史窗口,如圖9-1所示(有的窗口未展開).

圖9-1

(2)MATLAB系統(tǒng)的退出:要退出MATLAB系統(tǒng),有3種常見方法:

(ⅰ)在MATLAB主窗口的File菜單中選擇ExitMATLAB命令.

(ⅱ)在MATLAB命令窗口中輸入Exit或Quit命令.

(ⅲ)單擊MATLAB主窗口的“關閉”按鈕.

3.主窗口

MATLAB主窗口是MATLAB的主要工作界面.主窗口除了嵌入一些子窗口外,還主要包括菜單欄和工具欄,和Windows的主窗口類似,其操作方法也基本相同.

1)菜單欄

在MATLAB6.5主窗口的菜單欄,共計包含有File、Edit、View、Web、Window和Help6個菜單項.

File菜單項:實現(xiàn)有關文件的操作.

Edit菜單項:用于命令窗口的編輯操作.

View菜單項:用于設置MATLAB集成環(huán)境的顯示方式.

Web菜單項:用于設置MATLAB的Web操作.

Window菜單項:只包含一個子菜單Closeall,用于關閉所有打開的編輯器窗口,包括M

file、Figure、Model和GUI窗口.

Help菜單項:用于提供幫助信息.

2)工具欄

MATLAB6.5主窗口的工具欄共提供了10個命令按鈕.這些命令按鈕均有對應的菜單命令,但比菜單命令使用起來更快捷、方便.

3)命令窗口

命令窗口是MATLAB的主要交互窗口,用于輸入命令并顯示除圖形以外的所有執(zhí)行結果.MATLAB命令窗口中的“>>”為命令提示符,表示MATLAB正處于準備狀態(tài).在命令提示符后鍵入命令并按下回車鍵后,MATLAB就會解釋執(zhí)行所輸入的命令,并在命令后面給出計算結果.如果一個命令行很長,一個物理行之內寫不下,可以在第一個物理行之后加上3個小黑點并按下回車鍵,然后接著下一個物理行繼續(xù)寫命令的其他部分.3個小黑點稱為續(xù)行符,即把下面的物理行看做該行的邏輯繼續(xù).在MATLAB里,有很多的控制鍵和方向鍵可用于命令行的編輯.

4)工作空間窗口

工作空間是MATLAB用于存儲各種變量和結果的內存空間.在該窗口中顯示了工作空間中所有變量的名稱、大小、字節(jié)數(shù)和變量類型說明,可對變量進行觀察、編輯、保存和刪除.

5)當前目錄窗口和搜索路徑

(1)當前目錄窗口。當前目錄是指MATLAB運行文件時的工作目錄,只有在當前目錄或搜索路徑下的文件、函數(shù)可以被運行或調用.在當前目錄窗口中可以顯示或改變當前目錄,還可以顯示當前目錄下的文件并提供搜索功能.

將用戶目錄設置成當前目錄時也可使用cd命令.例如,將用戶目錄c:\mydir設置為當前目錄,可在命令窗口輸入命令:

cdc:\mydir

(2)MATLAB的搜索路徑:當用戶在MATLAB命令窗口輸入一條命令后,MATLAB按照一定次序尋找相關的文件.基本的搜索過程是:

(ⅰ)檢查該命令是不是一個變量.

(ⅱ)檢查該命令是不是一個內部函數(shù).

(ⅲ)檢查該命令是否為當前目錄下的M文件.

(ⅳ)檢查該命令是否為MATLAB搜索路徑中其他目錄下的M文件.9.1.2MATLAB幫助系統(tǒng)

1.幫助窗口

可以通過以下3種方法進入幫助窗口:

(ⅰ)單擊MATLAB主窗口工具欄中的Help按鈕.

(ⅱ)在命令窗口中輸入helpwin、helpdesk或doc.

(ⅲ)選擇Help菜單中的“MATLABHelp”選項.

2.幫助命令

MATLAB幫助命令包括help、lookfor以及模糊查詢命令.

1)help命令

在MATLAB6.5命令窗口中直接輸入help命令將會顯示當前幫助系統(tǒng)中所包含的所有項目,即搜索路徑中所有的目錄名稱.同樣,可以通過help加函數(shù)名來顯示該函數(shù)的幫助說明.

2)模糊查詢

MATLAB6.0以上的版本提供了一種類似模糊查詢的命令查詢方法,用戶只需要輸入命令的前幾個字母,然后按Tab鍵,系統(tǒng)就會列出所有以這幾個字母開頭的命令.9.1.3演示系統(tǒng)

在幫助窗口中選擇演示系統(tǒng)(Demos)選項卡,然后在其中選擇相應的演示模塊,或者在命令窗口輸入Demos,或者選擇主窗口Help菜單中的Demos子菜單,即可打開演示系統(tǒng).

利用MATLAB的命令窗口,可以完成較為簡單的運算,但遇到較為復雜的問題時,僅靠命令窗口來解決可能會非常繁瑣,這時我們就要考慮使用MATLAB的程序設計.MATLAB提供了一個完善的程序設計語言環(huán)境,使我們能方便地編寫復雜的程序,完成各種復雜的計算.MATLAB語言在形式上與C語言相似,但它的編程效率比C語言高得多,9.2MATLAB程序設計基礎因為用MATLAB語言編程,不需要事先定義變量,不需要考慮數(shù)據(jù)類型,系統(tǒng)會自動把所有的數(shù)據(jù),包括標量、向量、字符、字符串等統(tǒng)一處理成矩陣,矩陣的大小是根據(jù)需要動態(tài)變化的.在本節(jié)中我們主要介紹MATLAB類似于其他高級語言的關系運算、邏輯運算、程序的控制結構以及MATLAB特有的M文件.9.2.1關系運算

關系運算是指對兩個量之間的大小進行比較.

MATLAB提供了6個關系運算符,如表9-1所示.表9-1若用關系運算比較兩個數(shù)值,則當關系成立時,結果為1(表示真),否則為0(表示假).進行關系運算的兩個量也可以是具有相同格式的矩陣(事實上,若比較的是兩個數(shù),則這兩個數(shù)可以看做兩個1×1矩陣),此時兩矩陣的所有對應位置的元素作關系運算,最終的結果是由各對應元素進行關系運算后的結果“0”和“1”組成的矩陣,其格式與比較矩陣相同.

>>al=5>8

al=

0

>>a2=[123;456];a3=[654;321]

>>a4=a2<=a3%兩矩陣進行關系運算

a4=111000>>a5=a2>=3 %矩陣與標量間的關系運算是指矩陣的每個元素與該標量進行關系運算

a5=

0 0 1

1 1 19.2.2邏輯運算

MATLAB提供了3個邏輯運算符,如表9-2所示.表9-2邏輯運算將每個非零元素當作1(真)來處理.同關系運算一樣,它也可以作用于格式相同的矩陣,運算結果為由“0”和“1”組成的矩陣.

>>b1=3&0,b2=3|0,b3=~(2>=3)%數(shù)值的邏輯運算

b1=

0b2=

1b3=

1

>>b4=[-2-10;123];b5=[135;-1-1-5];

>>b6=(b4-2)&(b5<=3),b7=~(b5>=b4|b4<0) %矩陣間的邏輯運算

b6=

010

111B7=

000

111除上述的關系運算符和邏輯運算符之外,MATLAB還提供了大量的關系和邏輯函數(shù),最常見的有函數(shù)any(A),all(A)以及異或運算函數(shù)xoy(A,B).若矩陣A的某列中有非零元素,則any(A)中關于此列的值為1,否則為0.

>>c=[123;010];

>>c1=any(c),c2=all(c)

c1=

111 %矩陣c的每一列中都有非零元素c2=

010 %矩陣c中只有第二列中所有元素非零9.2.3MATLAB程序的控制結構

MATLAB程序的控制結構有順序結構、循環(huán)結構和選擇結構三種.順序結構較為簡單,即根據(jù)語句的書寫順序,從上到下按行執(zhí)行,執(zhí)行完所有語句后結束程序運行.這里我們主要介紹循環(huán)結構的控制流語句for、while和選擇結構的控制流語句if、switch,這四種語句均以end為結束標志.

(1)for循環(huán)語句的一般格式為:

for循環(huán)變量=冒號表達式

循環(huán)體

end

其中的循環(huán)體可以是一條語句或命令,也可以是由逗號、分號隔開的若干語句或命令.冒號表達式用來控制循環(huán)的次數(shù),對于由冒號表達式確定的每一個循環(huán)變量的值,循環(huán)體中的所有語句都被重復執(zhí)行.

我們利用for循環(huán)來計算自然數(shù)1~5的階乘.

>>d=zeros(1,5);%開辟存放各階乘的地址,MATLAB可動態(tài)調節(jié)矩陣的格式,故運行該語句之后的結果即各階乘將存放到矩陣d中,但預先開辟空間可節(jié)約運行時間

>>e=1; %對乘積因子變量e賦初值

>>fori=1:5 %循環(huán)變量i從1直到5,步長為

1d(i)=e*i; %此for循環(huán)的循環(huán)體包含兩個語句,此句作用是求i的階乘并存放在d(i)處且結果不顯示(不顯示可節(jié)約運行時間)

e=d(i); %改變e的值且結果不顯示

end %結束for循環(huán)

>>disp(d) %顯示各階乘

12624120

前述for循環(huán)語句一般格式中的“冒號表達式”部分也可以是任意的向量或矩陣的變量名,此時,循環(huán)變量依次取向量的值或按矩陣的列依次取值.

>>f1=[135];f2=[135;468];i=1;j=1;

>>forg=f1

f3(i)=g;i=i+1;%取出f1的各分量的值

end

>>forh=f2

f4(j)=h(2)*h(1);j=j+1;

end

>>disp(f3)

135

>>disp(f4)

41840

for循環(huán)可以嵌套使用,如以下程序可以生成3×5Hilbert矩陣:

>>k=zeros(3,5);

>>fori=1:3

forj=1:5

k(i,j)=1/(i+j-1);

end

end

>>formatrat

>>k

k=

11/21/31/41/5

1/21/31/41/51/6

1/31/41/51/61/7

>>format%恢復顯示格式

for循環(huán)語句主要用于循環(huán)次數(shù)已定的情形,而在很多實際計算中循環(huán)次數(shù)往往并不能預先確定,此時我們可以使用while循環(huán)語句.

(2)while循環(huán)語句的一般格式為:

while條件

循環(huán)體

end

“條件”即執(zhí)行循環(huán)的條件,用來控制循環(huán)的次數(shù),它可以是關系表達式或邏輯表達式.當條件成立(即為1)時,循環(huán)體被執(zhí)行,直到條件不成立(即為0)時,結束循環(huán).我們利用while循環(huán)語句來尋找階乘小于100萬的最大的自然數(shù).

>>m=1;

>>whileprod(1:m)<1000000 %prod為向量的連乘 函數(shù)

m=m+1;

end>>m=m-1 %結束循環(huán)的條件為階乘大于100萬,故 最終的結果需減1m=

9

(3)選擇結構的if語句的格式主要有以下三種:

格式1:if條件

語句組

end

當條件成立時,執(zhí)行語句組,否則執(zhí)行end的后續(xù)語句.

格式2:if條件

語句組1

else

語句組2

end

當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2.執(zhí)行完成之后,執(zhí)行end的后續(xù)語句.

格式3:if條件1

語句組1

elseif條件2

語句組2

elseif條件n

語句組n

else

語句組n+1

end當條件1成立時,執(zhí)行語句組1,執(zhí)行完成后,執(zhí)行end的后續(xù)語句;當條件1不成立時,判斷條件2,若其成立,執(zhí)行語句組2,執(zhí)行完成后,執(zhí)行end的后續(xù)語句;以此類推,若所有條件均不成立,則執(zhí)行語句組n+1,執(zhí)行完成后,執(zhí)行end的后續(xù)語句.

我們可以利用上述任何一種格式的if語句自定義符號函數(shù)若用格式1,需分別調用3次;若用格式2,則需使用嵌套;下面是用格式3書寫的程序.

>>ifx>0

y=1;

elseifx<0

y=-1;

else

y=0;

end無論是for循環(huán)還是while循環(huán),break語句可以強行退出循環(huán)并立即執(zhí)行此循環(huán)end的后續(xù)語句.一般我們用if語句的組合使用來中斷循環(huán).

我們用while循環(huán)來統(tǒng)計由MATLAB產生的100個隨機數(shù)中介于0.5~1的隨機數(shù)個數(shù),并使用break語句來中斷循環(huán).事實上,本例通過簡單的循環(huán)語句即可實現(xiàn),下列程序僅為說明break語句的用法.

>>p=rand(1,100);i=1;s=0; %生成隨機數(shù),循環(huán)變量、計數(shù)器賦初值

>>while1 %該條件總為真,如無中斷語句break,循環(huán)將無休止地運行

ifp(i)>=0.5

s=s+1;

endi=i+1;

ifi>100 %設置循環(huán)中斷條件

break %while語句的循環(huán)條件總為真,如無此中斷語句break,循環(huán)將無休止地運行 End

end

>>ss=

54%換新的100個隨機數(shù)得到的統(tǒng)計個數(shù)可能不同

選擇結構的switch語句根據(jù)表達式的值來選擇執(zhí)行相應的語句組.switch的格式為:switch表達式case值1語句組1case值2語句組2

case 值n

語句組n

otherwise

語句組n+1

end

當表達式的值為值1時,執(zhí)行語句組1,執(zhí)行完成后,執(zhí)行end的后續(xù)語句;當表達式的值為值2時,執(zhí)行語句組2,執(zhí)行完成后,執(zhí)行end的后續(xù)語句;以此類推,若以上均不滿足,則執(zhí)行語句組n+1,執(zhí)行完成后,執(zhí)行end的后續(xù)語句.9.2.4MATLAB的M文件

到目前為止,我們仍然一直在命令窗口中逐行輸入數(shù)據(jù)和命令來實現(xiàn)計算等功能.這種方法對于較為簡單的問題還可以接受,一旦問題較為復雜,這種方法就顯得相當麻煩,這時MATLAB提供的以m為擴展名的M文件的作用就突顯出來了.M文件有兩種類型:文本M文件和函數(shù)M文件.

建立M文件可以在MATLAB的主窗口的File下拉式菜單中選擇New,再選擇M

file,此時MATLAB將打開一個文本編輯窗口,在此窗口中輸入一系列的命令和數(shù)據(jù),編輯結束后,在此窗口的File下拉式菜單中選擇Save,將彈出保存對話框,選擇文件的保存位置并鍵入文件名稱(需遵循變量的命名規(guī)則)和“.m”,單擊保存按鈕即可完成M文件的建立.已經建立好的M文件可以隨時打開、編輯、修改,方法同Windows操作系統(tǒng).

文本M文件就是命令行的簡單疊加.調用文本M文件時,MATLAB會自動按順序執(zhí)行文件中的命令行.以下是我們自己編寫的命名為Fibo.m的一個文本M文件,它的功能是產生前n個Fibonnaci數(shù).

f=[11];i=1

ifn==1f(2)=[];

elseifn==2%如果n為2,不執(zhí)行任何語句else

whilei>n-1

f(i+2)=f(i)+f(i+1);

i=i+1;

end

end

f這里要注意的是,文本M文件中所定義和使用的變量均為全局變量,如本例中的f、i及n,它們不僅在本程序的運行過程中有效,程序運行完成之后仍然有效.我們在編輯程序時,要盡量避免使用全局變量.

要運行文本M文件,只需在MATLAB的命令窗口中直接鍵入該文件的文件名即可.

>>n=10;Fibo %產生前10個Fibonnaci數(shù);文件中未指定n的大小,故需事先指定

f=

1

1

2

3

5

8

13

21

34

55函數(shù)M文件是另一類M文件.MATLAB所提供的絕大多數(shù)功能函數(shù)都是通過函數(shù)M文件來實現(xiàn)的,可見函數(shù)M文件的重要性.我們可以根據(jù)需要建立自己的函數(shù)M文件,它能夠像系統(tǒng)中的功能函數(shù)一樣被方便地調用,從而極大地擴展了MATLAB的功能.

函數(shù)M文件的第一行有特殊的格式,必須以function開頭.函數(shù)M文件的一般格式為:

function[輸出參數(shù)表]=函數(shù)名(形式參數(shù))

語句組

end

這里的輸出參數(shù)表可以是一個變量,也可以是多個變量,它們表示要計算的量.如果是一個參數(shù),雙括號可以去掉;如果是多個變量,兩兩之間用逗號隔開.這里的函數(shù)名必須與該文件的文件名一致,這樣才能保證被成功調用.形式參數(shù)是一組形式變量,本身沒有任何意義,只有在調用時賦予它們實際值才有意義.

下面是我們編寫的一個命名為Fibon.m的函數(shù)M文件,它的功能是產生前n個Fibonnaci數(shù),并計算這n個數(shù)之和.

function[f,s]=fibon(n)%返回兩個量f、s,n為形式參數(shù)

F=[11];i=1;

ifn==1

f(2)=[];

els

eifn==2 %如果n為2,不執(zhí)行任何語句

else

whilei<n-1

f(i+2)=f(i)+f(i+1);

i=i+1;

end

end

s=sum(f);

函數(shù)M文件的調用格式為:[輸出參數(shù)表]=函數(shù)名(實際參數(shù)).若我們想知道前10個Fibonnaci數(shù)及這10個數(shù)之和,只需在MATLAB的命令窗口中鍵入:

>>[fib,fibs]=Fibon(10)%返回值分別賦予fib和fibs

fib=

11235813213455

fibs=

143

與文本M文件不同的是,函數(shù)M文件中定義和使用的變量為局部變量,如本例中的f、s、n、i,它們僅在本程序的運行過程中有效,程序運行過之后就不再有效.

自定義的M文件,不管是文本M文件還是函數(shù)M文件,均應該存放在MATLAB的當前目錄下或MATLAB的搜索路徑下,以使系統(tǒng)能夠找到該M文件并執(zhí)行.當然,也可以使用cd命令確定和改變當前目錄,用path命令確定MATLAB的搜索路徑.

MATLAB作為高性能、交互式的科學計算工具,具有非常友好的圖形界面,其應用非常廣泛.同時,MATLAB也提供了強大的繪圖功能,這使得用戶可以通過對MATLAB內置繪圖函數(shù)的簡單調用,便可迅速繪制出具有專業(yè)水平的圖形.在利用MATLAB中的Simulink進行動態(tài)系統(tǒng)仿真時,圖形輸出可以使設計者快速地對系統(tǒng)性能進行定性分析,故可大大縮短系統(tǒng)的開發(fā)時間.9.3MATLAB科學繪圖

MATLAB的圖形系統(tǒng)是面向對象的.圖形的要素,如坐標軸、標簽、觀察點等都是獨立的圖形對象.一般情況下,用戶不需直接操作圖形對象,只需調用繪圖函數(shù)就可以得到理想的圖形.通過本節(jié)的學習,用戶能夠快速掌握圖形繪制技術.9.3.1基本的二維圖形繪制命令

(1)plot(x,y):輸出以向量x為橫坐標,以向量y為縱坐標且按照x,y元素的順序有序繪制的圖形.x與y必須具有相同長度.

(2)plot(y,x):輸出以向量y為橫坐標,以向量x的對應元素xm為縱坐標繪制的圖形.

(3)plot(x1,y1,′str1′,x2,y2,′str2′,…):用′str1′指定的方式,輸出以x1為橫坐標,y1為縱坐標的圖形.用′str2′指定的方式,輸出以x2為橫坐標,y2為縱坐標的圖形.若省略′str′,則MATLAB自動為每條曲線選擇顏色與線型.′str′選項中的部分參數(shù)如表9-3所示.

表9-3plot命令選項9.3.2簡單的三維圖形繪制命令

(1)plot3(x,y,z):用向量x、y和z的相應點(xi,yi,zi)進行三維圖形的有序繪制.向量x,y,z必須具有相同的長度.

(2)plot3(x1,y1,z1,′str1′,x2,y2,z2,′str2′,…):用′str1′指定的方式,對x1,y1和z1進行繪圖;用′str2′指定的方式,對x2,y2和z2進行繪圖;如果省略′str′,則MATLAB自動選擇顏色與線型.9.3.3圖形繪制舉例

例1用MATLAB繪制正弦函數(shù)在[0,2π]中的圖形.

解在MATLAB命令行下輸入:

>>x=0:0.1:2*pi;%pi為MATLAB中默認的圓周率

>>y=sin(x);

>>plot(x,y,′*′);

其中x為自變量,這里使用冒號表達式設定其取值步長為0.1,取值范圍為[0,2π].用星號′*′輸出圖形,結果如圖9-2所示.

圖9-2

例2

用MATLAB在同一圖形窗口中繪制多項式q(x)=2x+3與p(x)=3x2+2x+3的曲線,其中x∈[-2,5],要求分別用不同的線型與顏色表示.

解在MATLAB命令行下輸入:

>>x=2:0.1:5;

>>q=2*x+3;

>>p=3*x.^2+2*x+3;

>>plot=(x,q,′r--′,x,p,′b-′)

結果如圖9-3所示.直線(紅色)表示多項式q(x)=2x+3,曲線(藍色)表示多項式p(x)=3x2+2x+3.

圖9-39.3.4簡單的圖形控制命令

(1)clc:清除命令窗口.

(2)grid:自動在各個坐標軸上加上虛線型的網格.

(3)holdon:保持當前的圖形,允許在當前圖形狀態(tài)下繪制其它圖形,即在同一圖形窗口中繪制多幅圖形.

(4)holdoff:釋放當前圖形窗口,繪制的下一幅圖形將作為當前圖形,即覆蓋原來圖形,這是MATLAB的缺省狀態(tài).

(5)hold:在holdon與holdoff之間進行切換.9.3.5簡單的子圖命令

(1)subplot(m,n,p):將圖形窗口分成m行n列的子窗口,序號為p的子窗口為當前窗口.子窗口的編號由上至下,由左至右.

(2)subplot:設置圖形窗口為缺省模式,即subplot(1,1,1)的單窗口模式.

例3

繪出三維空間中的一個隨機曲線.

解在MATLAB命令行下輸入:

>>x=cumsum(rand(1,1000)-0.5);

>>y=cumsum(rand(1,1000)-0.4);

>>z=cumsum(rand(1,1000)-0.3);

>>plot3(x,y,z)

>>grid;結果如圖9-4所示.其中函數(shù)cumsum(x)表示對向量x的各元素求累加和.Rand(m,n)表示生成m×n的隨機矩陣,且矩陣中的所有元素服從[0.1]之間的均勻分布.Grid表示為各個坐標軸加上虛線型的網格.

圖9-4

例4

在一個圖形窗口的左側子圖中繪制函數(shù)y1(x)=x3-2x-3,在右側子圖中繪制函數(shù)y2(x)=xsinx,其中x∈[-3,3].

解在MATLAB命令行下輸入:

>>x=-3:0.1:3;

>>y1=x.^3-2*x-3;

>>y2=x.*sin(x)>>subplot(1,2,1),plot(x,y1,′*′),grid

>>subplot(1,2,2),plot(x,y2,′-′),grid

結果如圖9-5所示.

圖9-5由此可見,MATLAB的圖形繪制功能非常強大,文中僅以幾個簡單的例子說明,讀者可以進一步對生成的圖形進行更低層的圖形對象操作,以便獲得更好的效果,這里不再贅述.

MATLAB軟件5.3以上版本提供的求常微分方程解析解的指令是dsolve,完整的調用格式是dsolve(′eqn1′,′

eqn2′,…).

其中,′eqn1′,′eqn2′,…是輸入宗量,包括三部分:微分方程、初始條件、規(guī)定變量,若不指定變量,則默認小寫字母t為獨立變量.微分方程的書寫格式規(guī)定:當y是因變量時,用“Dny”表示y的n階導數(shù).為了幫助讀者理解該命令的使用方法,下面我們給出幾個簡單的例子.9.4常見方程求解問題的MATLAB實現(xiàn)

例1

求微分方程y′=x+y的通解.

解輸入MATLAB命令:

dsolve(′Dy=x+y′,′x′)

執(zhí)行結果是

ans=-x-1+exp(x)*C1

例2

求微分方程y′=e2x-y滿足初值條件y|x=0=0的初值解.

解輸入MATLAB命令:

Dsolve(′Dy=exp(2*x-y)′,′y(0)=0′,′x′)

執(zhí)行結果是:

ans=log(1/2*exp(2*x)+1/2)

如果輸入命令dsolve(′Dy=exp(2*x-y)′,′y(0)=0′)

執(zhí)行結果是:

ans=2*x+log(t+exp(-2*x))

從這兩個命令的執(zhí)行結果可以清楚地看到,如果在命令中缺省了指定變量,則軟件就默認小寫字母t為獨立變量.

例3

求微分方程組初值問題

的解析解.

解輸入MATLAB命令:

jxj=dsolve(′Df=2*f+3*g′,′Dg=f-2*g′,′f(0)=1′,′g(0)=2′)

jxj.f,jxj.g

執(zhí)行的結果是:

ans=1/2*exp(7^(1/2)*t)-4/7*7^(1/2)*exp(-7^(1/2)*t)

+4/7*7^(1/2)*exp(7^(1/2)*t)+1/2*exp(-7^(1/2)*t)

ans=3/14*7^(1/2)*exp(-7^(1/2)*t)-3/14*7^(1/2)

*exp(7^(1/2)*t)+exp(7^(1/2)*t)+exp(-7^(1/2)*t)

例4

解微分方程的初值問題:

2y″+y′=8sin2x+e-x

y(0)=1,y′(0)=0

解輸入MATLAB命令:

y=dsolve(′2*D2y+Dy=8*sin(2*x)+exp(-x)′,′y(0)=1,Dy(0)=0′,′x′)

執(zhí)行的結果是:

Y=-1/17*exp(-x)*(8*exp(x)*cos(x)^2+32*sin(x)*cos(x)*exp(x)

-17+64*exp(x))+10-98/17*exp(-1/2*x)

1.隨機變量的數(shù)字特征

隨機變量的數(shù)字特征是指能夠描述隨機變量某些特征的數(shù)量指標.隨機變量常用的數(shù)字特征有均值(數(shù)學期望)、方差和矩等.本節(jié)介紹的MATLAB軟件命令以MATLAB6.0以上的版本為準.9.5概率統(tǒng)計基礎的MATLAB實現(xiàn)

1)β分布的均值與方差

MATLAB軟件提供的求β分布的均值與方差的命令為:

[m,v]=betastat(a,b)

該命令的意思是根據(jù)輸入的參數(shù)向量或者矩陣a和b,計算并返回β分布的均值m和方差v.

例1

執(zhí)行[m,v]=betastat(1:4,2:5)命令后得

m=0.3333

0.4000

0.4286

0.4444

v=0.0556

0.0400

0.0306

0.0247

2)χ2分布的均值與方差

MATLAB軟件提供的求χ2分布的均值與方差的命令為:

[m,v]=chi2stat(nu),

該命令的意思是根據(jù)輸入的自由度參數(shù)nu,計算并返回χ2分布的均值m和方差v.

3)γ分布的均值與方差

MATLAB軟件提供的求γ分布的均值與方差的命令為:

[m,v]=gamstat(a,b)

該命令的意思是根據(jù)輸入的參數(shù)向量或者矩陣a和b,計算并返回γ分布的均值m和方差v.

例2

執(zhí)行[m,v]=gamstat(1:4,2:5)命令后得

m=2 4 12 20

v=4 18 48 100

4)F分布的均值與方差

MATLAB軟件提供的求F分布均值與方差的命令為:

[m,v]=fstat(v1,v2)

該命令的意思是根據(jù)輸入的參數(shù)向量或者矩陣v1和v2,計算并返回F分布的均值m和方差v.

5)指數(shù)分布的均值與方差

MATLAB軟件提供的求指數(shù)分布的均值與方差的命令為:[m,v]=expstat(nu)

該命令的意思是根據(jù)輸入的參數(shù)nu,計算并返回指數(shù)分布的均值m和方差v.

例3

執(zhí)行[m,v]=expstat(2:2:10)命令后得

m=246810

v=4163664100

6)二項分布的均值與方差

MATLAB軟件提供的求二項分布的均值與方差的命令為:[m,v]=binostat(n,p)

該命令的意思是根據(jù)輸入的參數(shù)n和p,計算并返回二項指數(shù)分布的均值m和方差v.

例4

執(zhí)行[m,v]=binostat(2002,0.3)命令后得

m=600.6000

v=420.4200[m,v]=binostat(2002,0.3)執(zhí)行后得

m=1.00001.20001.40001.60001.80002.0000

v=0.80000.96001.12001.28001.44001.6000

7)幾何分布的均值與方差

MATLAB軟件提供的求幾何分布的均值與方差的命令為:[m,v]=geostat(p)

該命令的意思是根據(jù)輸入的參數(shù)p,計算并返回幾何分布的均值m和方差v.

8)超幾何分布的均值與方差

MATLAB軟件提供的求超幾何分布的均值與方差的命令為:

[mn,v]=hygestat(m,k,n)

該命令的意思是根據(jù)輸入的參數(shù)m,k,n,計算并返回超幾何分布的均值mn和方差v,輸入的參數(shù)m,k,n可以是維數(shù)相同的向量或者矩陣.

9)泊松分布的均值與方差

MATLAB軟件提供的求泊松分布的均值與方差的命令為: [m,v]=poisstat(lambda)

該命令的意思是根據(jù)輸入的參數(shù)lambda,計算并返回泊松分布的均值m和方差v.由于參數(shù)為lambda的泊松分布的均值和方差都是lambda,所以該命令與命令m=poisstat(lambda)是等效的.

例5

執(zhí)行[m,v]=poisstat(4:10)命令后得

m=45678910

v=45678910

10)正態(tài)分布的均值與方差

MATLAB軟件提供的求正態(tài)分布變量的均值與方差的命令為:

[m,v]=normstat(mu,sigma)

該命令的意思是根據(jù)輸入的參數(shù)mu和sigma,計算并返回正態(tài)分布的均值m和方差v.其中mu和sigma可以是維數(shù)相同的向量或者矩陣.

例6

設a=[1,3],b=[2,4],執(zhí)行[m,v]=normstat(a,b)后得

m=13

v=416

11)t分布的均值與方差

MATLAB軟件提供的求t分布均值與方差的命令為: [mn,v]=tstat(nu)

該命令的意思是根據(jù)輸入的自由度參數(shù)nu,計算并返回t分布的均值mn和方差v.

12)Weibull分布的均值與方差

MATLAB軟件提供的求Weibull分布的均值與方差的命令為:

[mn,v]=weibstat(a,b)

該命令的意思是根據(jù)輸入的參數(shù)向量或者矩陣a和b,計算并返回Weibull分布的均值mn和方差v.

13)均勻分布的均值與方差

MATLAB軟件提供的求均勻分布的均值與方差的命令為:

[m,v]=unidstat(n)

求連續(xù)均勻分布的均值與方差的命令為:

[m,v]=unifstat(a,b)

這兩個命令的意思是根據(jù)輸入的參數(shù)n、a和b,分別計算并返回離散、連續(xù)均勻分布的均值m和方差v.

2.概率分布的密度函數(shù)

1)β分布的密度函數(shù)

MATLAB軟件提供的求β分布的密度函數(shù)的命令為:

y=betapdf(x,a,b)

該命令是根據(jù)輸入的參數(shù)a和b,計算并返回x中每個值的β分布密度.

2)χ2分布的密度函數(shù)

MATLAB軟件提供的求χ2分布的密度函數(shù)的命令為:

y=chi2pdf(x,v)

該命令是根據(jù)輸入的自由度參數(shù)v,計算并返回x中每個值的χ2分布密度.

3)γ分布的密度函數(shù)

MATLAB軟件提供的求γ分布的密度函數(shù)的命令為:

y=gampdf(x,a,b)

該命令是根據(jù)輸入的自由度參數(shù)a和b,計算并返回x中每個值的γ分布密度.

4)F分布的密度函數(shù)

MATLAB軟件提供的求F分布的密度函數(shù)的命令為:

y=fpdf(x,x1,x2)

該命令是根據(jù)輸入的自由度參數(shù)x1和x2,計算并返回x中每個值的F分布的密度.

5)指數(shù)分布的密度函數(shù)

MATLAB軟件提供的求指數(shù)分布的密度函數(shù)的命令為:

y=exppdf(x,mu)

該命令是根據(jù)輸入的參數(shù)mu,計算并返回x中每個值的指數(shù)分布密度.

6)二項分布的密度函數(shù)

MATLAB軟件提供的求二項分布的密度函數(shù)的命令為:

y=binopdf(x,n,p)(x,mu)

該命令是根據(jù)輸入的參數(shù)n和p,計算并返回x中每個值的二項分布密度.

7)幾何分布的密度函數(shù)

MATLAB軟件提供的求幾何分布的密度函數(shù)的命令為:

y=geopdf(x,p)

該命令是根據(jù)輸入的參數(shù)p,計算并返回x中每個值的幾何分布密度.

8)超幾何分布的密度函數(shù)

MATLAB軟件提供的求超幾何分布的密度函數(shù)的命令為:

y=hygepdf(x,m,k,n)

該命令是根據(jù)輸入的參數(shù)m,k,n,計算并返回x中每個值的超幾何分布密度.

9)泊松分布的密度函數(shù)

MATLAB軟件提供的求泊松分布的密度函數(shù)的命令為:

y=poisspdf(x,lambda)

該命令是根據(jù)輸入的參數(shù)lambda,計算并返回x中每個值的泊松分布密度.

10)正態(tài)分布的密度函數(shù)

MATLAB軟件提供的求正態(tài)分布的密度函數(shù)的命令為:

y=normpdf(x,mu,sigma)

該命令是根據(jù)輸入的參數(shù)mu和sigma,計算并返回x中每個值的正態(tài)分布密度.

11)t分布的密度函數(shù)

MATLAB軟件提供的求t分布的密度函數(shù)的命令為:

y=tpdf(x,v)

該命令是根據(jù)輸入的參數(shù)v,計算并返回x中每個值的t分布密度.

12)Weibull分布的密度函數(shù)

MATLAB軟件提供的求Weibull分布的密度函數(shù)的命令為:

y=weibpdf(x,a,b)

該命令是根據(jù)輸入的參數(shù)a和b,計算并返回x中每個值的Weibull分布密度.

13)均勻分布的密度函數(shù)

MATLAB軟件提供的求離散均勻分布密度函數(shù)的命令為:

y=unidpdf(x,n)

求連續(xù)均勻分布密度函數(shù)的命令為:

y=unifpdf(x,a,b)

這兩個命令是分別根據(jù)輸入的參數(shù)n和a,b,計算并返回x中每個值的離散和連續(xù)的均勻分布密度.

注意:前面提到的命令中的參數(shù)根據(jù)各種分布的意義可以是向量或者矩陣,有雙參數(shù)時要求參數(shù)的形式要相同.

例7

按規(guī)定產品在出廠前都要做質量檢驗,假設該廠生產的產品合格率為98%,一個質量檢驗員每天能夠檢驗的產品數(shù)為300個,問:

(1)一天內檢驗員能發(fā)現(xiàn)次品的概率是多少?

(2)在被檢驗的300個產品中檢驗員未發(fā)現(xiàn)的次品數(shù)可能是多少?

解檢驗員檢驗產品的合格與否服從二項分布,計算一天內檢驗員能發(fā)現(xiàn)次品的概率可用下面的命令:

P=binopdf(1,300,0.02)

執(zhí)行結果是:

P=0.01428064694664

計算一天內檢驗員不能發(fā)現(xiàn)次品的概率可用下面的命令:

P=binopdf(0,300,0.02)

執(zhí)行結果是:

P=0.00233250566795

計算在被檢驗的300個產品中檢驗員未發(fā)現(xiàn)的可能次品數(shù)可用下面的命令:

Y=binopdf([0:300],300,0.02)

[X,i]=max(y)

執(zhí)行結果是:

X=0.16225295484066I=7

由此可得檢驗員未發(fā)現(xiàn)的可能次品數(shù)為6.

3.各種概率分布函數(shù)

將前面提到的求各種概率分布密度函數(shù)的命令稍作修改就可得到求相應概率分布的分布函數(shù)命令.這里對每一個分布不再作詳細介紹,只給出幾個例子作為示范,讀者可以類似地給出其它分布的分布函數(shù),也可以在MATLAB工作空間中用Help命令獲得.

例如,已知求Weibull分布密度函數(shù)的命令為:

y=weibpdf(x,a,b)

那么求Weibull分布函數(shù)的命令就為:

y=weibcdf(x,a,b)

意思是根據(jù)輸入的參數(shù)a和b,計算并返回x中每個值的Weibull分布函數(shù)值.

再例如,已知求正態(tài)分布密度函數(shù)的命令為:

y=normpdf(x,mu,sigma)

那么求正態(tài)分布函數(shù)的命令就為:

y=normcdf(x,mu,sigma)

意思是根據(jù)輸入的參數(shù)mu和sigma,計算并返回x中每個值的正態(tài)分布函數(shù)值.

從前面兩個例子可以看到:只要將求各種分布的分布密度函數(shù)的命令

***pdf變成***cdf

則該命令就變成了求相應分布的分布函數(shù)命令,輸入的參數(shù)保持不變.

例8

求服從標準正態(tài)分布的樣本屬于區(qū)間[-1,5]的概率.

解可用下面的正態(tài)分布函數(shù)命令完成:

P=normcdf([-1,5])

P(2)-p(1)

執(zhí)行結果是:

P=0.158655253931460.99999971334843

ans=0.8413444594167

即所求事件發(fā)生的概率為0.8413444594167.

由于前面講到的命令的用法很相似,所以這里不再多舉例說明,讀者可自己上機實驗.

4.常用的數(shù)字特征函數(shù)

MATLAB軟件提供了許多常用的數(shù)字特征函數(shù),這里簡單介紹下面幾種數(shù)字特征函數(shù).

1)樣本方差函數(shù)

MATLAB軟件提供的求樣本方差的函數(shù)命令為:

fc=var(x)

fc=var(x,1)

fc=var(x,w)命令fc=var(x)表示計算x中數(shù)據(jù)的方差并返回到fc.如果x是一個向量,則計算的結果fc是x中元素的方差;如果x為一個矩陣,則計算的結果fc是一個向量,它的分量對應x相應列數(shù)據(jù)的方差.若設樣本數(shù)據(jù)長度為n,且對命令fc=var(x)運用n-1進行標準化處理,對于正態(tài)分布數(shù)據(jù),則計算結果是方差σ2的最小無偏估計.

命令fc=var(x,1)與fc=var(x)的區(qū)別在于前者為用樣本數(shù)據(jù)長度n進行標準化處理,生成關于樣本均值的二階矩.

命令fc=var(x,w)表示用正的權向量w計算樣本數(shù)據(jù)x的方差,要求w的維數(shù)要與樣本數(shù)據(jù)的長度(維數(shù))相匹配.

2)相關系數(shù)函數(shù)

MATLAB軟件提供的求相關系數(shù)的函數(shù)命令為:

R=corrcoef(x)

該命令是將輸入矩陣x的行元素看成觀測值,列元素看成變量,計算并返回一個相關系數(shù)矩陣r.矩陣r的元素與對應的協(xié)方差矩陣的元素之間的關系是:

3)協(xié)方差函數(shù)

MATLAB軟件提供的求協(xié)方差的函數(shù)命令為:

c=cov(x)

c=cov(x,y)

命令cov(x)計算樣本數(shù)據(jù)x的協(xié)方差.若x是一個向量,則返回一個方差;若x是一個矩陣,則以行為觀測值,列為變量,返回一個協(xié)方差矩陣.當x,y是維數(shù)相同的向量時,命令cov(x,y)等同于命令cov([xy]).

4)中心矩函數(shù)

MATLAB軟件提供的求任意階中心矩的函數(shù)命令為:

moment(data,order)

該命令表示計算樣本數(shù)據(jù)data的order階中心矩.當樣本數(shù)據(jù)data是一個向量時,返回該樣本數(shù)據(jù)的order階中心矩;當樣本數(shù)據(jù)data為一個矩陣時,則以各列為樣本數(shù)據(jù)返回一個中心矩行向量.下面一些隨機變量的數(shù)字特征函數(shù)的功能解釋與前面的基本相似,這里只給出命令,而不對命令做具體解釋.

m=geomean(x)%計算樣本x的幾何均值

m=harmmean(x)%計算樣本x的調和均值

m=mean(x)%計算樣本x的平均值

m=mad(x)%計算樣本數(shù)據(jù)x的平均絕對偏差

m=std(x)%計算樣本數(shù)據(jù)x的標準差

5.參數(shù)估計

參數(shù)估計是數(shù)理統(tǒng)計中的一個基本概念,是指用樣本對總體分布中的未知參數(shù)作出的估計,這種估計我們常見的有點估計和區(qū)間估計兩種.所謂點估計,就是在實驗中由抽樣得到的樣本值對未知參數(shù)給一個估計值.求點估計量的方法有很多,本次實驗主要介紹矩估計法和極大似然估計法.所謂區(qū)間估計,是指用抽樣得到的樣本值對總體中的未知參數(shù)估計出一個取值范圍,并得到未知參數(shù)在其內部的概率,估計參數(shù)的范圍通常是一個區(qū)間,稱為置信區(qū)間.下面是MATLAB軟件提供的一些常用的參數(shù)估計函數(shù)命令.

1)β分布數(shù)據(jù)的參數(shù)估計函數(shù)betafit()

betafit(x)

[phat,pci]=betafit(x,alpha)

命令betafit(x)表示返回以向量x為樣本數(shù)據(jù)的β分布的參數(shù)a和b的極大似然估計值;命令[phat,pci]=betafit(x,alpha)表示以向量x為樣本數(shù)據(jù),100(1-alpha)%為置信度,用2×2階矩陣的形式給出其β分布的參數(shù)a和b的置信區(qū)間,其中矩陣的第一列是參數(shù)a的下限和上限,第二列是參數(shù)b的下限和上限,參數(shù)alpha是可選項,缺省值為0.05.

2)二項分布數(shù)據(jù)的參數(shù)估計函數(shù)binofit()

binofit(x,n)

[phat,pci]=binofit(x,n)

[phat,pci]=binofit(x,n,alpha)

命令binofit(x,n)表示根據(jù)總實驗的次數(shù)n以及實驗成功的次數(shù)x,計算任意給定一次二項實驗成功的概率的極大似然估計值;命令[phat,pci]=binofit(x,n)表示除計算任意給定一次二項實驗成功的概率的極大似然估計值phat外,還給出置信度為0.95(缺省值)的置信區(qū)間pci;命令[phat,pci]=binofit(x,n,alpha)與[phat,pci]=binofit(x,n)的意思基本是相同的,區(qū)別僅在于該命令返回的置信區(qū)間是指定的置信度為100(1-alpha)%的置信區(qū)間.

3)指數(shù)分布數(shù)據(jù)的參數(shù)估計函數(shù)expfit()

expfit(x)

[muhat,muci]=expfit(x)

[muhat,muci]==expfit(x,alpha)

命令expfit(x)表示以向量x為樣本數(shù)據(jù)返回指數(shù)分布的μ參數(shù)的估計值;命令[muhat,muci]=expfit(x)表示在返回參數(shù)μ的估計值的同時還要返回參數(shù)置信度為0.95的置信區(qū)間;命令[muhat,muci]=expfit(x,alpha)表示在返回參數(shù)的μ估計值的同時返回參數(shù)置信度為100(1-alpha)%的置信區(qū)間.

4)γ分布數(shù)據(jù)的參數(shù)估計函數(shù)gamfit()

gamfit(x)

[phat,pci]=gamfit(x)

命令gamfit(x)表示以向量x為樣本數(shù)據(jù)返回γ分布的參數(shù)a和b的極大似然估計值;命令[phat,pci]=gamfit(x)除返回以向量x為樣本數(shù)據(jù)的γ分布的參數(shù)a和b的極大似然估計值之外,還用2×2階矩陣pci給出置信度為0.95的參數(shù)a和b的置信區(qū)間的上下限,其中矩陣的第一列是參數(shù)a的下限和上限,第二列是參數(shù)置信度為100(1-alpha)%,其它與前一個命令是一樣的.

5)正態(tài)分布數(shù)據(jù)的參數(shù)估計函數(shù)normfit()

[muhat,sigmahat,muci,sigmaci]=normfit(x)

[muhat,sigmahat,muci,sigmaci]=normfit(x,alpha)

命令[muhat,sigmahat,muci,sigmaci]=normfit(x

溫馨提示

  • 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

提交評論