資源描述:
《第2講(2) matlab的符號(hào)運(yùn)算》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第2講(2)MATLAB的符號(hào)運(yùn)算(注:文中紅色字體為命令執(zhí)行的結(jié)果,在Command窗口中顯示)3-1符號(hào)對(duì)象的創(chuàng)建和使用1.符號(hào)運(yùn)算入門符號(hào)運(yùn)算的特點(diǎn)是,運(yùn)算過程中允許存在非數(shù)值的符號(hào)變量。先看如下示例:函數(shù),用MATLAB求它的微積分,命令如下:f='sin(x)^2';%定義符號(hào)函數(shù)f(x)dfdx=diff(f)%求的指令intf=int(f)%求的指令顯示的計(jì)算結(jié)果為:dfdx=2*sin(x)*cos(x)intf=-1/2sin(x)*cos(x)+1/2*x所以,,。此例中,首先定義符號(hào)函數(shù)f=’sin(x)^2’,然后由符號(hào)運(yùn)算獲得的
2、微分和積分。2.定義符號(hào)變量在使用符號(hào)變量之前,應(yīng)先聲明某些要用到的變量是“符號(hào)”變量。聲明符號(hào)變量的語(yǔ)句:syms變量名列表或:sym(‘變量名’)其中各個(gè)變量名應(yīng)該用空格分隔,而不能用逗號(hào)分隔。如創(chuàng)建符號(hào)變量x和a:x=sym(‘x’)a=sym(‘a(chǎn)lpha’)或用:symsxa%定義符號(hào)變量x和a這里,變量x和a的類型是符號(hào)對(duì)象,它們被定義后,即可參與符號(hào)運(yùn)算。3.定義符號(hào)表達(dá)式和符號(hào)方程符號(hào)表達(dá)式和符號(hào)方程是兩種不同的操作對(duì)象。區(qū)別在于:符號(hào)表達(dá)式不包含等號(hào)(=),而符號(hào)方程須帶等號(hào)。它們的創(chuàng)建方式相同。如:要考慮二次函數(shù)f=ax^2+bx+c
3、,可以創(chuàng)建符號(hào)表達(dá)式,賦值給符號(hào)變量f。f=sym(‘a(chǎn)*x^2+b*x+c’)14或:f=‘a(chǎn)*x^2+b*x+c’此例中,將符號(hào)表達(dá)式賦給符號(hào)變量f,但這不是必需的,引入符號(hào)變量是為了以后調(diào)用方便。在這種情況下,沒有創(chuàng)建對(duì)應(yīng)于表達(dá)式中a、b、c、x項(xiàng)的變量,為了執(zhí)行符號(hào)數(shù)學(xué)運(yùn)算(如微分、積分等),必須顯式地創(chuàng)建這些變量,可用下列命令創(chuàng)建:symsabcx如下例中創(chuàng)建了符號(hào)表達(dá)式和符號(hào)方程,分別賦給相應(yīng)的符號(hào)對(duì)象。symsxabcf='sin(x)^2';%創(chuàng)建符號(hào)表達(dá)式sin(x)^2賦給變量feq='a*x^2+b*x+c=0'%創(chuàng)建的符號(hào)方程賦給
4、變量eq4.定義抽象函數(shù)和符號(hào)數(shù)學(xué)函數(shù)若要?jiǎng)?chuàng)建抽象函數(shù)f(x),可使用:f=sym(‘f(x)’)則f就象f(x)一樣參與運(yùn)算。在SymbolicMathToolbox中可利用符號(hào)表達(dá)式創(chuàng)建符號(hào)數(shù)學(xué)函數(shù)。如下面的命令將產(chǎn)生符號(hào)表達(dá)式r、t、f:symsxyzr=sqrt(x^2+y^2+z^2)%或r=sym(‘sqrt(x^2+y^2+z^2)’)t=atan(y/x)f=sin(x*y)/(x*y)3-2數(shù)值與符號(hào)的轉(zhuǎn)換Sym函數(shù)有四種選項(xiàng)將數(shù)值結(jié)果轉(zhuǎn)換為符號(hào)表達(dá)式。如對(duì)于變量rho,定義為:,在MATLAB命令窗口中定義rho:rho=(1+sqr
5、t(5))/2將這一數(shù)值結(jié)果轉(zhuǎn)化為符號(hào)表達(dá)式:(1)sym(rho,’f’)返回符號(hào)浮點(diǎn)表示形式,結(jié)果為:sym(rho,’f’)ans=‘1.9e3779b97f4a8’*2^(0)(2)sym(rho,’r’)返回符號(hào)有理數(shù)表示形式,這是sym的默認(rèn)設(shè)置,當(dāng)調(diào)用sym而沒有第二個(gè)參數(shù)時(shí),相當(dāng)于sym使用了r選項(xiàng)。結(jié)果為:sym(rho,’r’)ans=7286977268806824*2^(-52)14例如:sym(0.75)ans=3/4(3)sym(rho,’e’)返回符號(hào)有理數(shù)表示形式,同時(shí)根據(jù)eps給出rho的理論表達(dá)式和實(shí)際計(jì)算的差。sym
6、(rho,’e’)ans=7286977268806824*2^(-52)這里,rho的理論值和實(shí)際浮點(diǎn)值相同,對(duì)于1/3,可得:sym(1/3,’e’)ans=1/3-eps/12(4)sym(rho,’d’)返回符號(hào)十進(jìn)制小數(shù)表示形式。有效位數(shù)由digits定義。Digits的默認(rèn)值是32位。sym(rho,’d’)ans=1.6180339887498949025257388711907如果想要一個(gè)較短的結(jié)果,可由digits定義有效位數(shù)。digits(5)sym(rho,’d’)ans=1.6180上述四種格式中,最后得到的都是符號(hào)對(duì)象變量。3-
7、3符號(hào)算術(shù)運(yùn)算1.定義符號(hào)矩陣MATLAB中的數(shù)值矩陣不能直接參與符號(hào)運(yùn)算,必須經(jīng)過轉(zhuǎn)換。Sym函數(shù)的一個(gè)非常有用的功能就是將數(shù)值矩陣轉(zhuǎn)換成符號(hào)矩陣。例如,下面的代碼將產(chǎn)生一個(gè)3×3的Hilbert矩陣。A=hilb(3)A=1.00000.50000.33330.50000.33330.25000.33330.25000.2000對(duì)A使用sym命令可獲得一個(gè)具有無(wú)窮精度的3×3的符號(hào)形式的矩。A=sym(A)A=[1,1/2,1/3][1/2,1/3,1/4][1/3,1/4,1/5]14當(dāng)調(diào)用SymbolicMathToolbox時(shí),默認(rèn)地調(diào)用有理算
8、術(shù)運(yùn)算。當(dāng)使用sym函數(shù)創(chuàng)建符號(hào)變量時(shí),有理算術(shù)運(yùn)算將被啟動(dòng)。例如,對(duì)于雙精度矩