《MATLAB7 基礎(chǔ)教程》課件第6章_第1頁(yè)
《MATLAB7 基礎(chǔ)教程》課件第6章_第2頁(yè)
《MATLAB7 基礎(chǔ)教程》課件第6章_第3頁(yè)
《MATLAB7 基礎(chǔ)教程》課件第6章_第4頁(yè)
《MATLAB7 基礎(chǔ)教程》課件第6章_第5頁(yè)
已閱讀5頁(yè),還剩164頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6.1符號(hào)對(duì)象的創(chuàng)建與使用6.2數(shù)學(xué)計(jì)算功能

6.3表達(dá)式的化簡(jiǎn)和替換

6.4線性代數(shù)

6.5求解符號(hào)方程6.6簡(jiǎn)易符號(hào)繪圖函數(shù)6.7調(diào)用Maple函數(shù)

6.8積分變換

6.1.1創(chuàng)建符號(hào)變量和表達(dá)式

MATLAB的符號(hào)數(shù)學(xué)工具箱提供了用于創(chuàng)建符號(hào)變量和表達(dá)式的兩個(gè)基本函數(shù),即sym和syms。

sym函數(shù)的常用調(diào)用格式為S=sym(A),其作用是創(chuàng)建一個(gè)由A表示的“sym”類的對(duì)象S。如果輸入?yún)⒘渴亲址?,則生成一個(gè)符號(hào)類型的數(shù)值或變量;如果輸入?yún)⒘渴菙?shù)值標(biāo)量或數(shù)值矩陣,則生成一個(gè)符號(hào)類型的數(shù)值。6.1符號(hào)對(duì)象的創(chuàng)建與使用【例】創(chuàng)建符號(hào)類型數(shù)值。

在命令窗輸入:

>>a=3;

>>b='3';

>>s1=sym(a);

>>s2=sym(b);

>>s1==s2

class_=class(s1)運(yùn)行結(jié)果:

ans=

1

class_=

sym

【例】創(chuàng)建符號(hào)類型變量。

在命令窗輸入:

>>x=sym('x')

a=sym('alpha')運(yùn)行結(jié)果:

x=

x

a=

alpha

【例】創(chuàng)建符號(hào)類型矩陣。

在命令窗輸入:

>>A=magic(3);

>>sym(A)運(yùn)行結(jié)果:

ans=

[8,1,6]

[3,5,7]

[4,9,2]

syms函數(shù)用于創(chuàng)建符號(hào)表達(dá)式時(shí)的變量聲明,這也是最常用的創(chuàng)建符號(hào)表達(dá)式的方法。該函數(shù)的常用調(diào)用格式為symsa1a2…。【例】創(chuàng)建符號(hào)表達(dá)式。

在命令窗輸入:

>>symsab

>>f=a^2+2*b

運(yùn)行結(jié)果:

f=

a^2+2*b其中,表達(dá)式的創(chuàng)建語(yǔ)句定義了f為符號(hào)變量,無(wú)需再定義f。否則,如果繼續(xù)在命令窗輸入:

>>symsf

>>f

運(yùn)行結(jié)果會(huì)將原本創(chuàng)建好的表達(dá)式覆蓋:

f=

f

另外,符號(hào)表達(dá)式也可以通過(guò)sym函數(shù)直接創(chuàng)建。

【例】創(chuàng)建符號(hào)表達(dá)式。

在命令窗輸入:

>>f1=sym(a^2+2*b)

運(yùn)行結(jié)果:

f1=

a^2+2*b

通過(guò)這種方法創(chuàng)建的符號(hào)表達(dá)式與上例中通過(guò)syms創(chuàng)建的符號(hào)表達(dá)式的結(jié)果是相同的。但是,如果采用以字符串作為輸入?yún)⒘康姆椒?,得到的將是另一個(gè)結(jié)果。

【例】創(chuàng)建符號(hào)表達(dá)式。

在命令窗輸入:

>>f2=sym(‘a(chǎn)^2+2*b’)

運(yùn)行結(jié)果:

f2=

a^2+2*b

應(yīng)當(dāng)注意,f2表達(dá)式的“+”號(hào)前后各存在一個(gè)空字符,與前面兩種方法創(chuàng)建的表達(dá)式略有差別。對(duì)于一個(gè)已有的表達(dá)式,利用findsym函數(shù)可以尋找該表達(dá)式中的符號(hào)變量,例如:

【例】尋找符號(hào)變量。

在命令窗輸入:

>>symsab

>>f=a^2+2*b;

>>findsym(f)

運(yùn)行結(jié)果:

ans=

a,b

使用pretty函數(shù)可以使符號(hào)表達(dá)式的顯示形式更為美觀?!纠堪凑諘?shū)寫(xiě)習(xí)慣顯示表達(dá)式。

在命令窗輸入:

>>symsxy

>>y=3*x^3-2*x^2+x+1

pretty(y)

運(yùn)行結(jié)果:

y=

3*x^3-2*x^2+x+1

32

3x-2x+x+16.1.2創(chuàng)建符號(hào)數(shù)學(xué)函數(shù)

符號(hào)數(shù)學(xué)函數(shù)的輸入?yún)⒘恐泻蟹?hào)變量,創(chuàng)建符號(hào)數(shù)學(xué)函數(shù)的方法與創(chuàng)建一般函數(shù)的方法類似。符號(hào)數(shù)學(xué)函數(shù)在一些場(chǎng)合有著特殊的用途。

下面以一個(gè)sinc符號(hào)數(shù)學(xué)函數(shù)為例來(lái)說(shuō)明其創(chuàng)建方法。創(chuàng)建一個(gè)M文件,輸入如下代碼并保存為sincsym.m:

functionz=sincsym(x)

ifisequal(x,sym(0))

z=sym(1);

else

z=sin(x)/x;

end在命令窗輸入:

>>x=sym(2);

y=sincsym(x)

x1=sym(0);

y1=sincsym(x1)

z=class(y1)

運(yùn)行結(jié)果:

y=

1/2*sin(2)

y1=

1

z=

sym6.2.1符號(hào)微積分

微積分運(yùn)算是整個(gè)高等數(shù)學(xué)的基礎(chǔ),本小節(jié)主要介紹如何利用符號(hào)數(shù)學(xué)工具箱對(duì)符號(hào)表達(dá)式進(jìn)行微積分運(yùn)算。

1.微分

在符號(hào)數(shù)學(xué)工具箱中,表達(dá)式的微分由函數(shù)diff實(shí)現(xiàn),其調(diào)用格式如下:

●?diff(S):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量的微分。

●?diff(S,y):求符號(hào)表達(dá)式S對(duì)于自變量y的微分。6.2數(shù)學(xué)計(jì)算功能●?diff(S,n):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量的n次微分。

●?diff(S,y,n)或diff(S,n,y):求符號(hào)表達(dá)式S對(duì)于自變量y的n次微分。

