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