




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章符號計算MATLAB的符號運算是憑借一些列恒等式和數(shù)學(xué)定理,通過推理和演繹獲得的解析結(jié)果。與數(shù)值計算相比,符號計算存在以下的特點:(1)運算以推理方式進行,因此不受截斷誤差和累計誤差問題的影響;(2)符號計算給出的解可以是完全正確的封閉解,當(dāng)封閉解不存在時給出任意精度的數(shù)值解;(3)符號計算的速度比較慢。MATLAB最初主要以解決自然科學(xué)領(lǐng)域中的數(shù)值計算和數(shù)據(jù)分析問題出現(xiàn)的。為了解決MATLAB在符號運數(shù)學(xué)方面的不足,1993年MathWorks公司從加拿大的滑鐵盧(Waterloo)大學(xué)購入了符號數(shù)學(xué)軟件Maple的使用權(quán),首次開發(fā)了符號數(shù)學(xué)工具箱(SymbolicMathToolbox)。當(dāng)要求MATLAB進行符號運算時,它就請求Maple去計算并將結(jié)果返回到MATLAB窗口。
MATLAB采用重載(Overload)技術(shù),使得用來構(gòu)成符號表達式的運算符和基本函數(shù),無論在形狀、名稱以及使用方法上,都與數(shù)值計算完全相同。MATLAB常用函數(shù)中除了angle()、atan2()、log2()、log10()只能用于數(shù)值運算外,其余的都可以用于符號運算。同時,符號運算沒有邏輯操作符,關(guān)系運算中也只有是否“等于”的概念。
第五章符號計算本章主要介紹MATLAB符號數(shù)學(xué)工具箱的主要功能,包括:符號對象的創(chuàng)建和符號自變量的確定、符號表達式的轉(zhuǎn)換和操作、符號微積分以及符號方程的求解。本章的主要內(nèi)容有:符號對象的創(chuàng)建及其操作符號對象和數(shù)值對象的轉(zhuǎn)換符號表達式的極限、級數(shù)求和以及符號微積分符號代數(shù)方程和符號微分方程的求解第五章符號計算5.1符號對象的創(chuàng)建和符號自變量的確定
5.1.1符號對象的創(chuàng)建
符號對象是一種數(shù)據(jù)結(jié)構(gòu),包括符號常量、符號變量。MATLAB規(guī)定:任何包含符號對象的表達式或方程,將承襲符號對象的屬性,即這樣的表達式或方程也一定是符號對象。正如在數(shù)學(xué)表達式中所用到的變量必須實現(xiàn)賦值一樣,在進行符號運算前,首先要對基本的符號對象進行定義。定義符號對象的指令有兩個:sym()和syms,格式如下:?sym(常量,參數(shù))
?把常量按參數(shù)的格式要求創(chuàng)建為符號常量。參數(shù)有4種選擇:'d'―返回最接近的十進制數(shù)值表示符號量'e'―最接近的帶有機器浮點誤差的有理數(shù)格式表示符號量'f'―最接近的浮點格式表示符號量‘r’―有理數(shù)格式(系統(tǒng)默認格式)表示符號量,可表示為p/q,p*q,10^q,p/q,2^q和sqrt(p)形式之一。
有時也會有形式如sym('常量',參數(shù))定義常量的方法。?sym(‘變量’,參數(shù))?把變量定義為符號對象。其中參數(shù)用來設(shè)置限定符號變量的數(shù)學(xué)特性,有3種選擇:positive―正的實數(shù)符號變量real―實數(shù)符號變量unreal―非實數(shù)的符號變量如果不限定參數(shù)的數(shù)學(xué)特性可省略。用戶如果要同時創(chuàng)建多個符號變量,可以使用syms函數(shù),調(diào)用格式有兩種:?syms(‘變量1’,‘變量2’,…,參數(shù))?syms變量1變量2…參數(shù)?創(chuàng)建變量1、變量2等多個符號變量。參數(shù)的含義同sym。注意:第一種方式創(chuàng)建符號變量時,變量間必須用逗號隔開。第二種方式創(chuàng)建符號變量時變量間只能用空格隔開。5.1.1符號對象的創(chuàng)建【例5-1】創(chuàng)建符號常量,并比較其與數(shù)值類和字符串類的差別clear; a1=pi+2*cos(3)%創(chuàng)建一個數(shù)值a2=sym('pi+2*cos(3)')%創(chuàng)建一個符號常量a3='pi+2*cos(3)'%創(chuàng)建一個字符串whos%檢查所創(chuàng)建的各變量的信息在指令窗中運行exm5_1.m后,結(jié)果為:a1=1.1616a2=pi+2*cos(3)a3=
pi+2*cos(3)NameSizeBytesClassAttributesa11x18doublea21x1146syma31x1122char【說明】:符號常量表示的符號類數(shù)字總被MATLAB準(zhǔn)確記錄和運算,但數(shù)值類數(shù)字運算時會引入截斷誤差。盡管變量a2和a3顯示的內(nèi)容完全相同,但它們屬于不同的數(shù)據(jù)類型,運算方法也不一樣,且符號常量占據(jù)的存儲空間較大?!纠?-1】創(chuàng)建符號常量,并比較其與數(shù)值類和字符串類的差別編寫文件名為exm5_2的腳本文件:cleara21=sym(pi+2*cos(3),'d')%返回最接近的32位的十進制數(shù)值a22=sym(pi+2*cos(3),'e')%返回最接近的帶有機器浮點誤差的有理值a23=sym(pi+2*cos(3),'f')%返回該符號值最接近的浮點表示a24=sym(pi+2*cos(3),'r')%返回該符號值最接近的有理數(shù)型在指令窗中運行exm5_2.m后,結(jié)果為:a21=1.1616076603889022855753410112811a22=5231415826478174*2^(-52)a23='1.295f1ea02745e'*2^(0)a24=5231415826478174*2^(-52)【例5-2】數(shù)值類常量轉(zhuǎn)換為符號常量后的不同表示方法實例
編寫文件名為exm5_3的腳本文件:clear;clc;x=sym('a','real');%創(chuàng)建實數(shù)符號變量x<1>y=sym('b','real');%創(chuàng)建實數(shù)符號變量y<2>z=x+y*ireal(z)%求z的實部y=sym('b','unreal');%消除b的實數(shù)特性z=x+y*ireal(z)在指令窗中運行exm5_3.m后,結(jié)果為:z=a+i*bans=az=a+i*bans=a+1/2*i*b-1/2*i*conj(b)【例5-3】創(chuàng)建符號變量實例。對于復(fù)數(shù)變量b,MATLAB認為其實部是1/2*b+1/2*conj(b)。如果用戶對所定義的符號變量的數(shù)學(xué)特性不加說明,MATLAB認為所定義的變量都是復(fù)數(shù)變量。用戶一旦定義了符號變量的數(shù)學(xué)特性,比如符號a為實數(shù),即便用戶利用clear清除了工作空間中的符號變量a,當(dāng)用戶再次定義符號a時,MATLAB總默認其為實數(shù),除非用戶重新定義其特性,或者重啟MATLAB。腳本文件中的<1><2>兩條語句也可以用一條語句symsxy'real'代替,功能相同?!菊f明】MATLAB創(chuàng)建符號表達式的方法有兩種:一是直接創(chuàng)建表達式;二是先逐個創(chuàng)建表達式中的各個變量,然后生成表達式。編寫文件名為exm5_4的腳本文件:clear%方法一:直接創(chuàng)建表達式y(tǒng)1=sym('a*x^2+b*x+c')whos%方法二:逐個創(chuàng)建表達式中的變量,產(chǎn)生表達式clearsymsabcx;y2=a*x^2+b*x+cwhos。
【例5-4】創(chuàng)建符號表達式
。在指令窗中運行exm5_4.m后,結(jié)果為:y1=a*x^2+b*x+cNameSizeBytesClassAttributesy11x1146symy2=a*x^2+b*x+c
NameSizeBytesClassAttributesa1x1126sym
b1x1126symc1x1126sym
x1x1126symy21x1146sym【例5-4】創(chuàng)建符號表達式
。盡管這兩種方式都可以創(chuàng)建符號表達式,且創(chuàng)建的表達式?jīng)]有差別,但從工作空間變量查詢結(jié)果可知:第一種方法只創(chuàng)建了符號表達式,并沒有創(chuàng)建表達式中的各個變量。第二種方法則創(chuàng)建了各個符號變量。因此在第一種方法中盡管表達式創(chuàng)建了,當(dāng)遇到表達式中的某個符號變量時,MATLAB必須要重新創(chuàng)建該符號變量。【說明】5.1.2符號表達式中符號自變量的確定當(dāng)符號表達式中存在多個符號變量時,例如“",中a、b、c、x都是變量,顯然,選擇不同的自變量,方程的求解結(jié)果也截然不同。MATLAB確定符號表達式中的自變量有3條原則:(1)小寫字母i和j不能作為自變量。(2)符號表達式中如果有多個字符變量,則按照以下順序選擇自變量:首先選擇x作為自變量;如果沒有x,則選擇在字母順序中最接近x的字符變量;如果與x相同距離,則在x后面的優(yōu)先。(3)大寫字母比所有的小寫字母都靠后。確定自變量的函數(shù)是findsym,格式如下:?findsym(S,n)?確定符號表達式S中的n個自變量。n為按順序得出符號變量的個數(shù),當(dāng)n缺省時,給出S中所有的符號變量。編寫文件名為exm5_5的腳本文件:clearsymsabmxtwXYk=sym('2+cos(3)');n=sym('c*sqrt(alpha)+y*sin(delta)');f=k*x*Y+a*n*X-w^2+t^m;f_all=findsym(f)%找出表達式中所有的自由變量f_1=findsym(f,1)%找出表達式中一個自由變量f_2=findsym(f,2)%找出表達式中二個自由變量f_5=findsym(f,5)%找出表達式中五個自由變量
【例5-5】函數(shù)findsym()應(yīng)用實例。在指令窗中運行exm5_5.m后,結(jié)果為:
f_all=X,Y,a,alpha,c,delta,m,t,w,x,yf_1=xf_2=x,yf_5=x,y,w,t,m【說明】findsym()指令確定的變量本著“自由”和“獨立”的原則,由于n不是“獨立”的,所以變量n不能做自變量。k為常量,不“自由”,所以它也不能做自變量。findsym()指令首先對符號變量的第一個字母比較,再比較其余的?!纠?-5】函數(shù)findsym()應(yīng)用實例?!纠?-6】符號表達式組成的矩陣中函數(shù)findsym()應(yīng)用實例編寫文件名為exm5_6的腳本文件:clearsymsacxvyB=[a*c,sin(x)+y;exp(-v),log(a)]findsym(B,1)在指令窗中運行exm5_6.m后,結(jié)果為:B=[a*c,sin(x)+y][exp(-v),log(a)]ans=x5.2符號表達式的基本操作
5.2.1符號對象和數(shù)值對象的轉(zhuǎn)換MATLAB提供了相應(yīng)的指令可以實現(xiàn)將符號類數(shù)字轉(zhuǎn)換為數(shù)值類數(shù)字,便于用戶進行相關(guān)的數(shù)值計算和繪制圖像使用。符號常量可以應(yīng)用函數(shù)double()轉(zhuǎn)換為數(shù)值對象,其調(diào)用格式為?double(S)?把符號常量S轉(zhuǎn)換為數(shù)值對象?!纠?-7】建立符號常數(shù)矩陣,并轉(zhuǎn)換為數(shù)值矩陣編寫文件名為exm5_7的腳本文件:cleara=sym('[sin(1/2)5/7;sqrt(3)2*log(1/3)]')%建立符號常數(shù)矩陣sdouble(a)%把a轉(zhuǎn)換為數(shù)值矩陣在指令窗中運行exm5_7.m后,結(jié)果為:a=[sin(1/2),5/7][sqrt(3),2*log(1/3)]ans=0.47940.71431.7321-2.19725.2.2符號數(shù)值的精度控制符號運算與數(shù)值計算比較,其最大的特點是符號運算是完全準(zhǔn)確的,即在運算過程中不存在截斷誤差和累積誤差。但這種準(zhǔn)確性是以犧牲計算速度和增加內(nèi)存為代價換來的。為了兼顧計算速度和精度,節(jié)約內(nèi)存,MATLAB針對符號運算提供了“變精度”算法。這種“變精度”算法由函數(shù)digits()和vpa()實現(xiàn)或者由vpa()單獨實現(xiàn)。?digits(n)?設(shè)定計算精度為n位有效位數(shù)。n缺省時為查看當(dāng)前計算精度。MATLAB默認精度為32位。vpa的格式如下:?t=vpa(x,n)?將x表示為n位有效位數(shù)的符號對象t。其中x可以是數(shù)值對象或符號對象,但計算的結(jié)果t一定是符號對象。n缺省時以MATLAB當(dāng)前給定的精度顯示。指令digits設(shè)置了計算精度后,隨后的每個進行符號函數(shù)的計算都以新精度為準(zhǔn),除非用戶重新設(shè)置,或者重啟MATLAB。設(shè)置的有效位數(shù)增加時,計算時間和占用的內(nèi)存也增加。指令vpa(x,n)只對指定的符號對象x按新精度進行運算,并以同樣的精度顯示計算結(jié)果,并不改變?nèi)值挠嬎憔??!菊f明】【例5-8】函數(shù)digits(),vpa()的使用實例。>>a=sym('2*sqrt(5)+sin(2/3)')%2*sqrt(5)+sin(2/3)字面數(shù)值的完全準(zhǔn)確表達a=sin(2/3)+2*5^(1/2)>>ar=sym(2*sqrt(5)+sin(2/3))%字面數(shù)值在16位精度下"廣義有理形式"表達式ar=5731399958792085/1125899906842624>>digits%查看當(dāng)前“十進制浮點”表示符號數(shù)值的有效位數(shù)Digits=32>>a0=vpa(a)%用當(dāng)前的位數(shù)計算并顯示a0=5.0905057580693164005682337996694>>a1=vpa(a,20)%按指定的20位精度下計算并顯示a1=5.0905057580693164006>>digits%查看當(dāng)前“十進制浮點”表示符號數(shù)值的有效位數(shù)Digits=32>>digits(15)%改變當(dāng)前的有效位數(shù)為15位>>a2=vpa(a)%按digits指定的15位精度計算并顯示a2=5.09050575806932>>digits%查看當(dāng)前表示符號數(shù)值的有效位數(shù)Digits=15【例5-8】函數(shù)digits(),vpa()的使用實例。5.2.3符號表達式的化簡MATLAB符號工具箱中提供了許多符號表達式的操作指令,實現(xiàn)對符號表達式的多種化簡功能,其中最常用的有:。1.合并同類項合并同類項是多項式的基本操作。合并多項式中同類項的指令為collect(),格式如下:?collect(S,v)?合并多項式S中的指定符號對象v,其中S是符號表達式。v缺省時,MATLAB將以函數(shù)findsym()確定的變量合并多項式S中的同類項?!纠?-9】分別按合并表達式中的同類項
編寫文件名為exm5_9的腳本文件:clear,symsxtf=sym((x^2+x^2*exp(-t)+1)*(x+exp(-t)));f1=collect(f)%合并x的同類項系數(shù)f2=collect(f,exp(-t))%合并exp(-t)的同類項系數(shù)在指令窗中運行exm5_9.m后,結(jié)果為:f1=(1+exp(-t))*x^3+(1+exp(-t))*exp(-t)*x^2+x+exp(-t)f2=x^2*exp(-t)^2+(x^2+1+x^3)*exp(-t)+(x^2+1)*xMATLAB實現(xiàn)符號多項式因式分解的指令為factor()和hornor(),調(diào)用格式為:?factor(S)?把符號表達式S轉(zhuǎn)換成多因式相乘的形式,如果S為正整數(shù),可以實現(xiàn)因子分解。?hornor(S)?將符號多項式S因式分解成嵌套形式表示。2因式分解【例5-10】分解因式
編寫文件名為exm5_10的腳本文件:clear;symsxa;f=factor(a^3-x^3)在指令窗中運行exm5_10.m后,結(jié)果為:f=(a-x)*(a^2+a*x+x^2)【例5-11】將大整數(shù)102456分解為幾個素數(shù)的乘積。指令窗中執(zhí)行指令并顯示結(jié)果:>>factor(sym('102456'))ans=(2)^3*(3)^2*(1423)
【例5-12】將表達式
表示成嵌套形式。
編寫文件名為exm5_12的腳本文件:clearsymsx;f=horner(x^6-5*x^3+4*x^2+4*x-6)在指令窗中運行exm5_12.m后,結(jié)果為:f=-6+(4+(4+(-5+x^3)*x)*x)*x2因式分解【例5-13】當(dāng)
取何值時,方程組
有非零解編寫文件名為exm5_13的腳本文件:clear,clc,symst;A=[1-t-24;23-t1;111-t];%創(chuàng)建系數(shù)矩陣B=det(A);C=factor(B)%計算系數(shù)矩陣對應(yīng)行列式的值,并進行因式分解在指令窗中運行exm5_13.m后,結(jié)果為:-t*(t-2)*(t-3)由結(jié)果可知,當(dāng)
取值為0、2、3時,方程組才存在非零解。如果表達式是一個有理分式(兩個多項式之比),或者是可以展開為有理分式(必要時還需要進行表達式合并、有理化),用戶可以利用MATLAB中的指令numden()提取該表達式的分子和分母,調(diào)用格式為:?[N,D]=numden(S)?對理多項式S進行分子分母多項式的提取,輸出宗量分別為分子多項式N和分母多項式D。3符號表達式中分子多項式和分母多項式的提取分析:由于這四個表達式進行的是相同的運算,將它們組合成數(shù)組,MATLAB只需要執(zhí)行一次指令即可以計算出全部結(jié)果。編寫文件名為exm5_14的腳本文件:clear,clc,symsxA=[x^21/x^3+1;(2*x^2+1)/x-1/x^21/(x-3)];[n,d]=numden(A)在指令窗中運行exm5_14.m后,結(jié)果為:n=
[x^2,3*x^3+1]
[2*x^3+x-1,1]
d=
[1,x^3]
[x^2,x-3]
各個表達式有理化后的結(jié)果為:【例5-14】分別提取有理多項式
的分子、分母多項式。
MATLAB實現(xiàn)符號多項式展開的指令為expand(),調(diào)用格式為:?expand(S)
?對符號表達式S進行多項式、三角函數(shù)、指數(shù)函數(shù)和對數(shù)函數(shù)等展開?!纠?-15】展開表達式
,其中n為任意給定的整數(shù).
編寫文件名為exm5_15的腳本文件:clear,clc,symsxyn=input('Pleaseinputn=?');g=(x-y)^n;g=expand(g)在指令窗中運行exm5_15.m后,以n=4為例,結(jié)果為:Pleaseinputn=?4g=x^4-4*x^3*y+6*x^2*y^2-4*x*y^3+y^44符號表達式的展開【例5-16】展開矩陣
中的各表達式.編寫文件名為exm5_16的腳本文件:symsalphabetaf=[sin(alpha+beta),sin(alpha-beta);sin(2*alpha),tan(2*beta)]clear,clcexpand(f)在指令窗中運行exm5_16.m,結(jié)果為:f=[sin(alpha+beta),sin(alpha-beta)]ans=[cos(alpha)*sin(beta)+cos(beta)*sin(alpha),cos(beta)*sin(alpha)-cos(alpha)*sin(beta)][2*cos(alpha)*sin(alpha),(2*tan(beta))/(tan(beta)^2-1)]該題也證明了函數(shù)運算中的正弦函數(shù)、正切函數(shù)的倍角公式以及正弦函數(shù)和余弦函數(shù)的兩角和、差公式。符號表達式可以用許多等價的形式來表示。為了讓用戶得到最簡潔的表達形式,MATLAB提供了兩個指令進行符號化簡:simplify()和simple(),其調(diào)用格式相同:?simplify(S)或simple(S)?對符號表達式S化簡,輸出最簡化形式。二者區(qū)別在于對于較為復(fù)雜的表達式化簡,不帶輸出宗量的simple()往往給出符號表達式的化簡過程,而simplify()只給出化簡后的最簡形式。5符號表達式的化簡【例5-17】化簡指令simplify()和simple()使用實例:化簡表達式
。>>symsx;f=2*x/(x^2-x+1)+3/(x+1);>>simple(f)simplify:(5*x^2-x+3)/(x^3+1)radsimp:3/(x+1)+(2*x)/(x^2-x+1)……collect(x):(5*x^2-x+3)/(x^3+1)ans=(5*x^2-x+3)/(x^3+1)>>simplify(f)ans=(5*x^2-x+3)/(x^3+1)【例5-18】化簡編寫文件名為exm5_18的腳本文件:clear,clc,symsxf=(1/x^3+6/x^2+12/x+8)^(1/3);f1=simplify(f)f2=simplify(f1)g1=simple(f)g2=simple(g1)在指令窗中運行exm5_18.m后,結(jié)果為:f1=((2*x+1)^3/x^3)^(1/3)f2=((2*x+1)^3/x^3)^(1/3)g1=(2*x+1)/xg2=2+1/xsimplify()利用各種類型代數(shù)恒等式,包括求和、積分和分?jǐn)?shù)冪、三角、指數(shù)和常用對數(shù)、Bessel函數(shù)、超幾何函數(shù)和
函數(shù),來簡化表達式;simple()使用幾種不同的簡化工具,然后選擇在結(jié)果表達式中含有最少字符的那種形式作為輸出。建議用戶在化簡過程中多用幾次化簡指令?!菊f明】【例5-19】已知矩陣A=,計算A的平方,以及A中各元素的平方,并化簡。編寫文件名為exm5_19的腳本文件:clear,symsx;A=[cos(x)sin(x);sin(x)cos(x)];B=simple(A^2)%計算矩陣A的2次冪C=simple(A.^2)%計算矩陣A中各元素的2次冪在指令窗中運行exm5_19.m后,結(jié)果為:B=[1,sin(2*x)][sin(2*x),1]C=[cos(x)^2,sin(x)^2][sin(x)^2,cos(x)^2]A=
5.3.4符號表達式的置換MATLAB符號數(shù)學(xué)工具箱中提供了用于符號達式的置換函數(shù),用于簡化表達式的輸出,方便用戶閱讀。?subs(ES,OLD,NEW)?用變量NEW替換符號表達式ES中的變量OLD。
?[Y,X]=subexpr(ES,X)?自動查找表達式中最長的子表達式,并用符號變量X來置換,輸出置換后的符號表達式Y(jié)和子表達式X?!纠?-20】使用置換函數(shù)subs()對表達式
進行不同的置換操作。>>clear,clc,>>symsabxy>>f=a*sin(x)+b;>>f1=subs(f,'sin(x)',y)%以符號變量y替換符號表達式sin(x)f1=b+a*y>>f2=subs(f,'a',sym('2'))%以符號常量2替換符號變量af2=b+2*sin(x)>>f3=subs(f,{a,b},{3,2})%分別以標(biāo)量2、3替換符號變量a、bf3=3*sin(x)+2>>f4=subs(f,{a,b,x},{2,2,pi/3})%分別以標(biāo)量2、3、pi/3替換符號變量a、b、xf4=
3.7321
【說明】只有當(dāng)符號表達式中的符號變量全部用數(shù)值常量代替后,計算的結(jié)果為數(shù)值常量。否則仍然為符號變量或符號常量。【例5-21】置換函數(shù)subexpr()的使用實例:計算符號矩陣的逆矩陣。編寫文件名為exm5_21的腳本文件:clearsymsXA=sym('[a11a12a13;a21a22a23;a31a32a33]')%創(chuàng)建符號矩陣D=inv(A);%計算符號矩陣的逆矩陣[Y,X]=subexpr(D,X)%用X置換其中的子表達式在指令窗中運行exm5_21.m后,結(jié)果為:A=[a11,a12,a13][a21,a22,a23][a31,a32,a33]Y=[(a22*a33-a23*a32)/X,-(a12*a33-a13*a32)/X,(a12*a23-a13*a22)/X][-(a21*a33-a31*a23)/X,(a11*a33-a31*a13)/X,-(a11*a23-a21*a13)/X][(a21*a32-a31*a22)/X,-(a11*a32-a31*a12)/X,(a11*a22-a21*a12)/X]X=a11*a22*a33-a11*a23*a32-a21*a12*a33+a21*a13*a32+a31*a12*a23-a31*a13*a22【說明】:函數(shù)subexpr()對子表達式是自動尋找,只有比較長子表達式才被置換。對于較短的子表達式,即便重復(fù)多次也不會被置換【例5-21】置換函數(shù)subexpr()的使用實例
MATLAB符號計算工具箱中提供了很多關(guān)于符號微積分的運算函數(shù),用戶只要正確的調(diào)用這些函數(shù)就可以準(zhǔn)確地進行符號微積分的運算,減輕了手工運算的勞苦,更避免了因疏忽引起的差錯5.3符號微積分5.3.1符號極限和符號微分
1.符號極限MATLAB計算符號極限的函數(shù)為limit().其格式如下:?limit(f,x,a)?計算當(dāng)自變量x趨近于常數(shù)a時,符號函數(shù)f(x)的極限值(即計算
)。當(dāng)x缺省時,MATLAB將根據(jù)findsym()找出的第一自由變量作為自變量。當(dāng)a缺省時,MATLAB將認為是自變量趨近于0.?limit(f,x,a,'right')?計算自變量x從右邊趨近于a時,符號函數(shù)f的極限值(即計算
)。?limit(f,x,a,'left')?計算自變量x從左邊趨近于a時,符號函數(shù)f的極限值(即計算
)。編寫文件名為exm5_22的腳本文件:clear,clc,symsxtf1=limit(sin(x)/x,x,0)f2_left=limit(cot(x)^(t/log(x)),x,0,'left')f2_right=limit(cot(x)^(t/log(x)),x,0,'right')f3=limit((1+1/(3*x))^x,inf)在指令窗中運行exm5_22.m后,結(jié)果為:f1=1f2_left=1/exp(t)f2_right=1/exp(t)f3=exp(1/3)
由執(zhí)行結(jié)果可知
;;;;?!纠?-22】分別計算
MATLAB中可用來計算符號表達式微分的指令形式多樣,主要有diff()、jacobian()和taylor(),調(diào)用格式分別為:?dfdtn=diff(f,t,n)?計算符號表達式f對符號變量t的n階微分(即計算).n缺省時默認為計算一階微分1.t缺省時按照findsym()找尋的第一自變量求微分。?fj=jacobian(f(t))?計算多元符號表達式f(t)的一階微分雅克比(Jacobian)矩陣。雅可比矩陣定義為向量對向量的一階微分矩陣:2.符號微分
?ftlr=taylor(f,n,t,a)?計算符號表達式f(t)在t=a處的(n-1)階泰勒級數(shù)展開(即計算
)編寫文件名為exm5_23的腳本文件:
clear,clc,symsaxy;
f=[a,y^3;y*cos(x),log(x)];
dfdx=diff(f)%求矩陣f對x的一階導(dǎo)數(shù)
dfdy2=diff(f,y,2)%求矩陣f對y的二階導(dǎo)數(shù)
dfdxdy=diff(diff(f,x),y)%求二階混合導(dǎo)數(shù)
在指令窗中運行exm5_23.m后,結(jié)果為:
dfdx=
[0,0]
[-y*sin(x),1/x]
dfdy2=
[0,6*y]
[0,0]
dfdxdy=
[0,0]
[-sin(x),0]【例5-23】已知函數(shù)矩陣,求
、
、
【例5-24】隱函數(shù)求導(dǎo)實例:(1)設(shè)
,求
分析:根據(jù)隱函數(shù)求導(dǎo)步驟:第一步令
,由指令計算
,
,第二步由
計算結(jié)果。編寫文件名為exm5_24_1的腳本文件:clear,symsxy;F=sin(y)+exp(x)-x*y-1;dFdx=diff(F,x)dFdy=diff(F,y)dydx=dFdx/dFdy在指令窗中運行exm5_24_1..m后,結(jié)果為:dFdx=exp(x)-ydFdy=cos(y)-xdydx=(exp(x)-y)/(cos(y)-x)即
。編寫文件名為exm5_24_2的腳本文件:clear,clc,symsxyzf=[x+log(y*z);y^2+tan(z);sin(x)+cos(y)];t=[x,y,z];fj=jacobian(f,t)在指令窗中運行exm5_24_2..m后,結(jié)果為:fj=[1,1/y,1/z][0,2*y,1+tan(z)^2][cos(x),-sin(y),0](2)設(shè),求f的Jacobian矩陣【例5-25】求
在
處展開的9階麥克勞林級數(shù)。編寫文件名為exm5_25的腳本文件:clear,clc,symsxtaylor(log(1+x),8,x,0)在指令窗中運行exm5_25..m后,結(jié)果為:ans=x-1/2*x^2+1/3*x^3-1/4*x^4+1/5*x^5-1/6*x^6+1/7*x^75.3.2符號級數(shù)/序列求和和符號積分1.級數(shù)/序列的符號求和級數(shù)或者序列求和是高等數(shù)學(xué)中常見的運算,MATLAB實現(xiàn)函數(shù)為symsum(),格式如下:?Sum=symsum(f,t,a,b)?計算序列/級數(shù)在指定變量t取區(qū)間[a,b]中所有整數(shù)時的和(即計算
)。如果t缺省時,MATLAB按照findsym()找尋第一自變量。t可以取有限值,也可以是無窮大。用戶如果不指定t的區(qū)間,MATLAB將按照默認計算區(qū)間
求和?!纠?-26】序列/級數(shù)求和指令symsum()使用實例:
分別計算
和
的值編寫文件名為exm5_26的腳本文件:clear,clc,symsktf1=[t,k^3];f2=[1/(2*k-1)^2,(-1)^k/k];Sum1=simple(symsum(f1))%f1的第一自變量為tSum2=simple(symsum(f2,1,inf))%f1的唯一自變量為k在指令窗中運行exm5_26.m后,結(jié)果為:Sum1=[1/2*t*(t-1),k^3*t]Sum2=[1/8*pi^2,-log(2)]【說明】在符號求和運算后結(jié)合化簡指令,可以使輸出結(jié)果簡潔易讀。
MATLAB實現(xiàn)符號積分指令為int(),該函數(shù)即可計算定積分,也可以計算不定積分,其調(diào)用格式如下:?S=int(f,v,a,b)?計算被積函數(shù)f關(guān)于變量v的定積分,積分區(qū)間為[a,b]。v缺省時,MATLAB將以指令findsym()找尋的第一變量作為積分變量。當(dāng)a、b缺省時,為計算表達式的不定積分。函數(shù)int()的嵌套使用可實現(xiàn)多重積分的計算。2.符號積分編寫文件名為exm5_27的腳本文件:clear,clc,symsxsymsappositives1=int(a^x*cos(x),0,pi)s2=int(1/x^p,1,inf)在指令窗中運行exm5_27..m后,結(jié)果為:s1=-(log(a)*(a^pi+1))/(log(a)^2+1)s2=piecewise([1<p,1/(p-1)],[p<=1,Inf])由結(jié)果可知:
;
;
【例5-27】分別計算
和
,其中a、p都為正數(shù)。編寫文件名為exm5_28的腳本文件:clear,clc,symsabxF=[a*x,b*x^2;1/x,tan(x)];disp('TheintegralofFis')disp(int(F))在指令窗中運行exm5_28.m后,結(jié)果為:TheintegralofFis[1/2*a*x^2,1/3*b*x^3][log(x),-log(cos(x))]【例5-28】計算
。分析:該題積分區(qū)域為單位圓,如果采用直角坐標(biāo),積分區(qū)間可以設(shè)定為
,對應(yīng)于任意
處
。如果選用極坐標(biāo),極徑
,極角
。編寫文件名為exm5_29的腳本文件:%直角坐標(biāo)下計算積分clear,clc,symsxyrthetaS_d=int(int(sin(pi*(x^2+y^2)),y,-sqrt(1-x^2),sqrt(1-x^2)),x,-1,1)%極坐標(biāo)下計算積分S_p=int(int(r*sin(pi*r^2),r,0,1),theta,-pi,pi)執(zhí)行后的結(jié)果為:Warning:Explicitintegralcouldnotbefound.S_d=int((2^(1/2)*fresnelS(2^(1/2)*(1-x^2)^(1/2))*cos(pi*x^2))/2-(2^(1/2)*fresnelS(-2^(1/2)*(1-x^2)^(1/2))*cos(pi*x^2))/2+(2^(1/2)*fresnelC(2^(1/2)*(1-x^2)^(1/2))*sin(pi*x^2))/2-(2^(1/2)*fresnelC(-2^(1/2)*(1-x^2)^(1/2))*sin(pi*x^2))/2,x=-1..1)S_p=2。
,
【例5-29】計算
。編寫文件名為exm5_25的腳本文件:clear,clc,symsxyzF=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2);VF=vpa(F,8)%積分結(jié)果用8位有效數(shù)字顯示在指令窗中運行exm5_25..m后,結(jié)果為:VF=224.92154【說明】與數(shù)值積分比較,符號積分指令簡單,但計算時會占用較長的時間。當(dāng)積分上下限也為符號時,MATLAB將給出冗長的“封閉型”解析解,有時也會出現(xiàn)給不出解析解的現(xiàn)象。使用函數(shù)int()嵌套結(jié)構(gòu)時,積分變量的先后次序必須要正確,否則MATLAB將會給出錯誤結(jié)果。如果積分結(jié)果為符號常數(shù)時,用戶可以結(jié)合指令vpa(),使輸出結(jié)果簡短易讀?!纠?-30】計算
。
MATLAB求解代數(shù)方程或代數(shù)方程組的指令為solve(),調(diào)用格式為?S=solve(‘eq’,‘v’)?計算單個方程eq=0關(guān)于變量v的解S。eq可以是含等號的符號方程。v缺省時MATLAB將利用指令findsym()找尋第一自由變量作為求解變量。?[y1,y2,…yn]=solve(‘eq1’,‘eq2’,…,‘eqn’,‘v1’,‘v2’,…,'vn')?計算方程組eq1=0,eq2=0,…,eqn=0關(guān)于變量v1,v2…vn的解y1,y2,…,yn。如果只有一個輸出宗量,則該輸出宗量類型為構(gòu)架數(shù)組,MATLAB把各個解分別存放在此構(gòu)架數(shù)組的不同域中,每個域值為對應(yīng)域名的變量的解。v缺省時MATLAB將利用指令findsym()找尋n個自由變量作為求解變量?!菊f明】當(dāng)代數(shù)方程不存在“封閉型”解析解又無其他自由參數(shù)時,MATLAB將給出符號常數(shù)解。5.4符號方程的求解5.4.1符號代數(shù)方程的求解【例5-31】分別求解方程
,,編寫文件名為exm5_31的腳本文件:clear,clc,symsabcxs1=solve('(x+2)^x=2','x');%含等號的方程s1=vpa(s1,6)%輸出5位有效位數(shù)s2=solve('sin(x)','x')%不含等號的方程,與sinx=0等價s3=solve('a*x^2+b*x+c')%第一自變量為x在指令窗中運行exm5_31.m后,結(jié)果為:s1=0.6983s2=0s3=-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a注意:如果方程的解為有限個,MATLAB將逐個輸出其解;當(dāng)方程有無窮多個解時,MATLAB只輸出0附近的一個數(shù)值解。;;
編寫文件名為exm5_32的腳本文件:clears=solve('x^2+2*y+1','x+3*z=4','y*z=-1');disp([blanks(8),'x',blanks(8),'y',blanks(8),'z'])%利用顯示函數(shù)disp(),便于閱讀disp(vpa([s.x,s.y,s.z],6))%結(jié)果顯示有效位數(shù)為6位在指令窗中運行exm5_32.m后,結(jié)果為:[
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小麥加工資源增值策略考核試卷
- 土木工程建筑排水系統(tǒng)施工考核試卷
- 2017社保培訓(xùn)課件
- 孔樁勞務(wù)合同范本
- 民宅鋪面出售合同范本
- 碼頭設(shè)備采購合同范本
- 購買國外技術(shù)合同范本
- 熱水買賣合同范本
- led燈改造合同范本
- 寵物寄養(yǎng)服務(wù)中動物健康保證協(xié)議
- 緩刑解除矯正個人總結(jié)
- 北師大版小學(xué)數(shù)學(xué)六年級下冊全冊一課一練課課練(含答案)
- 白酒加工小作坊整治工作方案
- 發(fā)揚體育精神展青春光彩
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案匯編
- 國家基本公共衛(wèi)生服務(wù)項目績效考核課件
- 孕產(chǎn)婦深靜脈血栓預(yù)防與護理課件
- 腳輪行走測試技術(shù)規(guī)范
- 研發(fā)運營一體化DevOps能力成熟度模型評估(完整版)
- 《國際貿(mào)易實務(wù)》課件
- 班級管理課件:班級組織的建設(shè)
評論
0/150
提交評論