符號(hào)微分的默認(rèn)自變量為x,如果表達(dá)式中不存在x,則以字母表中最接近x的字母作為微分的默認(rèn)自變量。不論一個(gè)符號(hào)變量是否與表達(dá)式有關(guān),符號(hào)微分都可以求表達(dá)式對(duì)于該符號(hào)變量的微分?!纠糠?hào)微分。

在命令窗輸入:

>>symsxyt

>>z=x^2+2*y^3;

>>dzdx=diff(z)

dzdt=diff(z,t)

d2zdx2=diff(z,2,x)

d3zdy3=diff(z,y,3)運(yùn)行結(jié)果:

dzdx=

2*x

dzdt=

0

d2zdx2=

2

d3zdy3=

12

2.積分

在符號(hào)數(shù)學(xué)工具箱中,表達(dá)式的積分由函數(shù)int實(shí)現(xiàn),其調(diào)用格式如下:

●?int(S):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量的不定積分。

●?int(S,v):求符號(hào)表達(dá)式S對(duì)于自變量v的不定積分。

●?diff(S,a,b):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量從a到b的定積分。

符號(hào)積分的默認(rèn)自變量選取規(guī)則與符號(hào)微分中的規(guī)則類似。【例】符號(hào)積分。

在命令窗輸入:

>>symsxy

>>ix=int(z)

iy=int(z,y)

ix1_2=int(z,1,2)

iy0_2pi=int(z,y,0,pi/2)運(yùn)行結(jié)果:

ix=

log(x)+2*sin(y)*cos(y)*x

iy=

1/x*y-cos(y)^2

ix1_2=

2*sin(y)*cos(y)+log(2)

iy0_2pi=

1/2*(2*x+pi)/x6.2.2函數(shù)的極限

求極限就是當(dāng)函數(shù)的自變量無(wú)限接近某個(gè)確定值時(shí),求該函數(shù)的值的過(guò)程。譬如微分的計(jì)算就是利用極限定義的(假如該極限存在):函數(shù)的極限在很多場(chǎng)合有重要的作用,本小節(jié)將介紹如何使用符號(hào)數(shù)學(xué)工具箱求函數(shù)的極限。

通常使用limit函數(shù)求函數(shù)的極限,其調(diào)用格式如下:

●?limit(F,x,a):計(jì)算符號(hào)表達(dá)式F在x趨向于a條件下的極限。

●?limit(F,a):計(jì)算符號(hào)表達(dá)式F中默認(rèn)自變量趨向于a條件下的極限。

●?limit(F):計(jì)算符號(hào)表達(dá)式F在默認(rèn)自變量趨向于0時(shí)的極限。

●limit(F,x,a,'right')和limit(F,x,a,'left'):計(jì)算符號(hào)表達(dá)式F在x趨向于a條件下的右極限和左極限。例如,函數(shù)x/|x|在x→0+,x→0-時(shí)存在極限,而在x→0時(shí)不存在極限。下面將利用limit函數(shù)來(lái)求解。

【例】函數(shù)的極限。

在命令窗輸入:

>>symx;

>>F=x/abs(x);

F_2_NEGATIVE=limit(F,-2)

F_0=limit(F,x,0)

F_0_RIGTH=limit(F,x,0,‘right’)

F_0_LEFT=limit(F,x,0,'left')運(yùn)行結(jié)果:

F_2_NEGATIVE=

-1

F_0=

NaN

F_0_RIGTH=

1

F_0_LEFT=

-16.2.3級(jí)數(shù)求和

利用符號(hào)數(shù)學(xué)工具箱中的symsum函數(shù)可以實(shí)現(xiàn)級(jí)數(shù)的求和,其調(diào)用格式如下:

●?symsum(S):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量x從0到x?-1的和。

●?symsum(S,v):求符號(hào)表達(dá)式S對(duì)于自變量v從0到v?-1的和。

●?symsum(S,a,b):求符號(hào)表達(dá)式S對(duì)于默認(rèn)自變量x從a到b的和。

●?symsum(S,v,a,b):求符號(hào)表達(dá)式S對(duì)于自變量v從a到b的和。

級(jí)數(shù)求和的默認(rèn)自變量選取規(guī)則與符號(hào)微分中的規(guī)則類似?!纠考?jí)數(shù)求和。

在命令窗輸入:

>>symsxv

>>S=x^2+v;

>>S1=symsum(S)

S2=symsum(S,v)

S3=symsum(S,0,4)

S4=symsum(S,v,0,4)運(yùn)行結(jié)果:

S1=

1/3*x^3-1/2*x^2+1/6*x+v*x

S2=

x^2*v+1/2*v^2-1/2*v

S3=

5*v+30

S4=

5*x^2+106.2.4泰勒級(jí)數(shù)展開(kāi)

利用符號(hào)數(shù)學(xué)工具中taylor函數(shù)可以求得符號(hào)表達(dá)式的泰勒級(jí)數(shù)展開(kāi)式,其調(diào)用格式如下:

●?taylor(f):計(jì)算符號(hào)表達(dá)式f在默認(rèn)自變量等于0處的5階泰勒級(jí)數(shù)展開(kāi)式。

●?taylor(f,n,v):計(jì)算符號(hào)表達(dá)式f在自變量v?=?0處的n?-1階泰勒級(jí)數(shù)展開(kāi)式。

●?taylor(f,n,v,a):計(jì)算符號(hào)表達(dá)式f在自變量v?=?a處的n?-1階泰勒級(jí)數(shù)展開(kāi)式。

當(dāng)符號(hào)表達(dá)式中有多個(gè)自變量時(shí),利用taylor函數(shù)可以求得表達(dá)式對(duì)于一個(gè)自變量的泰勒級(jí)數(shù)展開(kāi),默認(rèn)自變量選取規(guī)則與符號(hào)微分中的規(guī)則類似。【例】泰勒級(jí)數(shù)展開(kāi)。

在命令窗輸入:

>>symsxz

>>f=sin(x)+exp(z);

>>T1=taylor(f)

T2=taylor(f,7,x)

T3=taylor(f,4,z,1)運(yùn)行結(jié)果:

T1=

exp(z)+x-1/6*x^3+1/120*x^5

T2=

exp(z)+x-1/6*x^3+1/120*x^5

T3=

sin(x)+exp(1)+exp(1)*(z-1)+1/2*exp(1)*(z-1)^2+1/6*exp(1)*(z-1)^36.3.1符號(hào)表達(dá)式的化簡(jiǎn)

MATLAB的符號(hào)數(shù)學(xué)工具箱提供了豐富的表達(dá)式代數(shù)恒等變換和三角恒等變換的函數(shù),本小節(jié)將介紹這類變換函數(shù),如collect、expand、horner、factor、numden、simplify和simple。

1.因式分解

因式分解函數(shù)factor的調(diào)用格式為factor(p),返回值為p的因式分解形式。其中,p為有理系數(shù)符號(hào)多項(xiàng)式或符號(hào)類型的整數(shù),如果p不可分解,則返回值為p本身。6.3表達(dá)式的化簡(jiǎn)和替換【例】因式分解。

