第3章 MATLAB符號計(jì)算_第1頁
第3章 MATLAB符號計(jì)算_第2頁
第3章 MATLAB符號計(jì)算_第3頁
第3章 MATLAB符號計(jì)算_第4頁
第3章 MATLAB符號計(jì)算_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、3.1符號符號表達(dá)式的建立表達(dá)式的建立3.2符號表達(dá)式的代數(shù)運(yùn)算符號表達(dá)式的代數(shù)運(yùn)算3.3符號表達(dá)式中自由變量的確定符號表達(dá)式中自由變量的確定3.4符號極限、微積分和級數(shù)求和符號極限、微積分和級數(shù)求和3.5符號積分變換符號積分變換3.6符號方程的求解符號方程的求解3.7符號函數(shù)的可視化符號函數(shù)的可視化符號運(yùn)算與數(shù)值運(yùn)算的區(qū)別主要有以下幾點(diǎn)。(1)傳統(tǒng)的數(shù)值型運(yùn)算受到計(jì)算機(jī)保留的有效位數(shù)的限制,它的內(nèi)部表示法采用計(jì)算機(jī)硬件提供的8位浮點(diǎn)表示法,每一次運(yùn)算都會有一定的截?cái)嗾`差,重復(fù)的多次數(shù)值運(yùn)算可能會造成巨大的累積誤差。符號運(yùn)算不需要進(jìn)行數(shù)值運(yùn)算,不會出現(xiàn)截?cái)嗾`差,由此可見符號運(yùn)算是非常準(zhǔn)確的。(

2、2)符號運(yùn)算可以得出完全的封閉解或任意精度的數(shù)值解。(3)符號運(yùn)算的時(shí)間較長,而數(shù)值型運(yùn)算速度快。符號常量是不含變量的符號表達(dá)式,用sym命令創(chuàng)建符號常量。語法:sym(常量)%創(chuàng)建符號常量例如,創(chuàng)建符號常量,這種用sym命令的方式可以表示絕對準(zhǔn)確的符號數(shù)值:a=sym(sin(2)a=sin(2)sym命令也可以把數(shù)值轉(zhuǎn)換成為某種格式的符號常量。語法:sym(常量,參數(shù))%把常量按某種格式轉(zhuǎn)換為符號常量說明:參數(shù)可以選擇為d、f、e或r4種格式,也可省略,其作用如表3.1所示。參 數(shù)作 用d返回最接近的十進(jìn)制數(shù)(默認(rèn)位數(shù)為32位)f返回該符號值最接近的浮點(diǎn)表示r返回該符號值最接近的有理數(shù)型(

3、為系統(tǒng)默認(rèn)方式),可表示為p/q、p*q、10q、pi/q、2q和sqrt(p)形式之一e返回最接近的帶有機(jī)器浮點(diǎn)誤差的有理值【例3.1】創(chuàng)建數(shù)值常量和符號常量。a1=2*sqrt(5)+pi%創(chuàng)建數(shù)值常量a1=7.6137a2=sym(2*sqrt(5)+pi)%創(chuàng)建符號常量a2=pi+2*5(1/2)a3=sym(2*sqrt(5)+pi)%按最接近的有理數(shù)型表示符號常量a3=2143074082783949/281474976710656a4=sym(2*sqrt(5)+pi,d)%按最接近的十進(jìn)制浮點(diǎn)數(shù)表示符號常量a4=7.6137286085893727261009189533070

4、a31=a3a1%數(shù)值常量和符號常量的計(jì)算a31=0a5=2*sqrt(5)+pi%字符串常量a5=2*sqrt(5)+pi可以通過工作空間查看各變量的數(shù)據(jù)類型和存儲空間,工作空間窗口如圖3.1所示。1使用使用sym命令創(chuàng)建符號變量和表達(dá)式命令創(chuàng)建符號變量和表達(dá)式語法:sym(變量,參數(shù))%把變量定義為符號對象說明:參數(shù)用來設(shè)置限定符號變量的數(shù)學(xué)特性,可以選擇為positive、real和unreal。positive表示為“正、實(shí)”符號變量;real表示為“實(shí)”符號變量;unreal表示為“非實(shí)”符號變量。如果不限定則參數(shù)可省略?!纠?.2】創(chuàng)建符號變量,用參數(shù)設(shè)置其特性。symsxyrea

5、l%創(chuàng)建實(shí)數(shù)符號變量z=x+i*y;%創(chuàng)建z為復(fù)數(shù)符號變量real(z)%復(fù)數(shù)z的實(shí)部是實(shí)數(shù)xans=xsym(x,unreal);%清除符號變量的實(shí)數(shù)特性real(z)%復(fù)數(shù)z的實(shí)部ans=x/2+conj(x)/2程序分析:設(shè)置x、y為實(shí)數(shù)型變量,可以確定z的實(shí)部和虛部。語法:sym(表達(dá)式)%創(chuàng)建符號表達(dá)式【例3.2續(xù)】創(chuàng)建符號表達(dá)式。f1=sym(a*x2+b*x+c)f1=a*x2+b*x+c2使用使用syms命令創(chuàng)建符號變量和符號表達(dá)式命令創(chuàng)建符號變量和符號表達(dá)式語法:syms(arg1,arg2,參數(shù))%把字符變量定義為符號變量symsarg1arg2,參數(shù)%把字符變量定義為符號

6、變量的簡潔形式說明:syms用來創(chuàng)建多個(gè)符號變量,以上兩種方式創(chuàng)建的符號對象是相同的。參數(shù)設(shè)置和前面的sym命令相同,省略時(shí)符號表達(dá)式直接由各符號變量組成?!纠?.2續(xù)】使用syms命令創(chuàng)建符號變量和符號表達(dá)式。symsabcx%創(chuàng)建多個(gè)符號變量f2=a*x2+b*x+c%創(chuàng)建符號表達(dá)式f2=a*x2+b*x+csyms(a,b,c,x)f3=a*x2+b*x+c;%創(chuàng)建符號表達(dá)式用sym和syms命令也可以創(chuàng)建符號矩陣。例如,使用sym命令創(chuàng)建的符號矩陣。A=sym(a,b;c,d)A=a,bc,d例如,使用syms命令創(chuàng)建相同的符號矩陣。symsabcdA=ab;cdA=a,bc,d【例3

7、.3】比較符號矩陣與字符串矩陣的不同。A=sym(a,b;c,d)%創(chuàng)建符號矩陣A=a,bc,dB=a,b;c,d%創(chuàng)建字符串矩陣B=a,b;c,dC=a,b;c,d%創(chuàng)建數(shù)值矩陣?Undefinedfunctionorvariablea.程序分析:由于數(shù)值變量a、b、c、d未事先賦值,MATLAB給出錯誤信息。C=sym(B)%轉(zhuǎn)換為符號矩陣C=a,bc,dwhosNameSizeByteClassA2x260symB1x918charC2x260symGrandtotalis25elementsusing642Byte程序分析:查看符號矩陣A,可以看到22的符號矩陣,占用較多的Byte。3

8、.2.1 符號表達(dá)式的代數(shù)運(yùn)算符號表達(dá)式的代數(shù)運(yùn)算1符號運(yùn)算中的運(yùn)算符符號運(yùn)算中的運(yùn)算符符號運(yùn)算中的運(yùn)算符有以下2種。(1)基本運(yùn)算符。運(yùn)算符“”、“”、“*”、“”、“/”、“”分別實(shí)現(xiàn)符號矩陣的加、減、乘、左除、右除、求冪運(yùn)算。運(yùn)算符“.*”、“./”、“.”、“.”分別實(shí)現(xiàn)符號數(shù)組的乘、左除、右除、求冪,即數(shù)組間元素與元素的運(yùn)算。運(yùn)算符“”、“.”分別實(shí)現(xiàn)符號矩陣的共軛轉(zhuǎn)置、非共軛轉(zhuǎn)置。(2)關(guān)系運(yùn)算符。在符號對象的比較中,沒有“大于”、“大于等于”、“小于”、“小于等于”的概念,只有是否“等于”的概念。運(yùn)算符“=”、“=”分別對運(yùn)算符兩邊的符號對象進(jìn)行“相等”、“不等”的比較。當(dāng)為“真

9、”時(shí),比較結(jié)果用1表示;當(dāng)為“假”時(shí),比較結(jié)果則用0表示。2函數(shù)運(yùn)算函數(shù)運(yùn)算函數(shù)運(yùn)算有以下幾種。(1)三角函數(shù)和雙曲函數(shù)。三角函數(shù)包括sin、cos、tan;雙曲函數(shù)包括sinh、cosh、tanh;三角反函數(shù)除了atan2函數(shù)僅能用于數(shù)值計(jì)算外,其余asin、acos、atan函數(shù)在符號運(yùn)算中與數(shù)值計(jì)算的使用方法相同。(2)指數(shù)和對數(shù)函數(shù)。在符號計(jì)算中,指數(shù)函數(shù)sqrt、exp、expm的使用方法與數(shù)值計(jì)算的使用方法完全相同;對數(shù)函數(shù)在符號計(jì)算中只有自然對數(shù)log(表示ln),而沒有數(shù)值計(jì)算中的log2和log10。(3)復(fù)數(shù)函數(shù)。在符號計(jì)算中,復(fù)數(shù)的共軛conj、求實(shí)部real、求虛部im

10、ag和求模abs函數(shù)與數(shù)值計(jì)算中的使用方法相同。但注意,在符號計(jì)算中,MATLAB沒有提供求相角的命令。(4)矩陣代數(shù)命令。在符號計(jì)算中,MATLAB提供的常用矩陣代數(shù)命令有diag、triu、tril、inv、det、rank、poly、expm和eig等,它們的用法幾乎與數(shù)值計(jì)算中的情況完全一樣?!纠?.4】求矩陣的行列式值、非共軛轉(zhuǎn)置和特征值。symsa11a12a21a22A=a11a12;a21a22%創(chuàng)建符號矩陣A=a11,a12a21,a22det(A)%計(jì)算行列式ans=a11*a22a12*a21A.%計(jì)算非共軛轉(zhuǎn)置ans=a11,a21a12,a22eig(A)%計(jì)算特征值

11、ans=1/2*a22+1/2*a11+1/2*(a2222*a11*a22+a112+4*a12*a21)(1/2)1/2*a22+1/2*a111/2*(a2222*a11*a22+a112+4*a12*a21)(1/2)11122122aaaaA【例3.5】符號表達(dá)式f=2x2+3x+4與g=5x+6的代數(shù)運(yùn)算。f=sym(2*x2+3*x+4)f=2*x2+3*x+4g=sym(5*x+6)g=5*x+6f+g%符號表達(dá)式相加ans=2*x2+8*x+10f*g%符號表達(dá)式相乘ans=(5*x+6)*(2*x2+3*x+4)1Symbolic Math Toolbox中的算術(shù)運(yùn)算方式中

12、的算術(shù)運(yùn)算方式在SymbolicMathToolbox中有3種不同的算術(shù)運(yùn)算。(1)數(shù)值型:MATLAB的浮點(diǎn)運(yùn)算。(2)有理數(shù)型:精確符號運(yùn)算。(3)VPA型:任意精度運(yùn)算。2任意精度控制任意精度控制任意精度的VPA型運(yùn)算可以使用digits和vpa命令來實(shí)現(xiàn)。語法:digits(n)%設(shè)定默認(rèn)的精度說明:n為所期望的有效位數(shù)。digits函數(shù)可以通過改變默認(rèn)的有效位數(shù)來改變精度,隨后,每次進(jìn)行Maple函數(shù)計(jì)算時(shí)都以新精度為準(zhǔn)。當(dāng)有效位數(shù)增加時(shí),計(jì)算時(shí)間和占用的內(nèi)存也增加。digits命令用來顯示默認(rèn)的有效位數(shù),默認(rèn)為32位。語法:S=vpa(s,n)%將s表示為n位有效位數(shù)的符號對象說明

13、:s可以是數(shù)值對象或符號對象,但計(jì)算的結(jié)果S一定是符號對象;當(dāng)參數(shù)n省略時(shí)則以給定的digits指定精度?!纠?.6】對表達(dá)式進(jìn)行任意精度控制的比較。a=sym(2*sqrt(5)+pi)a=pi+2*5(1/2)digits%顯示默認(rèn)的有效位數(shù)Digits=32vpa(a)%用默認(rèn)的位數(shù)計(jì)算并顯示ans=7.6137286085893726312809907207421vpa(a,20)%按指定的精度計(jì)算并顯示ans=7.6137286085893726313digits(15)%改變默認(rèn)的有效位數(shù)vpa(a)%按digits指定的精度計(jì)算并顯示ans=7.613728608589373Sy

14、mbolic Math Toolbox中的中的3種運(yùn)算方式的比較種運(yùn)算方式的比較【例3.6續(xù)】用3種運(yùn)算方式表達(dá)式比較2/3的結(jié)果。a1=2/3%數(shù)值型a1=0.6667a2=sym(2/3)%有理數(shù)型a2=2/3digitsDigits=32a3=vpa(2/3,32)%VPA型a3=.66666666666666666666666666666667程序分析:(1)3種運(yùn)算方式中數(shù)值型運(yùn)算的速度最快。(2)有理數(shù)型符號運(yùn)算的計(jì)算時(shí)間最長和占用內(nèi)存最大,產(chǎn)生的結(jié)果非常準(zhǔn)確。(3)VPA型的任意精度符號運(yùn)算比較靈活,可以設(shè)置任意有效精度,當(dāng)保留的有效位數(shù)增加時(shí),每次運(yùn)算的時(shí)間和使用的內(nèi)存也會增加

15、。(4)數(shù)值型變量a1結(jié)果顯示的有效位數(shù)并不是存儲的有效位數(shù),在本書第1章中曾介紹顯示的有效位數(shù)由“format”命令控制,如下面修改的format命令就改變了顯示的有效位數(shù):formatlonga1a1=0.666666666666671將數(shù)值對象轉(zhuǎn)換為符號對象將數(shù)值對象轉(zhuǎn)換為符號對象前面已經(jīng)介紹了sym命令可以把數(shù)值型對象轉(zhuǎn)換成為有理數(shù)型符號對象,vpa命令可以將數(shù)值型對象轉(zhuǎn)換為任意精度的VPA型符號對象。2將符號對象轉(zhuǎn)換為數(shù)值對象將符號對象轉(zhuǎn)換為數(shù)值對象使用double函數(shù)可以將有理數(shù)型和VPA型符號對象轉(zhuǎn)換成為數(shù)值對象。語法:N=double(S)%將符號變量S轉(zhuǎn)換為數(shù)值變量N【例3.

16、7】將符號變量與數(shù)值變量進(jìn)行轉(zhuǎn)換。a1=sym(2*sqrt(5)+pi)a=pi+2*5(1/2)b1=double(a1)%轉(zhuǎn)換為數(shù)值變量b1=7.6137a2=vpa(sym(2*sqrt(5)+pi),32)a2=7.6137286085893726312809907207421b2=double(a2)%轉(zhuǎn)換為數(shù)值變量b2=7.6137【例3.7續(xù)】由符號變量得出數(shù)值結(jié)果。b3=eval(a1)b3=7.6137用“whos”命令查看變量的類型,可以看到b1、b2、b3都可以轉(zhuǎn)換為雙精度型。whosNameSizeByteClassa11x160syma21x160symb11x18

17、doubleb21x18doubleb31x18double3.3.1 符號表達(dá)式中自由變量的確定符號表達(dá)式中自由變量的確定1自由變量的確定原則自由變量的確定原則當(dāng)符號表達(dá)式中含有多于1個(gè)的符號變量時(shí),如“f=ax2+bx+c”和“f=x2+y2”,則只有1個(gè)變量是獨(dú)立變量,其余的符號變量當(dāng)作常量處理。如果不指定哪1個(gè)變量是自由變量,MATLAB將基于以下幾個(gè)原則選擇1個(gè)自由變量。(1)小寫字母i和j不能作為自由變量。(2)符號表達(dá)式中如果有多個(gè)符號變量,則按照以下順序選擇自由變量:首先選擇x作為自由變量;如果沒有x,則選擇在字母順序中最接近x的字符變量;如果與x相同距離,則在x后面的優(yōu)先。(

18、3)大寫字母比所有小寫字母都靠后。例如:x2+a*x+b的自由符號變量是x;a*(sin(t)+b*cos(w*t)的自由符號變量是w;a*theta的自由符號變量是theta;i+a*j的自由符號變量是a。2symvar函數(shù)函數(shù)symvar函數(shù)用來決定表達(dá)式中的符號變量。語法:symvar(EXPR)%確定自由符號變量symvar函數(shù)列出表達(dá)式中除了i,j,pi,inf,nan,eps和函數(shù)名之外的符號變量,返回值是元胞數(shù)組?!纠?.8】得出符號表達(dá)式中的符號變量。f=sym(a*x2+b*x+c)f=a*x2+b*x+cs=symvar(f)%得出所有的符號變量s=a,b,c,xs1=sy

19、mvar(f,1)%得出第1個(gè)符號變量s1=xsymvarcos(pi*x-beta1)ans=beta1x3findsym函數(shù)函數(shù)如果不確定符號表達(dá)式中的自由符號變量,則可以用findsym函數(shù)自動確定。語法:findsym(EXPR,n)說明:EXPR可以是符號表達(dá)式或符號矩陣;n為按順序得出符號變量的個(gè)數(shù),當(dāng)n省略時(shí),則不按順序得出EXPR中所有的符號變量。g=sym(sin(z)+cos(v);findsym(g,1)%得出第1個(gè)符號變量ans=z程序說明:符號變量z和v距離x相同,所以在x后面的z為自由符號變量。同一個(gè)數(shù)學(xué)函數(shù)的符號表達(dá)式可以表示成為3種形式,如以下的f(x)可以分別

20、表示如下。(1)多項(xiàng)式形式的表達(dá)方式:f(x)=x3+6x2+11x6(2)因式形式的表達(dá)方式:f(x)=(x1)(x2)(x3)(3)嵌套形式的表達(dá)方式:f(x)=x(x(x6)+11)6【例3.9】3種形式的符號表達(dá)式的表示。f=sym(x36*x2+11*x6)%多項(xiàng)式形式f=x36*x2+11*x6g=sym(x1)*(x2)*(x3)%因式形式g=(x1)*(x2)*(x3)h=sym(x*(x*(x6)+11)6)%嵌套形式h=x*(x*(x6)+11)6MATLAB提供了pretty、collect、expand、horner和factor函數(shù),可以對符號表達(dá)式進(jìn)行化簡,如表3.

21、2所示。函 數(shù) 名變 換 前變 換 后備 注prettyx36*x2+11*x63 2x + 6 x + 11 x 6給出排版形式的輸出結(jié)果collect(x1)*(x2)*(x3)x36*x2+11*x6表示為合并同類項(xiàng)多項(xiàng)式expand(x1)*(x2)*(x3)x36*x2+11*x6表示為多項(xiàng)式形式hornerx36*x2+11*x6x*(x*(x6)+11) 6表示為嵌套的形式factorx36*x2+11*x6(x1)*(x2)*(x3)表示為因式的形式1simplify函數(shù)函數(shù)simplify函數(shù)功能強(qiáng)大,利用各種形式的代數(shù)恒等式對符號表達(dá)式進(jìn)行化簡,包括求和、分解、積分、冪、三

22、角、指數(shù)和對數(shù)函數(shù)等?!纠?.10】利用三角函數(shù)簡化符號表達(dá)式cos2xsin2x。y=sym(cos(x)2sin(x)2)y=cos(x)2sin(x)2simplify(y)ans=2*cos(x)212simple函數(shù)函數(shù)simple函數(shù)給出多種簡化形式,給出除了pretty、collect、expand、factor、simplify簡化形式之外的radsimp、combine、combine(trig)、convert形式,并尋求包含最少數(shù)目字符的表達(dá)式簡化形式?!纠?.10續(xù)】利用simple簡化符號表達(dá)式cos2xsin2x。程序分析:得出最簡化的符號表達(dá)式為“cos(2*x)

23、”。1subexpr函數(shù)函數(shù)符號表達(dá)式有時(shí)因?yàn)樽颖磉_(dá)式多次出現(xiàn)而顯得煩冗,可以通過使用subexpr函數(shù)替換子表達(dá)式來化簡。語法:subexpr(s,s1)%用符號變量s1置換s中的子表達(dá)式subexpr函數(shù)對子表達(dá)式是自動尋找的,只有比較長的子表達(dá)式才被置換,比較短的子表達(dá)式,即使重復(fù)出現(xiàn)多次,也不被置換。2subs函數(shù)函數(shù)subs函數(shù)可用來進(jìn)行對符號表達(dá)式中符號變量的替換。語法:subs(s)%用給定值替換符號表達(dá)式s中的所有變量subs(s,new)%用new替換符號表達(dá)式s中的自由變量subs(s,old,new)%用new替換符號表達(dá)式s中的old變量1求反函數(shù)求反函數(shù)對于函數(shù)f(x

24、),若存在另一個(gè)函數(shù)g(.),使得g(f(x)x成立,則函數(shù)g(.)稱為函數(shù)f(x)的反函數(shù)。在MATLAB中,finverse函數(shù)可以求得符號函數(shù)的反函數(shù)。語法:finverse(f,v)%對指定自變量v的函數(shù)f(v)求反函數(shù)說明:若v省略,則對默認(rèn)的自由符號變量求反函數(shù)。【例3.12】求tex的反函數(shù)。f=sym(t*ex)%原函數(shù)f=t*exg=finverse(f)%對默認(rèn)自由變量求反函數(shù)g=log(x/t)/log(e)g=finverse(f,t)%對t求反函數(shù)g=t/(ex)程序分析:如果先定義t為符號變量,則參數(shù)t的單引號可去掉。symstg=finverse(f,t)2求復(fù)合

25、函數(shù)求復(fù)合函數(shù)運(yùn)用函數(shù)compose可以求符號函數(shù)f(x)和g(y)的復(fù)合函數(shù)。語法:compose(f,g)%求f(x)和g(y)的復(fù)合函數(shù)f(g(y)compose(f,g,z)%求f(x)和g(y)的復(fù)合函數(shù)f(g(z)【例3.12續(xù)】計(jì)算tex與ay2+by+c的復(fù)合函數(shù)。f=sym(t*ex);%創(chuàng)建符號表達(dá)式g=sym(a*y2+b*y+c);%創(chuàng)建符號表達(dá)式h1=compose(f,g)%計(jì)算f(g(x)h1=t*e(a*y2+b*y+c)h2=compose(g,f)%計(jì)算g(f(x)h2=a*t2*(ex)2+b*ex+ch3=compose(f,g,z)%計(jì)算f(g(z)h

26、3=t*e(a*z2+b*z+c)語法:compose(f,g,x,z)%以x為自變量構(gòu)成復(fù)合函數(shù)f(g(z)compose(f,g,x,y,z)%以x為自變量構(gòu)成復(fù)合函數(shù)f(g(z),并用z替換y【例3.12續(xù)】計(jì)算得出tex與y2的復(fù)合函數(shù)。f1=sym(t*ex);g1=sym(y2);h1=compose(f1,g1)h1=t*e(y2)h2=compose(f1,g1,z)%計(jì)算f(g(z)h2=t*e(z2)h3=compose(f1,g1,t,y)%以t為自變量計(jì)算f(g(z)h3=y2*exh4=compose(f1,g1,t,y,z)%以t為自變量計(jì)算f(g(z),并用z替換

27、yh4=z2*exh5=subs(h3,y,z)%用替換的方法實(shí)現(xiàn)h5與h4有相同結(jié)果h5=(z)2*ex1符號表達(dá)式與多項(xiàng)式的轉(zhuǎn)換符號表達(dá)式與多項(xiàng)式的轉(zhuǎn)換(1)sym2poly函數(shù)。sym2poly函數(shù)用來將構(gòu)成多項(xiàng)式的符號表達(dá)式轉(zhuǎn)換為按降冪排列的行向量?!纠?.13】將符號表達(dá)式2x+3x2+1轉(zhuǎn)換為行向量。f=sym(2*x+3*x2+1)f=2*x+3*x2+1sym2poly(f)%轉(zhuǎn)換為按降冪排列的行向量ans=321f1=sym(a*x2+b*x+c)f1=a*x2+b*x+csym2poly(f1)?Errorusing=sym/sym2polyInputhasmorethan

28、onesymbolicvariable.程序分析:只能對含有1個(gè)變量的符號表達(dá)式進(jìn)行轉(zhuǎn)換。(2)poly2sym函數(shù)。poly2sym函數(shù)與sym2poly函數(shù)相反,用來將按降冪排列的行向量轉(zhuǎn)換為符號表達(dá)式?!纠?.13續(xù)】將行向量轉(zhuǎn)換為符號表達(dá)式。g=poly2sym(132)%默認(rèn)x為符號變量的符號表達(dá)式g=x2+3*x+2g=poly2sym(132,sym(y)%y為符號變量的符號表達(dá)式g=y2+3*y+22提取分子和分母提取分子和分母如果符號表達(dá)式是1個(gè)有理分式(兩個(gè)多項(xiàng)式之比),可以利用numden函數(shù)提取分子或分母,還可以進(jìn)行通分。語法:n,d=numden(f)說明:n為分子;

29、d為分母;f為有理分式?!纠?.14】用numden函數(shù)提取符號表達(dá)式和的分子、分母。f1=sym(1/(s2+3*s+2)f1=1/(s2+3*s+2)f2=sym(1/s2+3*s+2)f2=1/s2+3*s+2n1,d1=numden(f1)n1=1d1=s2+3*s+2n2,d2=numden(f2)n2=1+3*s3+2*s2d2=s23.4.1 符號極限符號極限假定符號表達(dá)式的極限存在,SymbolicMathToolbox提供了直接求表達(dá)式極限的函數(shù)limit,函數(shù)limit的基本用法如表3.3所示。表 達(dá) 式函 數(shù) 格 式說 明limt(f)對x求趨近于0的極限 limt(f,

30、x,a)對x求趨近于a的極限,當(dāng)左、右極限不相等時(shí)極限不存在limt(f,x,a, left)對x求左趨近于a的極限 limt(f,x,a, right)對x求右趨近于a的極限0lim( )xf xlim( )xaf xlim( )xaf xlim( )xaf x【例3.15】分別求1/x在0處從兩邊趨近、從左邊趨近和從右邊趨近的3個(gè)極限值。f=sym(1/x)f=1/xlimit(f)%對x求趨近于0的極限ans=NaNlimit(f,x,0)%對x求趨近于0的極限ans=NaNlimit(f,x,0,left)%左趨近于0ans=inflimit(f,x,0,right)%右趨近于0ans

31、=inf程序分析:當(dāng)左、右極限不相等時(shí),表達(dá)式的極限不存在,為NaN。采用極限方法也可以求函數(shù)的導(dǎo)數(shù):?!纠?.15續(xù)】求函數(shù)cos(x)的導(dǎo)數(shù)。symstxlimit(cos(x+t)cos(x)/t,t,0)ans=sin(x)0()( )( )limtf xtf xfxt函數(shù)diff是用來求符號表達(dá)式的微分。語法:diff(f)%求f對自由變量的一階微分diff(f,t)%求f對符號變量t的一階微分diff(f,n)%求f對自由變量的n階微分diff(f,t,n)%求f對符號變量t的n階微分【例3.16】已知f(x)ax2+bx+c,求f(x)的微分。f=sym(a*x2+b*x+c)f

32、=a*x2+b*x+cdiff(f)%對默認(rèn)自由變量x求一階微分ans=2*a*x+bdiff(f,a)%對符號變量a求一階微分ans=x2diff(f,x,2)%對符號變量x求二階微分ans=2*adiff(f,3)%對默認(rèn)自由變量x求三階微分ans=0微分函數(shù)diff也可以用于符號矩陣,其結(jié)果是對矩陣的每一個(gè)元素進(jìn)行微分運(yùn)算?!纠?.16續(xù)】對符號矩陣求微分。symstxg=2*xt2;t*sin(x)exp(x)%創(chuàng)建符號矩陣g=2*x,t2t*sin(x),exp(x)diff(g)%對默認(rèn)自由變量x求一階微分ans=2,0t*cos(x),exp(x)diff(g,t)%對符號變量t

33、求一階微分ans=0,2*tsin(x),0diff(g,2)%對默認(rèn)自由變量x求二階微分ans=0,0t*sin(x),exp(x)22sin( )exxttx【例3.16續(xù)】可以使用diff計(jì)算向量間元素的差值。x1=0:0.5:2;y1=sin(x1)y1=00.47940.84150.99750.9093diff(y1)%計(jì)算元素差ans=0.47940.36200.15600.0882程序分析:計(jì)算出的差值比原來的向量少1列。積分分為定積分和不定積分。運(yùn)用函數(shù)int可以求得符號表達(dá)式的積分,即找出一個(gè)符號表達(dá)式F,使得diff(F)=f,也可以說是求微分的逆運(yùn)算。語法:int(f,t

34、)%求符號變量t的不定積分int(f,t,a,b)%求符號變量t的積分int(f,t,m,n)%求符號變量t的積分說明:t為符號變量,若t省略則為默認(rèn)自由變量;a和b為數(shù)值,a,b為積分區(qū)間;m和n為符號對象,m,n為積分區(qū)間。與符號微分相比,符號積分復(fù)雜得多。函數(shù)的積分有時(shí)可能不存在,即使存在,也可能由于限于很多條件,MATLAB無法順利得出。當(dāng)MATLAB不能找到積分時(shí),它將給出警告提示并返回該函數(shù)的原表達(dá)式?!纠?.17】求和的積分。f=sym(cos(x);int(f)%求不定積分ans=sin(x)int(f,0,pi/3)%求定積分ans=1/2*3(1/2)int(f,a,b)%

35、求定積分ans=sin(b)sin(a)int(int(f)%求多重積分ans=cos(x)diff和int命令也可以直接對字符串f進(jìn)行運(yùn)算。f=cos(x);則微積分計(jì)算的結(jié)果是一樣的。和符號微分diff一樣,對符號矩陣的積分也是將各個(gè)元素逐個(gè)進(jìn)行積分?!纠?.17續(xù)】求符號矩陣的積分。symstxg=2*xt2;t*sin(x)exp(x)%創(chuàng)建符號矩陣g=2*x,t2t*sin(x),exp(x)int(g)%對x求不定積分ans=x2,t2*xt*cos(x),exp(x)int(g,t)%對t求不定積分ans=2*x*t,1/3*t31/2*t2*sin(x),exp(x)*tint

36、(g,sym(a),sym(b)%對x求定積分ans=b2-a2,-t2*(a-b)t*(cos(a)-cos(b),exp(b)-exp(a)22sin( )exxttx1symsum函數(shù)函數(shù)語法:symsum(s,x,a,b)%計(jì)算表達(dá)式s的級數(shù)和說明:x為自變量,若x省略則默認(rèn)為對自由變量求和;s為符號表達(dá)式;a,b為參數(shù)x的取值范圍?!纠?.18】求級數(shù)和1+x+x2+xk+的和。symsxks1=symsum(1/k2,1,10)%計(jì)算級數(shù)的前10項(xiàng)和s1=1968329/1270080s2=symsum(1/k2,1,inf)%計(jì)算級數(shù)和s2=1/6*pi2s3=symsum(xk

37、,k,0,inf)%計(jì)算對k為自變量的級數(shù)和s3=1/(x1)2taylor函數(shù)函數(shù)泰勒級數(shù)的計(jì)算使用taylor函數(shù)。語法:taylor(F,x,n)%求泰勒級數(shù)展開說明:x為自變量,F(xiàn)為符號表達(dá)式;對F進(jìn)行泰勒級數(shù)展開至n項(xiàng),若參數(shù)n省略則默認(rèn)展開前5項(xiàng)?!纠?.18續(xù)】求ex的泰勒展開式為:。symsxs1=taylor(exp(x),8)%展開前8項(xiàng)s1=1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5+1/720*x6+1/5040*x7s2=taylor(exp(x)%默認(rèn)展開前5項(xiàng)s2=1+x+1/2*x2+1/6*x3+1/24*x4+1/120*x5231

38、1111223!kxxxxk泰勒級數(shù)還可以使用可視化的泰勒級數(shù)計(jì)算器,在命令窗口中輸入命令“taylortool”,就會出現(xiàn)泰勒級數(shù)計(jì)算器窗口,如圖3.2所示。3.5.1傅里葉變換及其反變換時(shí)域中的f(t)與頻域中的Fourier變換F()之間的關(guān)系如下:j( )( )edtFf ttj1( )( )ed2tf tF1Fourier變換變換語法:Ffourier(f,t,)%求時(shí)域函數(shù)f(t)的Fourier變換F說明:返回結(jié)果F是符號變量的函數(shù),若參數(shù)省略,則默認(rèn)返回結(jié)果為的函數(shù);f為t的函數(shù),若參數(shù)t省略,則默認(rèn)自由變量為x。2Fourier反變換反變換語法:f=ifourier(F,t)

39、%求頻域函數(shù)F的Fourier反變換f(t)說明:ifourier函數(shù)的用法與fourier函數(shù)相同。【例3.19】計(jì)算f(t)=的Fourier變換F及F的Fourier反變換。symstwF=fourier(1/t,t,w)%Fourier變換F=pi*(2*heaviside(-w)-1)*if=ifourier(F,t)%Fourier反變換f=1/tf=ifourier(F)%Fourier反變換默認(rèn)x為自變量f=1/x程序分析:Heaviside(t)是單位階躍函數(shù),函數(shù)名為數(shù)學(xué)家Heaviside的名字。【例3.19續(xù)】單位階躍函數(shù)的Fourier變換。fourier(sym(1

40、)ans=2*pi*dirac(-w)程序分析:Dirac函數(shù)為單位脈沖函數(shù)。Laplace變換和反變換的定義為:0( )( )edstF sf ttcjcj1( )( )d2f tF sst1Laplace變換變換語法:F=laplace(f,t,s)%求時(shí)域函數(shù)f的Laplace變換F說明:返回結(jié)果F為s的函數(shù),若參數(shù)s省略,則返回結(jié)果F默認(rèn)為s的函數(shù);f為t的函數(shù),若參數(shù)t省略,則默認(rèn)自由變量為t?!纠?.20】求sin(at)和階躍函數(shù)的Laplace變換。symsatsF1=laplace(sin(a*t),t,s)%求sin(at)的Laplace變換F1=a/(s2+a2)F2=

41、laplace(sym(1)%求階躍函數(shù)的Laplace變換F2=1/s2Laplace反變換反變換語法:filaplace(F,s,t)%求F的Laplace反變換f【例3.21】輸入信號r(t)=1,系統(tǒng)傳遞函數(shù),C(s)=R(s)*G(s),求輸出波形c(t),輸出波形如圖3.3所示。3211)(sssG首先計(jì)算C(s),然后經(jīng)過Laplace反變換得出輸出c(t)。symstsyGRc;R=laplace(sym(1)%寫出r(t)Laplace變換R=1/sG=1/(s+1)+2/(s+3);C=R*G;c=ilaplace(C)%Laplace反變換得出c(t)的表達(dá)式c=5/3-

42、2/(3*exp(3*t)-1/exp(t)t=1:0.1:10;y=subs(c,t);%得出t對應(yīng)的y值plot(t,y)1個(gè)離散信號的Z變換和Z反變換的定義為:01( )( )( )( )nnF zf n zf nZF z1ztrans函數(shù)函數(shù)語法:Fztrans(f,n,z)%求時(shí)域序列f的Z變換F說明:返回結(jié)果F以符號變量z為自變量;若參數(shù)n省略,則默認(rèn)自變量為n;若參數(shù)z省略,則返回結(jié)果默認(rèn)為z的函數(shù)。【例3.22】求階躍函數(shù)、脈沖函數(shù)和eat的Z變換。symsanztFz1=ztrans(sym(1),n,z)%求階躍函數(shù)的Z變換Fz1=z/(z1)Fz2=ztrans(sym(

43、an),n,z)Fz2=-z/(a-z)Fz3=ztrans(exp(a*t),n,z)%求eat的Z變換Fz3=z/(exp(a*t)*(z-1)2iztrans函數(shù)函數(shù)語法:fiztrans(F,z,n)%求F的Z反變換f【例3.22續(xù)】用Z反變換驗(yàn)算階躍函數(shù)、和eat的Z變換。symsnztf1=iztrans(Fz1,z,n)f1=1f2=iztrans(2*z/(z-2)2)f2=2n+2n*(n-1)f3=iztrans(Fz3,z,n)f3=exp(a*t)22(2)zz 3.6.1 代數(shù)方程代數(shù)方程通常,代數(shù)方程包括線性(Linear)方程、非線性(Nonlinear)方程和超

44、越方程(Transcedentalequation)。當(dāng)方程不存在解析解又無其他自由參數(shù)時(shí),MATLAB可以用solve命令給出方程的數(shù)值解。語法:solve(eq,v)%求方程關(guān)于指定變量的解solve(eq1,eq2,v1,v2,)%求方程組關(guān)于指定變量的解說明:eq可以是含等號的符號表達(dá)式的方程,也可以是不含等號的符號表達(dá)式,但所指的仍是令eq=0的方程;若參數(shù)v省略,則默認(rèn)為方程中的自由變量;輸出結(jié)果為結(jié)構(gòu)數(shù)組類型?!纠?.23】求方程ax2+bx+c=0和sinx=0的解。f1=sym(a*x2+b*x+c)%無等號f1=a*x2+b*x+csolve(f1)%求方程的解xans=-

45、(b+(b2-4*a*c)(1/2)/(2*a)-(b-(b2-4*a*c)(1/2)/(2*a)f2=sym(sin(x)f2=sin(x)solve(f2,x)ans=0程序分析:當(dāng)sinx=0有多個(gè)解時(shí),只能得出0附近的有限幾個(gè)解?!纠?.24】求三元非線性方程組的解。eq1=sym(x2+2*x+1);eq2=sym(x+3*z=4);eq3=sym(y*z=1);x,y,z=solve(eq1,eq2,eq3)%解方程組并賦值給x、y、zx=1y=3/5z=5/3程序分析:輸出結(jié)果為“結(jié)構(gòu)對象”,如果最后一句為“S=solve(eq1,eq2,eq3)”,則結(jié)果如下。S=x:1x1s

46、ymy:1x1symz:1x1sym2210341xxxzyz MATLAB提供了dsolve命令,可以用于對符號常微分方程進(jìn)行求解。語法:dsolve(eq,con,v)%求解微分方程dsolve(eq1,eq2,con1,con2,v1,v2)%求解微分方程組說明:eq為微分方程;con是微分初始條件,可省略;v為指定自由變量,若省略則默認(rèn)為x或t為自由變量;輸出結(jié)果為結(jié)構(gòu)數(shù)組類型。(1)當(dāng)y是因變量時(shí),微分方程eq的表述規(guī)定為:y的一階導(dǎo)數(shù)或表示為Dy;y的n階導(dǎo)數(shù)或表示為Dny。ddyxddytddnnyxddnnyt(2)微分初始條件con應(yīng)寫成y(a)=b,Dy(c)=d的格式;當(dāng)初始條件少于微分方程數(shù)時(shí),在所得解中將出現(xiàn)任

溫馨提示

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

最新文檔

評論

0/150

提交評論