Matlab教學教材教案課件教材資料_第1頁
Matlab教學教材教案課件教材資料_第2頁
Matlab教學教材教案課件教材資料_第3頁
Matlab教學教材教案課件教材資料_第4頁
Matlab教學教材教案課件教材資料_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Matlab簡易教程

前言

Matlab是matrixlaboratory的縮寫,是矩陣實驗室的意思,它是一個功

能強大的數(shù)學工具軟件。Matlab的產(chǎn)生是與數(shù)學計算緊密聯(lián)系在一起的,1980

年美國新墨西哥大學計算機科學系主任cleveMoler在給學生講授線性代數(shù)課程

時,發(fā)現(xiàn)學生利用高級語言編程解決線性代數(shù)問題花費很多時間,為了減輕學生

編程的負擔,用高級語言編寫了最早的MATLAB。

Matlab語言是一種用于工程計算的高性能語言,它主要包括兩大內(nèi)容:核

心函數(shù)和工具箱。Matlab的典型應用包括以下幾個方面:數(shù)學計算、算法開發(fā)、

建模及仿真、數(shù)據(jù)分析及可視化、科學及工程繪圖、應用開發(fā)。

第1.章matlab的工作環(huán)境

1.啟動和退出matlab

啟動matlab程序與啟動其它windows程序一樣,通常通過單擊桌面上的相

應圖標來執(zhí)行。當然,也可以通過“開始”菜單中相應命令啟動。

退出matlab時,也可以像退出其它windows程序一樣操作,也可以在命令

窗口中鍵入quit或exit來退出。

2.菜單和工具欄

Matlab的菜單和工具界面與windows程序的界面類似,用戶只要稍加實踐

就可以掌握其功能和使用方法。菜單的內(nèi)容會隨著在命令窗口執(zhí)行不同命令而作

出相應改變。

3.命令窗口

命令窗口是matlab的主要交互窗口,用于輸入命令并顯示除圖形以外的所

有執(zhí)行結(jié)果。Matlab命令窗口中的“>>”為運算提示符,表示matlab處于準備

狀態(tài)。當在提示符后輸入一段程序或一段運算式后按“回車”鍵,matlab會給

出計算結(jié)果,并再次進入準備狀態(tài)。單擊命令窗口右上角的箭頭按鈕可以使命令

窗口脫離主窗口而成為一個獨立的窗口。

常用控制命令及其功能:

clc:清除命令窗口中的內(nèi)容

clear:清除工作空間中的變量

elf:清除圖形窗

type:顯示指定的M文件的內(nèi)容

exit/quit:結(jié)束matlab會話,程序完成,如果沒有明確保存,則變量中

的數(shù)據(jù)丟失

help:獲取在線幫助

4.歷史命令窗口

該窗口主要用于記錄所有執(zhí)行過的命令,在默認設置下,該窗口會保留自

安裝后所有使用過命令的歷史記錄,并標明使用時間。同時,用戶可以通過用鼠

標雙擊某一歷史命令來重新執(zhí)行該命令。與命令窗口類似,該窗口也可以成為一

個獨立的窗口。

選中該窗口,然后單擊鼠標右鍵,彈出一個菜單,用戶可以通過此菜單刪

除或粘貼歷史記錄,也可以為選中的表達式或命令創(chuàng)建一個M文件。

5.當前工作目錄窗口

當前工作目錄是指matlab運行文件時的目錄。只有在當前工作目錄或搜索

路徑下的文件、函數(shù)可以被運行或調(diào)用。在窗口中可顯示或改變當前工作目錄,

還可以顯示當前工作目錄下的文件。

6.工作空間窗口

在工作空間窗口中將顯示目前內(nèi)存中所有的matlab變量的變量名、數(shù)據(jù)結(jié)

構(gòu)、字節(jié)數(shù)以及類型等信息。

第2章基本運算與函數(shù)

在MATLAB下進行基本數(shù)學運算,只需將運算式直接打入提示號(?)之后,

并按入Enter鍵即可。例如:

?(5*2+1.3-0.8)*10/25

ans=4.2000

又如:

求10的階乘

>>factorial(10)

求可用

>>nchoosek(30,15)

MATLAB會將運算結(jié)果直接存入一變量ans,代表MATLAB運算后的答案

(Answer)并顯示其數(shù)值于屏幕上。

我們也可將上述運算式的結(jié)果設定給另一個變量x:

x=(5*2+1.3-0.8)*10*2/25

x=42

此時MATLAB會直接顯示x的值。

由上例可知,MATLAB認識所有一般常用到的加(+)、減(-)、乘(*)、除