在命令窗輸入:

>>symsx;

>>n=(1:4)‘;

>>p=x.^n-1;

>>f=factor(p);

>>[p,f]運(yùn)行結(jié)果:

ans=

[x-1,

x-1]

[x^2-1,

(x-1)*(x+1)]

[x^3-1,

(x-1)*(x^2+x+1)]

[x^4-1,(x-1)*(x+1)*(x^2+1)]【例】因數(shù)分解。

在命令窗輸入:

>>N=sym(3);

>>fork=2:4

N(k)=10*N(k-1);

end

>>[N'factor(N')]運(yùn)行結(jié)果:

ans=

[3,(3)]

[30,(2)*(3)*(5)]

[300,(2)^2*(3)*(5)^2]

[3000,(2)^3*(3)*(5)^3]

2.表達(dá)式展開(kāi)

符號(hào)表達(dá)式的展開(kāi)函數(shù)expand的調(diào)用格式為expand(S),返回值為符號(hào)表達(dá)式S的展開(kāi)式。利用expand函數(shù)可以實(shí)現(xiàn)多項(xiàng)式、三角函數(shù)和指數(shù)函數(shù)的展開(kāi)。

【例】表達(dá)式展開(kāi)。

在命令窗輸入:

>>symsabxy

>>f1=a*(x+y)^2;

>>f2=x*(x*(x-a)+b);

>>f3=exp(a+b);

>>f4=cos(a*x+b*y);

>>p=expand([f1;f2;f3;f4])

運(yùn)行結(jié)果:

p=

a*x^2+2*a*x*y+a*y^2

x^3-a*x^2+x*b

exp(a)*exp(b)

cos(a*x)*cos(b*y)-sin(a*x)*sin(b*y)

3.合并同類項(xiàng)

符號(hào)表達(dá)式的同類項(xiàng)合并函數(shù)collect的調(diào)用格式如下:

●?collect(S):按符號(hào)表達(dá)式S中默認(rèn)自變量的同次冪項(xiàng)的系數(shù)合并,默認(rèn)自變量為x。

●?collect(S,v):按符號(hào)表達(dá)式S中自變量v的同次冪項(xiàng)的系數(shù)合并。

【例】合并同類項(xiàng)。在命令窗輸入:

>>symsxy;

>>f=(sin(x)*x)*(x+y)*y;

>>R1=collect(f)

R2=collect(f,y)

R3=collect([(x+1)*(y+1),x+y])運(yùn)行結(jié)果:

R1=

sin(x)*y*x^2+sin(x)*y^2*x

R2=

sin(x)*y*x^2+sin(x)*y^2*x

R3=

[(y+1)*x+y+1,x+y]

4.表達(dá)式化簡(jiǎn)

符號(hào)表達(dá)式的化簡(jiǎn)可以通過(guò)函數(shù)simple和simplify來(lái)實(shí)現(xiàn),其調(diào)用格式如下:

●?r=simple(S):使用多種算數(shù)法則對(duì)符號(hào)表達(dá)式S進(jìn)行化簡(jiǎn),得到所有比S更簡(jiǎn)短的表達(dá)式,返回值r為其中最簡(jiǎn)潔的形式。如果S為符號(hào)表達(dá)式矩陣,則結(jié)果為整個(gè)矩陣的最簡(jiǎn)表達(dá)形式,而不是矩陣的每個(gè)元素最簡(jiǎn)。如果不給出返回值,那么命令simple(S)的結(jié)果將顯示所有可能的表達(dá)式并且返回值為其中的最簡(jiǎn)形式?!?[r,how]=simple(S):返回最簡(jiǎn)形式及其使用的化簡(jiǎn)方法,并且不顯示化簡(jiǎn)的中間過(guò)程。其中,r為化簡(jiǎn)后的符號(hào)表達(dá)式,how為代表化簡(jiǎn)方法的字符串。

●?R=simplify(S):利用Maple化簡(jiǎn)規(guī)則化簡(jiǎn)符號(hào)矩陣S中的每個(gè)元素,返回值為R。

【例】顯示表達(dá)式化簡(jiǎn)的所有形式。在命令窗輸入:

>>symsx

>>S=cos(x)^2+sin(x)^2;

>>simple(S)

運(yùn)行結(jié)果:

simplify:

1

radsimp:

cos(x)^2+sin(x)^2

combine(trig):1

factor:

cos(x)^2+sin(x)^2

expand:

cos(x)^2+sin(x)^2

combine:

1

convert(exp):

(1/2*exp(i*x)+1/2/exp(i*x))^2-1/4*(exp(i*x)-1/exp(i*x))^2

convert(sincos):

cos(x)^2+sin(x)^2convert(tan):

(1-tan(1/2*x)^2)^2/(1+tan(1/2*x)^2)^2+4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2

collect(x):

cos(x)^2+sin(x)^2

mwcos2sin:

1

ans=

1

【例】顯示表達(dá)式化簡(jiǎn)的最簡(jiǎn)形式及其使用方法。

在命令窗輸入:

>>symsx

>>S=cos(x)^2+sin(x)^2;

>>[r,how]=simple(S)

運(yùn)行結(jié)果:

r=

1

how=

simplify

【例】利用Maple化簡(jiǎn)規(guī)則化簡(jiǎn)。

在命令窗輸入:

>>symsx

>>S=cos(x)^2+sin(x)^2;

>>R=simplify(S)

運(yùn)行結(jié)果:

R=

1

5.表達(dá)式通分

符號(hào)表達(dá)式的通分可以通過(guò)函數(shù)numden來(lái)實(shí)現(xiàn),其調(diào)用格式為[N,D]=numden(A),表示將A轉(zhuǎn)化為分子分母都是整系數(shù)的最佳形式。其中,A為符號(hào)矩陣,N為分子符號(hào)矩陣,D為分母符號(hào)矩陣。

【例】表達(dá)式通分。

在命令窗輸入:

>>symsxy

>>[n,d]=numden([x/y+y/x,sym(1-1/2.4)])運(yùn)行結(jié)果:

n=

[x^2+y^2,7]

d=

[y*x,12]

6.表達(dá)式的嵌套形式

函數(shù)horner可以將符號(hào)表達(dá)式轉(zhuǎn)換成嵌套形式,其調(diào)用格式為F=horner(P)。其中,P為符號(hào)多項(xiàng)式矩陣,該函數(shù)將P的每一個(gè)元素轉(zhuǎn)化為嵌套形式。

【例】表達(dá)式的嵌套形式。

在命令窗輸入:

>>symsx

>>P=[x^2+x;y^3-2*y];

>>F=horner(P)運(yùn)行結(jié)果:

F=

x*(x+1)

(-2+y^2)*y6.3.2符號(hào)表達(dá)式的替換

MATLAB的符號(hào)數(shù)學(xué)工具箱提供了兩個(gè)符號(hào)表達(dá)式替換的函數(shù)subexpr和subs。利用這兩個(gè)函數(shù)可以將表達(dá)式的輸出形式簡(jiǎn)化,從而得到一個(gè)簡(jiǎn)單的表達(dá)式。

subexpr函數(shù)的調(diào)用格式如下:

●?[Y,SIGMA]=subexpr(X,SIGMA):將符號(hào)表達(dá)式X中重復(fù)出現(xiàn)的字符串用SIGMA來(lái)代替,返回值Y為替換后的符號(hào)表達(dá)式。●?[Y,SIGMA]=subexpr(X,‘SIGMA’):將符號(hào)表達(dá)式X中重復(fù)出現(xiàn)的字符串用‘SIGMA’來(lái)代替,返回值Y為替換后的符號(hào)表達(dá)式。

subexpr函數(shù)可以使非常復(fù)雜的表達(dá)式的形式得到一定程度的化簡(jiǎn)。

【例】表達(dá)式重復(fù)字符串的替換。

在命令窗輸入:

>>t=solve(‘a(chǎn)*x^3+b*x^2+c*x+d=0’);

>>[r,s]=subexpr(t,'s')運(yùn)行結(jié)果:

r=

1/6/a*s^(1/3)-2/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a

-1/12/a*s^(1/3)+1/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a+1/2*i*3^(1/2)*(1/6/a*s^(1/3)

+2/3*(3*c*a-b^2)/a/s^(1/3))

-1/12/a*s^(1/3)+1/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a-1/2*i*3^(1/2)*(1/6/a*s^(1/3)

+2/3*(3*c*a-b^2)/a/s^(1/3))s=

36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2

+4*d*b^3)^(1/2)*a

subs函數(shù)的調(diào)用格式如下:

●?R=subs(S):用調(diào)用函數(shù)或工作區(qū)間的變量值替換符號(hào)表達(dá)式S中所有出現(xiàn)的對(duì)應(yīng)變量。

●?R=subs(S,new):用變量new替換S中的默認(rèn)變量。

●?R=subs(S,old,new):用變量new替換S中的變量old。old為符號(hào)變量或代表某個(gè)變量名字符串,new為符號(hào)變量、數(shù)值變量或表達(dá)式。

【例】用工作區(qū)間變量替換。

在命令窗輸入:

>>a=10;

>>C1=2;

>>y=dsolve(‘Dy=-a*y’)

yt=subs(y)運(yùn)行結(jié)果:

y=

C1*exp(-a*t)

yt=

2*exp(-10*t)

【例】用輸入?yún)⒘刻鎿Q。

在命令窗輸入:

>>symsaC1t

>>y=C1*exp(-a*t);

>>yt=subs(y,{a,C1},{10,2})

運(yùn)行結(jié)果:

yt=

2*exp(-10*t)

【例】用矩陣替換標(biāo)量。

在命令窗輸入:

>>subs(exp(a*t),‘a(chǎn)’,magic(2))

運(yùn)行結(jié)果:

ans=

[exp(t),exp(3*t)]

[exp(4*t),exp(2*t)]

【例】相乘標(biāo)量的替換。

在命令窗輸入:

>>symsxy

>>subs(x*y,{x,y},{[01;-10],[11;11]})

運(yùn)行結(jié)果:

ans=

01

-106.4.1基本代數(shù)運(yùn)算

符號(hào)對(duì)象的基本代數(shù)運(yùn)算與double類的MATLAB對(duì)象運(yùn)算方法相同。

【例】符號(hào)矩陣的冪。

在命令窗輸入:

>>symst;

>>G=[cos(t)sin(t);-sin(t)cos(t)];

>>A=G^2

A=simple(A)6.4線性代數(shù)運(yùn)行結(jié)果:

A=

[cos(t)^2-sin(t)^2,2*cos(t)*sin(t)]

[-2*cos(t)*sin(t),cos(t)^2-sin(t)^2]

A=

[cos(2*t),sin(2*t)]

[-sin(2*t),cos(2*t)]

【例】符號(hào)正交矩陣。

在命令窗輸入:

>>symst;

>>G=[cos(t)sin(t);-sin(t)cos(t)];

>>I=G.‘*G

I=simple(I)運(yùn)行結(jié)果:

I=

[cos(t)^2+sin(t)^2,0]

[0,cos(t)^2+sin(t)^2]

I=

[1,0]

[0,1]6.4.2線性代數(shù)運(yùn)算

符號(hào)對(duì)象的線性代數(shù)運(yùn)算與double類的MATLAB對(duì)象的線性代數(shù)運(yùn)算相同。本小節(jié)將以希爾伯特矩陣為例來(lái)介紹符號(hào)數(shù)學(xué)工具箱中的幾種線性代數(shù)運(yùn)算。

【例】符號(hào)線性代數(shù)運(yùn)算。

創(chuàng)建一個(gè)數(shù)值類型的希爾伯特矩陣,在命令窗輸入:

>>H=hilb(3)運(yùn)行結(jié)果:

H=

1.00000.50000.3333

0.50000.33330.2500

0.33330.25000.2000

將H轉(zhuǎn)化為符號(hào)矩陣,在命令窗輸入:

>>H=sym(H)運(yùn)行結(jié)果:

H=

[1,1/2,1/3]

[1/2,1/3,1/4]

[1/3,1/4,1/5]

對(duì)這個(gè)無(wú)限精度的希爾伯特矩陣求逆及行列式,在命令窗輸入:

>>inv(H)

det(H)運(yùn)行結(jié)果:

ans=

[9,-36,30]

[-36,192,-180]

[30,-180,180]

ans=

1/2160利用反斜杠求希爾伯特矩陣構(gòu)成的線性方程組,在命令窗輸入:

>>b=[111]‘;

>>x=H\b

x=

3

-24

30

以上求逆、求行列式、求解線性方程組的結(jié)果都是對(duì)應(yīng)無(wú)限精度有理希爾伯特矩陣的精確解。另一方面,如果以使用16位精度的線性代數(shù)運(yùn)算所得結(jié)果與上例進(jìn)行對(duì)比,可以看出符號(hào)線性代數(shù)運(yùn)算與數(shù)值線性代數(shù)運(yùn)算存在著本質(zhì)上的區(qū)別。

【例】16位精度數(shù)值線性代數(shù)運(yùn)算。

創(chuàng)建一個(gè)16位精度的希爾伯特矩陣,在命令窗輸入:

>>digits(16)

>>V=vpa(hilb(3))

運(yùn)行結(jié)果:上面的矩陣元素的小數(shù)點(diǎn)表明使用的是變精度算法,即將結(jié)果四舍五入至16位阿拉伯?dāng)?shù)字。當(dāng)求矩陣的逆時(shí),由于矩陣條件數(shù)很大(3階希爾伯特矩陣的條件數(shù)約為500),因此誤差將被放大。在命令窗輸入:

>>inv(V)

運(yùn)行結(jié)果:再看行列式的值,在命令窗輸入:

>>det(V)

運(yùn)行結(jié)果:

ans=

.462962962962953e-3