(/)的數(shù)學運算符號,以及累次運算

若不想讓MATLAB每次都顯示運算結(jié)果,只需在運算式最后加上分號(;)

即可,如下例:

y=sin(10)*exp(-0.3*4-2);

若要顯示變量y的值,直接鍵入y即可:

?y

y=-0.0045

在上例中,sin是正弦函數(shù),exp是指數(shù)函數(shù),這些都是MATLAB常用到的

數(shù)學函數(shù),函數(shù)里的參數(shù)必須用圓括號括起來。

1.三角函數(shù)

MATLAB常用的三角函數(shù)

名含名含名含

稱義稱義稱義

S正a反S正

in弦sin正弦ec割

C余a反C余

OS弦cos余弦sc割

t正a反a反

an切tan正切sec正割

c余a反a反

ot切cot余切CSC余割

pi:常數(shù)萬

2.指數(shù)和對數(shù)函數(shù)

名稱含義名稱含義名稱含義

expE為底的指數(shù)loglO10為底的對數(shù)pow22為底的指數(shù)

log自然對數(shù)log22為底的對數(shù)sqrt平方根

3.復數(shù)函數(shù)

名含義名稱含義名稱含義

ab模conj復數(shù)共挽real復數(shù)實部

S

an相角imag復數(shù)虛部complex用實部和虛部構(gòu)造一個復數(shù)

gle

第3章數(shù)組、矩陣及其運算

數(shù)組或矩陣是matlab最基礎的內(nèi)容之一,幾乎所有的數(shù)據(jù)都是用數(shù)組的形

式存儲的,這就是matlab又被稱為矩陣實驗室的原因。

3.1向量的創(chuàng)建

3.1.1一維數(shù)組(向量)的創(chuàng)建

一維數(shù)組(向量)創(chuàng)建有直接輸入法、步長生成法、定數(shù)線性采樣法和定

數(shù)對數(shù)采樣法等。

1.直接輸入法

(1)使用分號,創(chuàng)建一維列向量

?xl=[pi;logl0(100);7*2;2*3]

xl=

3.1416

2.0000

14.0000

8.0000

(2)使用空格或逗號,創(chuàng)建一維行數(shù)組

?x2=[piloglO(lOO)7*22-3]

x2=

3.14162.000014.00008.0000

2.步長生成法

采用通用格式a:step:b。其中a表示數(shù)組的第一個元素;step表示數(shù)組的

間隔,即步長;b表示數(shù)組的最后一個元素。如果省略step,默認值為1。

?x3=l:2:10

x3=

13579

3.定數(shù)線性采樣法

在設定了總個數(shù)的條件下,均勻采樣分布生成一維行向量。

采用通用格式:x=linspace(a,b,n)

其中a,b分別是數(shù)組的第一個和最后一個元素,n表示采樣點數(shù)。

例如:

>>x=linspace(1,10,5)

1.00003.25005.50007.750010.0000

4.定數(shù)對數(shù)采樣法

在設定了總個數(shù)的條件下,通過“常用對數(shù)”采樣分布生成一維行向量。

采用通用格式:x=logspace(a,b,n)

其中a,b分別是數(shù)組的第一個和最后一個元素,n表示采樣點數(shù)。

3.1.2一維向量元素尋訪和賦值

1.子向量的尋訪

>>x=linspace(1,10,5)%定義向量

x=

1.00003.25005.50007.750010.0000

?x(2)%查看向量第二個元素

ans=

3.2500

?x([l35])%查看向量第一、三、五個元素組成的子向量

ans

1.00005.500010.0000

?x(3:5)%查看向量第三到第五個元素組成的子向量

ans=

5.50007.750010.0000

?x(find(x>6))%查看大于6的元素組成的子向量

ans=

7.750010.0000

2.子向量的賦值

?x(2)=5

1.00005.00005.50007.750010.0000

?x(4)=[]%刪除第四個元素

MATLAB亦可取出向量的一個元素或一部份來做運算:

y=x(2)*3+x(4)/取出x的第二個元素3倍后和x的第四個元素來相加,

最后賦給變量y。

3.2矩陣的創(chuàng)建

3.2.1矩陣的創(chuàng)建

1.采用直接輸入法創(chuàng)建矩陣

采用矩陣構(gòu)造符“口”。將各元素依次輸入構(gòu)造符口內(nèi),并且以空格或者逗

號分隔,行與行之間用分號分隔。

例:構(gòu)造一個2*3矩陣,第一行各元素依次為1,2,3,第一行各元素依次

為4,5,6o

?A=[l23;456]

A=