求解線性方程組,在命令窗輸入:

>>V\b運(yùn)行結(jié)果:

ans=

3.000000000000041

-24.00000000000021

30.00000000000019

【例】奇異矩陣的運(yùn)算。

由于H非奇異,求其化零矩陣,在命令窗輸入:

>>null(H)運(yùn)行結(jié)果:

ans=

[emptysym]

求H的列空間,在命令窗輸入:

>>colspace(H)

運(yùn)行結(jié)果:

ans=

[1,0,0]

[0,0,1]

[0,1,0]即得到了一個(gè)單位矩陣的置換形式。下面介紹如何通過(guò)修改H(1,1)的值成為s,使H奇異。在命令窗輸入:

>>symss

H(1,1)=s

Z=det(H)

sol=solve(Z)運(yùn)行結(jié)果:

H=

[s,1/2,1/3]

[1/2,1/3,1/4]

[1/3,1/4,1/5]

Z=

1/240*s-1/270

sol=

8/9接著利用H=subs(H,s,sol)將s用sol替換,在命令窗輸入:

>>H=subs(H,s,sol)

運(yùn)行結(jié)果:

H=

[8/9,1/2,1/3]

[1/2,1/3,1/4]

[1/3,1/4,1/5]此時(shí),H的行列式將為零,H的逆矩陣將不存在。Z?=null(H)以及C=colspace(H)將返回非平凡的結(jié)果。在命令窗輸入:

>>Z=null(H)

C=colspace(H)

運(yùn)行結(jié)果:

Z=

1

-4

10/3

C=

[1,0]

[0,1]

[-3/10,6/5]需要指出的是,即使H奇異,vpa(H)非奇異。行列式不為零,逆矩陣存在。在命令窗輸入:

>>digits(16);

det(vpa(H))

inv(vpa(H))

運(yùn)行結(jié)果:

ans=

-.9e-176.4.3特征值

符號(hào)線性代數(shù)中,常用eig函數(shù)來(lái)求符號(hào)矩陣的特征值或特征向量,其調(diào)用格式如下:

●?E=eig(A):求符號(hào)矩陣A的特征值。

●?[V,E]=eig(A):求符號(hào)矩陣A的特征值E和特征向量V。

下面以上一小節(jié)的奇異矩陣為例,給出符號(hào)矩陣特征值和特征向量的求法。

【例】符號(hào)矩陣的特征值與特征向量。其中,T為特征向量,E為特征值構(gòu)成的對(duì)角矩陣。為使這個(gè)結(jié)果更為明了,在命令窗輸入:

>>Td=double(T)

Ed=double(E)運(yùn)行結(jié)果:

Td=

1.00001.6497-1.2837

-4.00001.00001.0000

3.33330.70511.5851

Ed=

000

01.33440

000.08786.4.4約當(dāng)標(biāo)準(zhǔn)型

約當(dāng)標(biāo)準(zhǔn)型的結(jié)果類似于矩陣的對(duì)角化,即對(duì)于一個(gè)矩陣A,尋找一個(gè)非奇異矩陣V,使得矩陣J?=?V\A*V最接近對(duì)角矩陣。對(duì)于絕大部分矩陣,約當(dāng)標(biāo)準(zhǔn)型為特征值組成的對(duì)角矩陣J,其變換矩陣V的列向量則為對(duì)應(yīng)的特征向量。特征值不相等的對(duì)稱矩陣往往具有這個(gè)特點(diǎn),但是對(duì)于有重特征值的非對(duì)稱矩陣,有可能不能對(duì)其進(jìn)行對(duì)角化。約當(dāng)型的主對(duì)角線上為矩陣的特征值,但是超對(duì)角線上的某些元素為1而不是0。

計(jì)算符號(hào)矩陣約當(dāng)標(biāo)準(zhǔn)型的函數(shù)jordan的常用調(diào)用格式為[V,J]?=?jordan(A),其中,J為約當(dāng)標(biāo)準(zhǔn)型,V為變換矩陣,其列向量代表廣義特征向量。

【例】符號(hào)矩陣的約當(dāng)標(biāo)準(zhǔn)型。

>>A=sym([12,32,66,116;-25,-76,-164,-294;

21,66,143,256;-6,-19,-41,-73]);

>>[V,J]=jordan(A)

V=

[4,-2,4,3]

[-6,8,-11,-8]

[4,-7,10,7]

[-1,2,-3,-2]J=

[1,1,0,0]

[0,1,0,0]

[0,0,2,1]

[0,0,0,2]6.4.5奇異值分解

符號(hào)數(shù)學(xué)工具箱中只支持變精度完全奇異向量分解的數(shù)值計(jì)算,其中的一個(gè)原因就是符號(hào)計(jì)算所得的公式過(guò)長(zhǎng)且過(guò)于復(fù)雜。如果A是一個(gè)浮點(diǎn)或變精度數(shù)值的符號(hào)矩陣,則svd函數(shù)計(jì)算A的奇異分解。svd的常用調(diào)用格式為[U,S,V]=svd(A),其中U、V為正交矩陣,S為對(duì)角矩陣,且滿足A=U*S*V'。

【例】符號(hào)矩陣的奇異值分解。

在命令窗輸入:

>>[J,I]=meshgrid(1:5);

>>digits(8)

A=sym(1./(I-J+1/2))

[U,S,V]=svd(vpa(A))運(yùn)行結(jié)果:

A=

[?2,-2,?-2/3,-2/5,?-2/7]

[2/3,?2,??-2,?-2/3,-2/5]

[2/5,2/3,?2,?-2,?-2/3]

[2/7,2/5,2/3,2,???-2]

[2/9,2/7,2/5,?2/3,2]6.4.6特征值軌跡

本小節(jié)給出一個(gè)在矩陣參數(shù)變化時(shí),矩陣特征值的變化情況。

【例】特征值軌跡。

在命令窗輸入:

>>A=gallery(3)

E=[130,-390,0;43,-129,0;133,-399,0];

symsxt

A=A+t*E

p=poly(A)

x=.8:.01:3.2;

fork=0:2c=sym2poly(subs(p,t,k*0.5e-6));

y=polyval(c,x);

lambda=eig(double(subs(A,t,k*0.5e-6)));

subplot(3,1,3-k)

plot(x,y,'-',x,0*x,':',lambda,0*lambda,'o')

axis([.83.2-.5.5])

text(2.25,.35,['t='num2str(k*0.5e-6)]);

end運(yùn)行結(jié)果如下。圖6-1所示自上至下分別為t=1.0e-6、t=0.5e-6、t=0時(shí)的特征值軌跡。

A=

-149-50?-154

537180546

-27?-9?-25

A=

[-149+130*t,-50-390*t,-154]

[537+43*t,180-129*t,?546]

[-27+133*t,?-9-399*t,-25]

p=

x^3-6*x^2+11*x-t*x^2+492512*t*x-6-1221271*t圖6-1特征值軌跡6.5.1求解代數(shù)方程

符號(hào)數(shù)學(xué)工具箱提供了求解符號(hào)代數(shù)方程的函數(shù)solve,其調(diào)用格式如下:

●?g=solve(eq):求解關(guān)于默認(rèn)自變量的方程式eq或eq=0。其中,eq可以是符號(hào)表達(dá)式或字符串,返回值g是所有解構(gòu)成的列向量。如果eq是不帶等號(hào)的符號(hào)表達(dá)式或字符串,則求解關(guān)于默認(rèn)自變量的方程式eq=0。

●?g=solve(eq,var):求解關(guān)于自變量var的方程式eq或eq=0。

通常方程的默認(rèn)自變量為x。6.5求解符號(hào)方程【例】求解代數(shù)方程。

在命令窗輸入:

>>symsabcx

S=a*x^2+b*x+c;

solve(S)

運(yùn)行結(jié)果:

ans=

-1/2*(b-(b^2-4*a*c)^(1/2))/a

-1/2*(b+(b^2-4*a*c)^(1/2))/a當(dāng)然,也可以指定自變量,繼續(xù)在命令窗輸入:

>>b=solve(S,b)

運(yùn)行結(jié)果:

b=

-(a*x^2+c)/x

需要注意的是,如果待求解的方程形式不是f(x)=0,而是形如g(x)=f(x),則solve函數(shù)的輸入?yún)⒘勘仨毷且?hào)字符串。6.5.2求解代數(shù)方程組

符號(hào)代數(shù)方程組的求解也要使用函數(shù)solve,其調(diào)用格式如下:

●?g=solve(eq1,eq2,…,eqn):求解關(guān)于n個(gè)默認(rèn)自變量的方程組eq1、eq2、…、eqn。其中,eq1、eq2、…、eqn可以是符號(hào)表達(dá)式或字符串。默認(rèn)自變量由函數(shù)findsym作用于方程系統(tǒng)決定。

●?g=solve(eq1,eq2,…,eqn,var1,var2,…,varn):求解關(guān)于n個(gè)自變量var1、var2、…、varn的方程組eq1、eq2、…、eqn。

對(duì)于方程數(shù)等于輸出數(shù)的方程組,其解按照字母表排序;對(duì)于單輸出的方程組,則返回值為所有解組成的結(jié)構(gòu)。

【例】

求解代數(shù)方程組(單輸出)。

在命令窗輸入:

>>S=solve(‘u^2-v^2=a^2’,‘u+v=1’,‘a(chǎn)^2-2*a=3’)

S.a

運(yùn)行結(jié)果:

S=

a:[2x1sym]

u:[2x1sym]

v:[2x1sym]

ans=

3

-1

【例】求解代數(shù)方程組(輸出數(shù)等于方程數(shù))。

在命令窗輸入:

>>symsxyalpha

>>[x,y]=solve(x^2*y^2,x-y/2-alpha)

運(yùn)行結(jié)果:

x=

0

0

alpha

alpha

y=

-2*alpha

-2*alpha

0

0

需要注意的是,由于該方程組第一個(gè)方程的解為x=±0,y=±0,故最終的解向量中含有冗余項(xiàng)。6.5.3求解常微分方程

符號(hào)數(shù)學(xué)工具箱提供了求解符號(hào)常微分方程(組)的函數(shù)dsolve。微分方程中,在變量字母前加D代表對(duì)該變量的微分。符號(hào)D2、D3、…、DN分別對(duì)應(yīng)二階、三階、…、N階微分。例如D2y表示的是d2y/dt2。因變量是前面加D的符號(hào)變量,并且默認(rèn)對(duì)自變量t求導(dǎo)。應(yīng)當(dāng)注意,符號(hào)變量名中不能含有D。

dsolve函數(shù)的調(diào)用格式如下:

●?r?=?dsolve(‘eq1,eq2,…’,‘cond1,cond2,…’,‘v’):求解由eq1、eq2?…構(gòu)成的常微分方程(組),且對(duì)自變量v求導(dǎo),由cond1、cond2…指定邊值或初值條件。

●?r=dsolve(‘eq1’,‘eq2’,…,‘cond1’,‘cond2’,…,‘v’):同上,但輸入?yún)⒘孔疃嗖怀^(guò)12。

●?dsolve('eq1,eq2,…','cond1,cond2,…','v'):同上。如果初值條件數(shù)少于因變量數(shù),求解的結(jié)果中將含有積分常數(shù)C1、C2等。dsolve函數(shù)的輸出形式有以下三種:

●對(duì)于只有一個(gè)方程和一個(gè)輸出的情況,dsolve函數(shù)的返回值為一個(gè)非線性方程多個(gè)解構(gòu)成的列向量。

●對(duì)于多個(gè)方程和方程數(shù)等于輸出數(shù)的情況,dsolve函數(shù)將解按照詞典順序排序并賦給輸出。

●對(duì)于多個(gè)方程和一個(gè)輸出的情況,dsolve函數(shù)的返回值為所有解組成的結(jié)構(gòu)?!纠壳蠼庾灾纬N⒎址匠獭?/p>

在命令窗輸入:

>>dsolve(‘Dx=-a*x’)

運(yùn)行結(jié)果:

ans=

C1*exp(-a*t)【例】求解非自治常微分方程。

在命令窗輸入:

>>dsolve(‘Df=f+sin(t)’)

運(yùn)行結(jié)果:

ans=

-1/2*cos(t)-1/2*sin(t)+exp(t)*C1【例】求解二階常微分方程。

在命令窗輸入:

>>dsolve(‘D2y=-a^2*y’,‘y(0)=1’,‘Dy(pi/a)=0’)

運(yùn)行結(jié)果:

ans=

cos(a*t)

【例】求解常微分方程組。

在命令窗輸入:

>>S=dsolve(‘Dx=y’,‘Dy=-x’)

S.x

S.y運(yùn)行結(jié)果:

S=

x:[1x1sym]

y:[1x1sym]

ans=

-C1*cos(t)+C2*sin(t)

ans=

C1*sin(t)+C2*cos(t)6.6.1二維基本繪圖

函數(shù)ezplot是MATLAB最基本最常用的二維繪圖函數(shù),其調(diào)用格式如下:

●?ezplot(f):在默認(rèn)區(qū)域內(nèi)繪制函數(shù)表達(dá)式f=f(x)。

●?ezplot(f,[xmin,xmax]):在指定的區(qū)域[xmin,xmax]內(nèi)繪制函數(shù)表達(dá)式f=f(x)。如果沒(méi)有圖形窗口存在,則該命令生成標(biāo)題為FigureNo.1的新窗口并在該窗口中作圖;如果已有圖形窗口存在,則在標(biāo)號(hào)最高的圖形窗口中作圖。6.6簡(jiǎn)易符號(hào)繪圖函數(shù)●?ezplot(f,[xminxmax],fign):打開(kāi)并在指定標(biāo)號(hào)fign的窗口中繪制[xmin,xmax]區(qū)域內(nèi)函數(shù)f=f(x)的圖像。