123

456

2.利用內(nèi)部函數(shù)創(chuàng)建矩陣

1)零矩陣

命令:zeros(i,j)可以創(chuàng)建i行j列的全零矩陣。

2)全1矩陣

命令:ones(i,j)可以創(chuàng)建i行j列的全1矩陣

3)對角線為1的矩陣

命令:eye(i,j)可以創(chuàng)建i行j列的對角線為1的矩陣。當然,如果想創(chuàng)

建單位矩陣,只需要用命令eye(i)即可。

4)randn(n)n階隨機矩陣,元素服從正態(tài)分布

5)rand(n)產(chǎn)生0T均勻分布的隨機數(shù)矩陣

6)magic(n)n階魔方矩陣

3.2.2矩陣的尋訪和賦值

用冒號訪問矩陣時:A(i,j)表示A中的第i行第j列所在位置的元素;A

(:,j)表示A的第j歹U;A(i,:)表示A的第i行;A(i:j)表示A中的第

i個元素到第j個元素;A(:,i:j)表示第i列到第j歹!J;A(i:j,:)表示第

i行到第j行;A([IJ],:)表示第i、j兩行。

?A=[1234;5678;9101112]

A=

1234

5678

9101112

?A(2,3)=5%改變位于第二行,第三列的元素值

A=

1234

5658

9101112

?B=A(2,1:3)%取出部份矩陣B

B=

565

?A=[AB']%將B轉(zhuǎn)置后以列向量并入A

A=

12345

56586

91011125

?A(:,2)=[]%刪除第二列(:代表所有行)

A=

1345

5586

911125

?A[A:4321]%加入第四行

A=

1345

5586

911125

4321

?A([l4],:)=:]%刪除第一和第四行(:代表所有列)

A

5586

911125

3.3向量與矩陣的運算

3.3.1向量與矩陣的代數(shù)運算

運算符用法功能描述

+A+BA和B對應元素的相加,要求A和B有相同的長度。常數(shù)也可

以和矩陣相加.

-A-BA和B對應元素的相減,要求A和B有相同的長度。常數(shù)也可

以和矩陣相減。

*A*B矩陣乘法,要求A的列數(shù)要與B的行數(shù)相同,常數(shù)也可以和矩

陣相乘。

/A/B(右除)相當于B*in除A),方程X*A=B的解。

\A\B(左除)相當于in左A)*B,方程A*X=B的解。

A,相當于A*A*A…A(n個A相乘)

,A'矩陣的轉(zhuǎn)置

,*A.*BA和B對應元素的相乘,要求A和B有相同的長度

./A./B(右除)矩陣A除以矩陣B的對應元素,要求A和B有相同的

長度,常數(shù)也可以和矩陣相除

.\A.\B(左除)矩陣B除以矩陣A的對應元素,要求A和B有相同的

長度,常數(shù)也可以和矩陣相除。

人A."n矩陣A每個元素都作n次方運算

例如:

?A=[l23;456;789],B=[987;654;3211

A=

123

456

789

B=

987

654

321

?A-5

ans=

-4-3-2

-101

234

?3-A

ans=

210

-1-2-3

~4~5-6

?72./A

ans

72.000036.000024.0000

18.000014.400012.0000

10.28579.00008.0000

例2:求解以下方程組

xt+x2-10

<

xt—x2-4

?A=[l1;1-1];

?B=[104];

?X=A\B

3.3.2向量與矩陣的關系運算

運算符功能描述

<小于

<=小于等于

>大于

>=大于等于

==等于

不等于

例如:

>>magic(3)>4*ones(3)

ans=

101

011

010

3.3.3矩陣的運算

1.矩陣的轉(zhuǎn)置與逆

矩陣的轉(zhuǎn)置運算符:

求解矩陣的逆矩陣的命令格式為:y=inv(x)

要求矩陣x有逆矩陣

?A=[l1;21]

A=

11

21

>B=inv(A)

B=

-11

2-1

?A*B

ans=

10

01

2.方陣的行列式

命令格式:d=det(x)

?A=[l1;21]

A=

11

21

?det(A)

ans=

-1

3.矩陣的秩

命令格式:k=rank(A)

4.矩陣的跡

矩陣對角線元素之和稱為跡,求矩陣的跡的命令格式為:

B=trace(A)

5.矩陣的特征值和特征向量

命令格式:[V,D]=eig(A)

例:求矩陣A=

-211

020

-413

的特征值和特征向量

解:>〉A=[-211;020;-413]

A=

-211

020

-413

?[V,D]=eig(A)

V=

-0.7071-0.24250.3015

000.9045

-0.7071-0.97010.3015

(注意這里對應的特征向量是列向量)

D=

-100

020

002

6.向量的常用函數(shù)

min(x):向量x的元素的最小值

max(x):向量x的元素的最大值

mean(x):向量x的元素的平均值

median(x):向量x的元素的中位數(shù)

std(x):向量x的元素的標準差

diff(x):向量x的相鄰元素的差

sort(x):對向量x的元素進行排序

length(x):向量x的元素個數(shù)

sum(x):向量x的元素總和

prod(x):向量x的元素總乘積

dot(x,y):向量x和y的內(nèi)積

第4章Matlab程序設計基礎

Matlab作為一種廣泛應用于科學計算的工具軟件,不僅提供豐富的函數(shù)庫,

還可以像其它高級語言程序設計一樣進行程序設計,編寫擴展名為.m的M文件,

實現(xiàn)各種程序設計功能。由于matlab是由C語言開發(fā)現(xiàn)來的,因些M文件的語

法規(guī)則與C語言幾乎一致,簡單易學。

4.1M文件基礎

M文件可再細分為腳本(Scripts)及函數(shù)(Functions)兩類,二者相同之

處是它們都是以.m作為擴展名的文本文件,但二者的語法和使用上略有不同。

腳本其效用和將命令逐一輸入完全一樣,而函數(shù)在使用有嚴格要求。

4.1.1M文件的創(chuàng)建

當需要創(chuàng)建一個M文件時,可以通過file|new菜單進入文本編輯

器界面,并打開一空白文檔,進而可以編輯和編譯運行它的內(nèi)容。

4.1.2自定義函數(shù)

自定義函數(shù)M文件的第一行有特殊的要求,其必須遵循如下的形式:

function〈因變量>=〈函數(shù)名〉(〈自變量》)

其他的各行為程序運行語句,沒有特殊要求。但這個M文件的文件名必須

是〈函數(shù)名〉.m

例1、編寫一個函數(shù)文件,計算n!

可以編寫階乘計算函數(shù)njc(n):

functiony=njc(x)

y=l;k=l;

whilek<=x

y=y*k;

k=k+l;

end

自定義函數(shù)定義好后就可以調(diào)用,調(diào)用格式為:函數(shù)名(參數(shù)表)。

例2、利用例1編寫的函數(shù)計算4!,10!,在命令窗口執(zhí)行該函數(shù),馬上得

到結(jié)果:

>>njc(4)

ans=

24

4.2matlab程序控制結(jié)構(gòu)

matlab語言的程序結(jié)構(gòu)與其它高級語言是一致的,分為順序結(jié)構(gòu),循環(huán)結(jié)

構(gòu),分支結(jié)構(gòu)。

(1)順序結(jié)構(gòu)一一依次順序執(zhí)行程序的各條語句

(2)循環(huán)結(jié)構(gòu)一一被重復執(zhí)行的一組語句,循環(huán)是計算機解決問題的主要

手段。

(3)分支結(jié)構(gòu)一一根據(jù)一定條件來選擇執(zhí)行各條語句。

4.2.1循環(huán)語句

1.for-end循環(huán)

語法為:

fori=表達式(表達式為一個向量)

可執(zhí)行語句

end

例:利用for循環(huán)求1+2+3+4+5的值

sum=0;

fori=l:5

sum=sum+i;

end

2.while-end循環(huán)

while循環(huán)將循環(huán)體中的語句循環(huán)執(zhí)行不定次數(shù)。

語法為:

while表達式

循環(huán)體語句

end

表達式一般是由邏輯運算和關系運算以及一般運算組成的,以判斷循環(huán)

的進行和停止;只要表達式的值非3繼續(xù)循環(huán);直到表達式值為3循環(huán)停止。

例:用while循環(huán)求1到100間整數(shù)的和

sum=0;

i=l;

whilei<=100

sum=sum+i;

i=i+1;

end

sum

4.2.2分支結(jié)構(gòu)

1.if-else-end結(jié)構(gòu)

有三種格式

A)if表達式

執(zhí)行語句

end

B)if表達式

語句1

else

語句2

end

C)if表達式1

語句1

elseif表達式2

語句2

elseif表達式3

語句3

else

語句n

end

例如,從鍵盤中輸入一個正數(shù),然后判斷是奇數(shù)(oddnumber)還是偶數(shù)

(evennumber)o