●?ezplot(f):在默認(rèn)區(qū)域,內(nèi)繪制函數(shù)表達(dá)式f(x,y)=0的圖像。

●?ezplot(f,[xmin,xmax,ymin,ymax]):在xmin<x<xmax和ymin<y<ymax區(qū)域內(nèi)繪制函數(shù)f(x,y)=0的圖像。

●?ezplot(f,[min,max]):在min<x<max和min<y<max區(qū)域內(nèi)繪制函數(shù)f(x,y)=0的圖像。

●?ezplot(x,y):在默認(rèn)范圍內(nèi)繪制參數(shù)方程x=x(t)、y=y(t)的圖像。

●?ezplot(x,y,[tmin,tmax]):在指定的范圍tmin<t<tmax內(nèi)繪制參數(shù)方程x=x(t)、y=y(t)的圖像。

●?ezplot(…,figure):在由figure句柄標(biāo)識(shí)的圖形窗口中繪制指定函數(shù)的圖像?!纠坷L制二維圖像x2-y4=0。

在命令窗輸入:

>>symsxy

>>ezplot(x^2-y^4)

運(yùn)行結(jié)果如圖6-2所示。圖6-2x2?-y4=0的圖像

【例】

繪制二維圖像在命令窗輸入:

>>symsx

>>ezplot(erf(x))

grid運(yùn)行結(jié)果如圖6-3所示。圖6-3erf(x)的圖像6.6.2二維極坐標(biāo)繪圖

函數(shù)ezpolar用于二維極坐標(biāo)函數(shù)的繪圖,其調(diào)用格式如下:

●?ezpolar(f):在默認(rèn)區(qū)域0?<theta<?2π內(nèi)繪制極坐標(biāo)函數(shù)rho?=?f(theta)的圖像。

●?ezpolar(f,[a,b]):在指定區(qū)域a?<theta<?b內(nèi)繪制極坐標(biāo)函數(shù)f的圖像。

【例】二維極坐標(biāo)繪圖。

在命令窗輸入:

>>symst

>>ezpolar(1+cos(4*t))

運(yùn)行結(jié)果如圖6-4所示。圖6-4繪制極坐標(biāo)圖6.6.3三維曲線繪圖

函數(shù)ezplot3用于三維曲線的簡(jiǎn)易繪圖,其調(diào)用格式如下:

●?ezplot3(x,y,z):在默認(rèn)區(qū)域0<t<2π內(nèi)繪制由參數(shù)方程x=x(t)、y=y(t)與z=z(t)定義的曲線。

●?ezplot3(x,y,z,[tmin,tmax]):在區(qū)域tmin<t<tmax內(nèi)繪制由參數(shù)方程x=x(t)、y=y(t)與z=z(t)定義的曲線。

●?ezplot3(…,'animate'):繪制參數(shù)方程的動(dòng)態(tài)軌跡。【例】繪制三維參數(shù)曲線。

在命令窗輸入:

>>symst;

>>ezplot3(sin(t),cos(t),t,[0,6*pi])

運(yùn)行結(jié)果如圖6-5所示。圖6-5繪制三維參數(shù)曲線圖6.6.4三維網(wǎng)格繪圖

函數(shù)ezmesh用于繪制三維網(wǎng)格圖,其調(diào)用格式如下:

●ezmesh(f):繪制二元函數(shù)f(x,y)的三維網(wǎng)格圖,f為函數(shù)f的符號(hào)表達(dá)式,默認(rèn)區(qū)域-2π<x<2π,-2π<y<2π。MATLAB將根據(jù)函數(shù)變動(dòng)的程度選擇相應(yīng)的計(jì)算柵格。如果函數(shù)f在某些柵格點(diǎn)上沒(méi)有定義,則這些點(diǎn)將不顯示。

●ezmesh(f,domain):在指定區(qū)域domain內(nèi)繪制二元函數(shù)f的三維網(wǎng)格圖,domain可以是四維向量[xmin,xmax,ymin,ymax]或二維向量[min,max]。●ezmesh(x,y,z):在默認(rèn)區(qū)域?-2π<s<2π、-2π<t<2π內(nèi)繪制由參數(shù)方程x=x(s,t)、y=y(s,t)、z=z(s,t)定義的網(wǎng)格圖。

●?ezmesh(x,y,z,[smin,smax,tmin,tmax]):在指定區(qū)域內(nèi)繪制由參數(shù)方程定義的網(wǎng)格圖。

●?ezmesh(x,y,z,[min,max]):在指定區(qū)域內(nèi)繪制由參數(shù)方程定義的網(wǎng)格圖。

●ezmesh(…,n):用指定的n×n個(gè)柵格點(diǎn)在默認(rèn)區(qū)域內(nèi)繪制函數(shù)f的網(wǎng)格圖。n的默認(rèn)值為60。

●?ezmesh(…,'circ'):在一圓形區(qū)域內(nèi)畫(huà)出函數(shù)f的網(wǎng)格圖。函數(shù)ezmeshc用于同時(shí)繪制三維網(wǎng)格圖與等高線圖,其調(diào)用格式與函數(shù)ezmesh類似。例如繪制如下函數(shù)表達(dá)式的網(wǎng)格圖。

【例】

繪制三維網(wǎng)格圖。在命令窗輸入:

>>symsxy

>>ezmesh(y/(1+x^2+y^2),[-5,5,-2*pi,2*pi])運(yùn)行結(jié)果如圖6-6所示。圖6-6三維網(wǎng)格圖

【例】同時(shí)繪制三維網(wǎng)格圖與等高線圖。

在命令窗輸入:

>>symsxy

>>ezmeshc(y/(1+x^2+y^2),[-5,5,-2*pi,2*pi])

運(yùn)行結(jié)果如圖6-7所示。圖6-7三維網(wǎng)格圖與等高線圖6.6.5三維表面繪圖

ezsurf函數(shù)用于繪制三維表面圖,其調(diào)用格式如下:

●?ezsurf(f):繪制二元函數(shù)f(x,y)的三維表面圖,f為函數(shù)f的符號(hào)表達(dá)式,默認(rèn)區(qū)域-2π<x<2π,-2π<y<2π。MATLAB將根據(jù)函數(shù)變動(dòng)的程度選擇相應(yīng)的計(jì)算柵格。如果函數(shù)f在某些柵格點(diǎn)上沒(méi)有定義,則這些點(diǎn)將不顯示。●ezsurf(f,domain):在指定區(qū)域domain內(nèi)繪制二元函數(shù)f的三維表面圖,domain可以是四維向量[xmin,xmax,ymin,ymax]或二維向量[min,max]。

●ezsurf(x,?y,?z):在默認(rèn)區(qū)域?-2π<s<2π、-2π<t<2π內(nèi)繪制由參數(shù)方程x=x(s,?t)、y=y(s,t)、z=z(s,t)定義的表面圖。

●ezsurf(x,y,z,[smin,smax,tmin,tmax]):在指定區(qū)域內(nèi)繪制由參數(shù)方程定義的表面圖。

●ezsurf(x,y,z,[min,max]):在指定區(qū)域內(nèi)繪制由參數(shù)方程定義的表面圖?!馿zsurf(…,n):用指定n×n個(gè)柵格點(diǎn)在默認(rèn)區(qū)域內(nèi)繪制函數(shù)f的表面圖。n的默認(rèn)值為60。

●ezsurf(…,‘circ’):在一圓形區(qū)域內(nèi)畫(huà)出函數(shù)f的表面圖。

函數(shù)ezsurfc用于同時(shí)繪制三維表面圖與等高線圖,其調(diào)用格式與函數(shù)ezsurf類似。例如繪制如下函數(shù)表達(dá)式的表面圖。【例】繪制三維表面圖。

在命令窗輸入:

>>symsxy

>>ezsurf(y/(1+x^2+y^2),[-5,5,-2*pi,2*pi],35)

運(yùn)行結(jié)果如圖6-8所示。圖6-8三維表面圖【例】同時(shí)繪制三維表面圖與等高線圖。

在命令窗輸入:

>>symsxy

>>ezsurfc(y/(1+x^2+y^2),[-5,5,-2*pi,2*pi],35)

運(yùn)行結(jié)果如圖6-9所示。圖6-9三維表面圖與等高線圖6.6.6等高線繪圖

函數(shù)ezcontour用于繪制函數(shù)的等高線,其調(diào)用格式如下:

●ezcontour(f):繪制二元函數(shù)f(x,y)的等高線圖,f為函數(shù)f的符號(hào)表達(dá)式,默認(rèn)區(qū)域-2π<x<2π,-2π<y<2π。MATLAB將根據(jù)函數(shù)變動(dòng)的程度選擇相應(yīng)的計(jì)算柵格。如果函數(shù)f在某些柵格點(diǎn)上沒(méi)有定義,則這些點(diǎn)將不顯示。

●?ezcontour(f,domain):在指定區(qū)域domain內(nèi)繪制二元函數(shù)f的等高線圖,domain可以是四維向量[xmin,xmax,ymin,ymax]或二維向量[min,max]?!馿zcontour(…,n):用指定n×n個(gè)柵格點(diǎn)在默認(rèn)區(qū)域內(nèi)繪制函數(shù)f的等高線圖。n的默認(rèn)值為60。

函數(shù)ezcontourf用于繪制函數(shù)的等高線并以不同顏色填充,其調(diào)用格式與函數(shù)ezcontour類似。例如繪制如下函數(shù)表達(dá)式的等高線圖。

【例】繪制等高線圖。

在命令窗輸入:

>>symsxy

>>f=3*(1-x)^2*exp(-(x^2)-(y+1)^2)...

-10*(x/5-x^3-y^5)*exp(-x^2-y^2)...

-1/3*exp(-(x+1)^2-y^2);

>>ezcontour(f,[-3,3],49)

運(yùn)行結(jié)果如圖6-10所示。圖6-10等高線圖

【例】繪制等高線圖并以不同顏色填充。

在命令窗輸入:

>>symsxy

>>f=3*(1-x)^2*exp(-(x^2)-(y+1)^2)...

-10*(x/5-x^3-y^5)*exp(-x^2-y^2)...

-1/3*exp(-(x+1)^2-y^2);

>>ezcontourf(f,[-3,3],49)

運(yùn)行結(jié)果如圖6-11所示。圖6-11有填充色的等高線圖6.7.1maple函數(shù)

maple函數(shù)為用戶提供了直接調(diào)用Maple函數(shù)的途徑。該函數(shù)的輸入?yún)⒘繛閟ym對(duì)象、字符串或double類型的數(shù),返回值為對(duì)應(yīng)于輸入類型的sym對(duì)象、字符串或double類型數(shù)。利用maple函數(shù)也可以對(duì)自行開(kāi)發(fā)的符號(hào)數(shù)學(xué)程序進(jìn)行調(diào)試。6.7調(diào)用Maple函數(shù)

maple函數(shù)的調(diào)用格式如下:

●?r=maple(‘statement’):將statement傳遞給Maple內(nèi)核,且返回計(jì)算結(jié)果。必要時(shí)可以在statement后面加分號(hào)(;)。

●?maple('function',arg1,arg2,…):接受任何帶引號(hào)的與輸入?yún)⒘肯嚓P(guān)的Maple函數(shù)名'function',必要時(shí)將輸入?yún)⒘哭D(zhuǎn)換為符號(hào)表達(dá)式并且函數(shù)通過(guò)給定參量調(diào)用。如果輸入?yún)⒘繛閟yms,則maple返回一個(gè)sym類型的結(jié)果,否則返回一個(gè)char類型的結(jié)果?!?[r,status]=maple(…):有條件地返回警告/錯(cuò)誤信息。如果語(yǔ)句執(zhí)行成功,則r為計(jì)算結(jié)果且status為0;如果語(yǔ)句執(zhí)行失敗,則r為相應(yīng)的警告/錯(cuò)誤信息,而status為一正整數(shù)。

●?maple(‘traceon’)或mapletraceon:顯示所有后續(xù)Maple語(yǔ)句及其相應(yīng)結(jié)果。

●?maple('traceoff')或mapletraceoff:關(guān)閉上面的操作特性?!纠坑?jì)算最小公因數(shù)和最小公因式。

在命令窗輸入:

>>num1=maple(‘gcd(14,21)’)

xy1=maple(‘gcd(x^2-y^2,x^3-y^3)’)

運(yùn)行結(jié)果:

num1=

7

xy1=

-y+x6.7.2mfun函數(shù)

mfun函數(shù)的調(diào)用格式為mfun(‘function’,par1,par2,par3,par4)。計(jì)算Maple中的已知數(shù)學(xué)函數(shù)function,返回值為數(shù)值量。每個(gè)參量par為對(duì)應(yīng)function的數(shù)值量。用戶可以輸入的參量最多不超過(guò)4個(gè)。最后指定的參量可以是矩陣,通常對(duì)應(yīng)于X。其他參量的維數(shù)取決于function的Maple規(guī)范。用戶可以通過(guò)以下命令獲得Maple函數(shù)的相關(guān)參數(shù)信息:

●?helpmfunlist;

●?mhelpfunction。

Maple用16位精度計(jì)算function,其結(jié)果的每個(gè)元素為MATLAB數(shù)值量。function中的任何奇異值將返回NaN。

【例】使用mfun函數(shù)。

在命令窗輸入:

>>mfun(‘FresnelC’,0:5)

mfun('Chi',[3*i0])運(yùn)行結(jié)果:

ans=

00.77990.48830.60570.49840.5636

ans=

0.1196+1.5708iNaN+NaNi6.7.3sym函數(shù)

本小節(jié)將給出利用Maple階乘函數(shù)計(jì)算階乘的例子。計(jì)算階乘時(shí)首先要通過(guò)sym函

溫馨提示

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

評(píng)論

0/150

提交評(píng)論