s=input('pleaseinputpositiveinteger:J)

ifmod(s,2)==0

'Thisisaevennumber!'

else

'Thisisaoddnumber!?

end

2.switch分支結(jié)構(gòu)

switch語句可以替代多分支的if語句,且switch語句簡潔明了,可讀性

更好,其格式為:

switch計算表達式

case數(shù)值1

語句1

case數(shù)值2

語句2

otherwise

語句n

End

例:用switch結(jié)構(gòu)將百分制的學生成績轉(zhuǎn)換為五種等級的成績輸出

clear

result二input('請輸入學生的成績:');

switchfix(result/10)

case9

y=優(yōu)秀’;

case8

y='良好’;

case7

產(chǎn)‘中等’;

case6

y=,及格’;

otherwise

尸‘不及格’;

end

y

練習:輸入io個學生成績,并找出成績最好的前三位,并輸出其分數(shù)。

fori=l:10請輸入第

grade(i)=input(sprintf('EaEe3E^"(no.%ld)Ii))

end

[value,idx]=sort(grade)

fore3=grade(idx(8:10))

第5章matlab求解數(shù)學問題

5.1符號表達式的生成

在數(shù)學分析中,常常需要做極限、微分、求導數(shù)等運算,MATLAB稱這些運

算為符號運算。MATLAB的符號運算功能是通過調(diào)用符號運算工具箱(Symbolic

MathToolbox)內(nèi)的上具實現(xiàn),其內(nèi)核是借用Maple數(shù)學軟件。MATLAB的符號運

算上具箱包含了微積分運算、化簡和代換、解方程等幾個方面的工具。

MATLAB符號運算上具箱處理的對象主要是符號變量與符號表達式。要實現(xiàn)

其符號運算,首先需要將處理對象定義為符號變量或符號表達式,其定義格式如

下:

格式1:sym('變量名')或5丫111('表達式')

功能:定義一個符號變量或符號表達式。

例如:

>>sym('X')外定義變量x為符號變量

>〉sym('x+1')%定義表達式x+1為符號表達式

格式2:syms變量名1變量名2……變量名n

功能:定義變量名1、變量2……、變量名n為符號變量。

注意是變量名之間要用空格或分號隔開

5.2符號方程的求解

1.方程的解

命令格式

X=solve('eqn')%直接求出方程eqn的根

X=solve('eqn','x')%直接求關于指定變量的方程eqn的根

例如:求方程/+5為+6=0的根

?symsx

?X=solve(,x-2+5*x+6=0,)

以如:求方程為2一奴+2=0的解

如果x是未知數(shù),則

?symsax

>>X=solveCx-2-a*x+2=0,,"x")

如果a是未知數(shù),則

?symsax

?X=solve('x~2-a*x+2=0','a')

2.方程組的解

命令格式

直接求出方程組的根:

[x,y,z,???]=solve('eqnl',‘eqn2',???,'eqnn')

直接求出關于指定變量的方程組的根:

[x,y,z,,,?]=solve(,eqnl,,<eqn2,,,eqnn,x,y,z???,)

例如:

x+2X=1

求方程組卜1+2%2+3?3=1的解

2x,-x2=2

?symsxlx2x3

?[xl,x2,x3]=solve('x2+2*x3=l','xl+x2+4*x3=l','2*xl-x2=2,)

又如求解方程組:+「8=°的解

J=4

>>symsxy

?[x,y]=solve('x-2+y八2-8=0','x34')

5.3極限

格式:limit(f,t,a,'left'or'right')

功能:求符號變量t趨近a時,求左極限,函數(shù)f的(左或右)極限「right'

表示求右極限,'left'表示左極限,省略時表示求一般極限;a省略時變量t趨

近0o

例子:lim(l+4產(chǎn)

>>s=sym('(l+2*t/x)-(3*x)')

s=

(l+2*t/x)"(3*x)

>>symsxt

>>limit(s,x,inf)

ans=

exp(6*t)

5.4導數(shù)和微分

5.4.1導數(shù)

diff函數(shù)用以演算一函數(shù)的微分,相關的函數(shù)語法有下列4個:

diff(f)傳回f對預設獨立變量的一次微分值

傳回f對獨立變量t的一次微分值

diff(f,n)傳回f對預設獨立變量的n次微分值

diff(f/t\n)傳回f對獨立變量t的n次微分值

diff(diff(f,x,m),y,n)高階混合偏導數(shù)

先定義下列三個方程式,接著再演算其微分項:

?sl=sym('6*x*3-4*x*2+b*x-5');

?diff(sl)

ans=18*x-2-8*x+b

?diff(sl,2)

ans=36*x-8

?diff(Sl/b,)

ans=x

5.4.2積分

int函數(shù)用以演算一函數(shù)的積分,這個函數(shù)要找出一符號式F使得

diff(F)=fo如果積分式的解析式不存在的話或是MATLAB無法找到,則int傳

回原輸入的符號式。相關的函數(shù)語法有下列4個:

int(f)傳回f對預設獨立變量的積分值

int(f,'t')傳回f對獨立變量t的積分值

int(f,a,b)傳回f對預設獨立變量的積分值,積分區(qū)間為[a,b]

int(f,'t',a,b)傳回f對獨立變量t的積分值,積分區(qū)間為[a,b]

傳回f對預設變量的積分值,積分區(qū)間為[m,n],m和n

為符號式

我們示范幾個例子:

?S1=symC6*x'3-4*x"2+b*x-5,);

?S2=sym('sin(a)');

?S3=sym('sqrt(x)');

?int(Sl)

ans=3/2*x-4-4/3*x-3+l/2*b*x-2-5*x

?int(S2)

ans=-cos(a)

?int(S3)

ans=2/3*x-(3/2)

>>int(S3,'a','b')

ans=2/3*b"(3/2)-2/3*a'(3/2)

?int(S3,0.5,0.6)

ans=2/25*1571/2)-1/6*2*(1/2)

>>numeric(int(S3,0.5,0.6))%使用numeric函數(shù)可以計算積分的數(shù)值

ans=0.0741

練習:計算

1、f4^+2dx(22/3)

J。J2x+1

2、(£y^/l+x2-y2dy)dx

?s=symCy*sqrt((l+x*2-y"2)),)

s=

y*sqrt((l+x-2-y-2))

>>symsxy

?int(int(s,y,x,1),x,-1,1)

ans=

1/2

5.5函數(shù)的零點

利用命令ezplot函數(shù)畫出函數(shù)的圖像并畫出網(wǎng)格圖,觀察函數(shù)大概在哪有

根。由圖中觀察y=f(x)在何處附近與x軸相交,再用函數(shù)fzero()求解。

命令格式:fzeroCfunction',x0)

即可求出在x0附近的根,其中function是先前已定義的函數(shù)名稱。如果

從函數(shù)分布圖看出根不只一個,則須再代入另一個在根附近的x0,再求出下一

個根。

例:求函數(shù)/(x)=x2cosx-x+2在區(qū)間[-5,5]中的零點

>>f=sym(,x2*cos(x)-x+2,)

f=

x2*cos(x)-x+2

>>ezplot(f,[-55]),grid

>>fzero(,x2*cos(x)-x+2,,2)

ans=

1.6830

5.6一元函數(shù)的極值

格式:x=fminbnd(fun,xl,x2)

[x,y]=fminbnd(fun,xl,x2)

其中:fun是函數(shù)字符串或函數(shù)文件創(chuàng)建的函數(shù);xl,x2是區(qū)間端點;x,y

是所求的極小值點坐標和函數(shù)值。

例如:求函數(shù)>=2丁-9/+12工-3在區(qū)間[1.52.5]的極值

?y='2*x-3-9*x-2+12*x-3'

y=

2*x3-9*x2+12*x-3

?ezplot(y,[04]),grid

?[xmin,ymin]=fminbnd(y,1.5,2.5)

xmin=

2.0000

ymin=

1.0000

5.7級數(shù)

1.級數(shù)的求和

格式:symsum(s,t,a,b)

功能:求級數(shù)s(級數(shù)的通式)中的符號變量t從第a項到第b項的級數(shù)和。

例如:求級數(shù)1/1+1/2+1/3+…+l/n的前三項的和,命令及結(jié)果為

symn

symsum(l/n,n,1,3)

ans=l1/6

2.泰勒展開

命令格式:taylor(fun,n,變量,a)

其中:fun為待展函數(shù),n為展開階數(shù),缺省是6階;變量聲明fun中的

變量,省略變量則對默認變量展開;a為變量求導的取值點,缺省為0,即麥克

勞林展開。

例:將“用=」展開成基級數(shù)

1+x

?symsx;f=l/(l+x-2)

f=

l/(l+x*2)

?taylor(f,20)

ans=

1-x*2+x*4-x*6+x*8-x*10+x*12-x*14+x*16-x"18

?taylor(f,20,x,1)

ans=

l-l/2*x+l/4*(x-l)"2-1/8*(x-1)~4+1/8*(x-1)~5-1/16*(x-1)~6+1/32*(x

-l)*8-l/32*(x-l),9+l/64*(x-l)*10-l/128*(x-l)"12+l/128*(x-l)*13-1/256*

(x-1)*14+1/512*(x-1)*16-1/512*(xT)17+1/1024*(xT)18

5.8微分方程問題的計算

5.8.1微分方程的求解

MATLAB解常微分方程式的語法是

y=dsolve('equ'condition','x'),

其中equation代表常微分方程式即y'=g(x,y),且須以Dy代表一階微分項

y',D2y代表二階微分項y''...,最后一個參數(shù)有指定變量的作用,condition

則為初始條件。

y'=2xcos2(y),y(0)=0.25

?symsxy

?y=dsolve('Dy=2*x*cos(y)~2','y(0)=pi/4','x')

5.8.2微分方程組的解

兩條方程方程組的語法是

[x,y]=dsolve("equl','equ2','t'),

例如:

求解微分方程組*+,x(o)=_i,.0)=1的解

?symsxyt

?[x,y]=dsolveCDx=x+y+exp(-t))JDy=y','x(O)=T','y(O)=l','t')

5.9多項式運算

1.多項式的生成

在Matlab里,多項式由一個行向量表示,它的系數(shù)按降序排列的。多項式用

以下的方法定義

P(x)=aox"++…++an表示成P=[aQ%.....]

比如:p=3*x-3+2*x-2-4*x+5

除系數(shù)法外,還可以用命令poly()函數(shù)來創(chuàng)建多項式

格式:poly([a0a[.....a“])

功能:生成以向量中元素為根的多項式的系數(shù)向量

即生成的多項式的系數(shù)向量為4)…?(x-冊的展開式對應項的系數(shù)。

2.多項式求根

Matlab使用roots函數(shù)解決這個問題。

3.多項式示值

polyval(p,a)

當a為常數(shù)時,求多項式p在a的值,當a為向量時,求x分別等于a(i)時

多項式的值。

第6章matlab圖視化功能

6.1二維圖形

plot是繪制一維曲線的基本函數(shù),但在使用此函數(shù)之前,我們需先定義曲線

上每一點的X及y坐標。

下例可畫出一條正弦曲線:

closeall;

x=linspace(0,2*pi,100);%100個點的x坐標

y=sin(x);%對應的y坐標

plot(x,y);

若要畫出多條曲線,只需將坐標對依次放入plot函數(shù)即可:

plot(x,sin(x),x,cos(x));

若要改變顏色,在坐標對后面加上相關字串即可

Plot繪圖函數(shù)的參數(shù)

參數(shù)意義參數(shù)意義

r紅色-實線

g綠色一虛線

b藍色:點線

y黃色一,點劃線

m洋紅色0圓圈

c青色X叉號

w白色+加號

k黑色S正方形

*星號d菱形

?點號H六角星

<左三角符>右三角符

p五角星上三角符

此外,MATLAB也可對圖形加上各種注解與處理:

x=linspace(0,2*pi,100);%100個點的x坐標

y=sin(x);%對應的y坐標

plot(x,y,'g');

xlabel('x軸');%x軸注解

ylabelCy軸');%y軸注解

title('函數(shù)的圖像');%圖形標題

legend(*y=sin(x)');%圖形注解

gridon;%顯示格線

我們可用subplot來同時畫出數(shù)個小圖形于同一個視窗之中:

subplot(2,2,1);plot(x,sin(x));

subplot(2,2,2);plot(x,cos(x));

subplot(2,2,3);plot(x,sinh(x));

subplot(2,2,4);plot(x,cosh(x));

思考:如何繪制一個多項式的曲線

6.2三維圖形

6.2.1三維直線繪圖

命令格式:plot3(X,Y,Z,'linetype')

例如:t=0:pi/100:20*pi

x=sin(t),y=cos(t),z=t.*sin(t).*cos(t)

plot3(x,y,z);title(,linein3-Dspace')

xlabel('x');ylabel('y');zlabel('z');gridon

6.2.2三維曲面

1.產(chǎn)生三維數(shù)據(jù)

以meshgrid產(chǎn)生在x-y平面的二維的網(wǎng)絡數(shù)據(jù)

命令格式:

x=a:dl:b;y=c:d2:d;

[X,Y]=meshgrid(x,y)

2.繪制三維曲面的函數(shù)mesh,surf

mesh(X,Y,Z,'linetype')

surf(X,Y,Z,'linetype')

此命令可畫出立體網(wǎng)狀圖,其產(chǎn)生的圖形都會依高度而有不同顏色。

Matlab中以Meshgrid配合mesh或surf(用來繪制立方體曲面圖)指令來繪

制一個三維的曲面。先要以meshgrid產(chǎn)生在x-y平面的二維的網(wǎng)絡數(shù)據(jù),再以

一組z軸的數(shù)據(jù)對應到二維的網(wǎng)格,即可畫出三維的曲面。

例如:z=癡7^7,-7.5<x,y<7,5

x="7.5:0.5:7.5;

y=x;

[X,Y]=meshgrid(x,y);

R=sqrt(X.2+Y.2);

Z=sin(R)./R+eps;%eps是為了防止0/0iW)

mesh(X,Y,Z)

當然也可以用surf(X,Y,Z)

又如:z=peaks(50);

mesh(z);

3.柱面圖和球面圖

為了一些專業(yè)用戶可以更方便地繪制出三維旋轉(zhuǎn)體,MATLAB專門提供了2個函

數(shù):柱面函數(shù)cylinder和球面函數(shù)sphere

1)柱面圖

柱面圖繪制由函數(shù)cylinder實現(xiàn).

[X,Y,Z]=cylinder(R,N)此函數(shù)以母線向量R生成單位柱面.母線向量R是

在單位高度里等分刻度上定義的半徑向量.N為旋轉(zhuǎn)圓周上的分格線的條數(shù).

例.柱面函數(shù)演示舉例

x=0:pi/20:pi*3;

r=5+cos(x);

[a,b,c]=cyUnder(r,30);

mesh(a,b,c)

例.旋轉(zhuǎn)柱面圖.

t=0:pi/12:3*pi;

r=abs(exp(-0.25*t).*sin(t));

[X,Y,Z]=cylinder(r,30);

mesh(X,Y,Z)

2)球面圖繪制由函數(shù)sphere來實現(xiàn)

[X,Y,Z]=sphere(N)此函數(shù)生成3個(N+1)*(N+1)的矩陣,利用函

數(shù)surf(X,Y,Z)可產(chǎn)生單位球面.

[X,Y,Z]=sphere此形式使用了默認值N=20.

Sphere(N)只是繪制了球面圖而不返回任何值.

例.繪制地球表面的氣溫分布示意圖.

[a,b,c]=sphere(40);

surf(a,b,c);

axis(,equal')%此兩句控制坐標軸的大小相同.

axis('square,)

colormaphot,)

4.Matlab圖形處理

下面綜合應用Matlab函數(shù)命令來進行一些圖形的透視、鏤空、剪切和裁切處

理等,詳見wu.m

[x0,y0,z0]=sphere%產(chǎn)生單位球面的三維坐標

x=2*x0

y=2*y0

z=2*z0

elf

surf(xO,yO,zO)/畫單位球面

shadinginterp為采用插補明暗處理

holdon

mesh(x,y,z)

colormap(hot)%產(chǎn)生hot色圖

holdoff

hiddenoff%產(chǎn)生透視效果

axisequal%坐標軸等刻度命令

axisoff%不顯示坐標軸

5.圖形的輸出

在數(shù)學建模中,往往需要將產(chǎn)生的圖形輸出到Word文檔中。通??刹捎孟?/p>

述方法:

首先,在MATLAB圖形窗口中選擇【File】菜單中的[Export]選項,將打

開圖形輸出對話框,在該對話框中可以把圖形以emf,bmp,jpg,pgm等格式保

存。然后,再打開相應的文檔,并在該文檔中選擇【插入】菜單中的【圖片】選

項插入相應的圖片即可

第7章曲線擬合與插值

在大量的應用領域中,人們經(jīng)常面臨用一個解析函數(shù)描述數(shù)據(jù)的問題,對

這個問題有兩種方法:在插值法里,數(shù)據(jù)假定是正確的,要求以某種方法估算出

新的數(shù)據(jù)點;在曲線擬合或回歸中,人們設法找出某條光滑曲線,它最佳地擬合

數(shù)據(jù),但不必要經(jīng)過每個數(shù)據(jù)點。

7.1曲線擬合

Matlab曲線擬合常見的有多項式擬合,其命令格式為:p=polyfit(x,y,N)

該函數(shù)對向量x,y所確定的原始數(shù)據(jù)構(gòu)造N階多項式p(x),使p(x)與已知

數(shù)據(jù)點間函數(shù)值之差的平方和最小。當N=1時,多項式擬合就是線性擬合。一般

而言,N個數(shù)據(jù)點可以確定一個NT階多項式。看一個例子:

x=linspace(0,1,11)

y=[-0.4471.9783.286.167.087.347.669.569.489.3011.21]

nl=l

n2=2

nl0=10

pl=polyfit(x,y,nl)

p2=polyfit(x,y,n2)

plO=polyfit(x,y,nlO)

xi=linspa

溫馨提示

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

評論

0/150

提交評論