《《matlab程序設(shè)計(jì)》第三章matlab的符號(hào)運(yùn)算》由會(huì)員分享,可在線閱讀,更多相關(guān)《《matlab程序設(shè)計(jì)》第三章matlab的符號(hào)運(yùn)算(39頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 符號(hào)表達(dá)式、符號(hào)矩陣的創(chuàng)建 符號(hào)線性代數(shù) 因式分解、展開(kāi)和簡(jiǎn)化 符號(hào)代數(shù)方程求解 符號(hào)微積分 符號(hào)微分方程什么是符號(hào)運(yùn)算與數(shù)值運(yùn)算的區(qū)別 數(shù)值運(yùn)算中必須先對(duì)變量賦值,然后才能參與運(yùn)算。符號(hào)運(yùn)算無(wú)須事先對(duì)獨(dú)立變量賦值,運(yùn)算結(jié)果以標(biāo)準(zhǔn)的符號(hào)形式表達(dá)。特點(diǎn):運(yùn)算對(duì)象可以是沒(méi)賦值的符號(hào)變量 可以獲得任意精度的解 Symbolic Math Toolbox符號(hào)運(yùn)算工具包通過(guò)調(diào)用Maple軟件實(shí)現(xiàn)符號(hào)計(jì)算的。maple軟件主要功能是符號(hào)運(yùn)算,它占據(jù)符號(hào)軟件的主導(dǎo)地位。語(yǔ)法格式1:sym(arg);其中,arg:數(shù)字,字符串或表達(dá)式;f=sym(sin(x)+5x)f 符號(hào)變量名sin(x)+5x 符號(hào)表
2、達(dá)式 符號(hào)標(biāo)識(shí)v符號(hào)表達(dá)式一定要用 單引號(hào)括起來(lái)matlab才能識(shí)別。的內(nèi)容可以是符號(hào)表達(dá)式,也可以是符號(hào)方程。例:f1=sym(ax2+bx+c)二次三項(xiàng)式 f2=sym(ax2+bx+c=0)方程 f3=sym(Dy+y2=1)微分方程符號(hào)表達(dá)式或符號(hào)方程可以賦給符號(hào)變量,以后調(diào)用方便;也可以不賦給符號(hào)變量直接參與運(yùn)算語(yǔ)法格式2:(1)syms a b c x y;%創(chuàng)建多個(gè)符號(hào)變量 f1=a*x2+b*x+c*y;%等價(jià)于f1=sym(a*x2+b*x+c*y)(2)syms(a,b,c,x,y);%創(chuàng)建多個(gè)符號(hào)變量 f2=a*x2+b*x+c*y;3.符號(hào)矩陣的創(chuàng)建 數(shù)值矩陣A=1,2
3、;3,4 A=a,b;c,d 不識(shí)別用matlab函數(shù)sym創(chuàng)建矩陣(symbolic 的縮寫)命令格式:A=sym()符號(hào)矩陣內(nèi)容同數(shù)值矩陣 需用sym指令定義 需用 標(biāo)識(shí)例如:A=sym(a,2*b;3*a,0)A=a,2*b 3*a,0 這就完成了一個(gè)符號(hào)矩陣的創(chuàng)建。注意:符號(hào)矩陣的每一行的兩端都有方 括號(hào),這是與 matlab數(shù)值矩陣的 一個(gè)重要區(qū)別。a.指令修改v 用A1=subs(A,old,new)來(lái)修改v A(*,*)=new例如:例如:A=a,2*b 3*a,0A(2,2)=8*b;A3=AA3=a,2*b 3*a,8*bA2=subs(A,b,c)A2=a,2*c 3*a,
4、0 v將數(shù)值矩陣轉(zhuǎn)化為符號(hào)矩陣 函數(shù)調(diào)用格式:sym(A)A=1/3,2.5;1/0.7,2/5A=sym(A)ans=1/3,5/210/7,2/5v將符號(hào)矩陣轉(zhuǎn)化為數(shù)值矩陣函數(shù)調(diào)用格式:double(A),eval(A)A=1/3,5/210/7,2/5eval(A)ans=符號(hào)表達(dá)式的基本運(yùn)算新版Matlab利用重載技術(shù),其基本運(yùn)算符號(hào)與數(shù)值計(jì)算中的算符幾乎完全相同。(1)基本算符:+,-,*,/,分別實(shí)現(xiàn)矩陣的加、減、乘、右除、左除和求冪運(yùn)算。算符.*,./,.,.分別實(shí)現(xiàn)元素對(duì)元素的乘、除和求冪。算符和.分別實(shí)現(xiàn)矩陣的共軛轉(zhuǎn)置和非共軛轉(zhuǎn)置。(2)關(guān)系運(yùn)算符:在符號(hào)對(duì)象的比較中沒(méi)有“大
5、于”、“大于等于”,“小于”,“小于等于”的概念而只有“等于”和“不等于”,分別表示為“=”和“=”,比較的結(jié)果用1表示真,0表示假。符號(hào)表達(dá)式的基本運(yùn)算 新版Matlab利用重載技術(shù),其基本運(yùn)算符號(hào)與數(shù)值計(jì)算中的算符幾乎完全相同.(3)三角函數(shù)、雙曲函數(shù)和它們的反函數(shù):除atan2不能用于符號(hào)運(yùn)算之外,其它三角函數(shù)都可用于符號(hào)表達(dá)式計(jì)算.(4)指數(shù)、對(duì)數(shù)函數(shù):函數(shù)sqrt(),exp(),expm(),log(),log2()和log10()都能用于符號(hào)計(jì)算.(5)復(fù)數(shù)函數(shù):復(fù)數(shù)共軛conj,實(shí)部real,虛部imag和求模abs與數(shù)值計(jì)算相同,但沒(méi)有求相位角函數(shù)(angle).(6)矩陣函
6、數(shù):函數(shù)diag(),triu(),tril(),inv(),det(),rank(),rref(),poly(),expm()和eig()等都能用于符號(hào)計(jì)算.例1:加法運(yùn)算f=2*x2+3*x-5;g=x2+x-7;syms x f=2*x2+3*x-5;g=x2+x-7;h=f+g h=3*x2+4*x-12例2:乘除法運(yùn)算f=cos(x);g=sin(2*x);syms x f=cos(x);g=sin(2*x);h=f/g+f*g h=cos(x)/sin(2*x)+cos(x)*sin(2*x)符號(hào)計(jì)算的顯著特點(diǎn)是計(jì)算過(guò)程中不會(huì)出現(xiàn)舍入誤差,從而可以得到任意精度的數(shù)值解。而數(shù)值計(jì)算受
7、計(jì)算機(jī)字長(zhǎng)限制,每次數(shù)值操作都帶截?cái)嗾`差,任何數(shù)值計(jì)算無(wú)論采用什么算法都會(huì)產(chǎn)生累積誤差。浮點(diǎn)算術(shù)運(yùn)算1/2+1/3 (定義輸出格式format long)ans=符號(hào)運(yùn)算sym(1/2+1/3)ans=5/6 精確解 任意精度算術(shù)運(yùn)算digits(n)設(shè)置可變精度,默認(rèn)值32位有效數(shù)字。vpa(x,n)顯示可變精度的有效數(shù)字位數(shù)。digits(25)vpa(1/2+1/3)ans=.8333333333333333333333333vpa(5/6,40)ans=.8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3
8、/7)a=1/4,exp(1)log(3),3/7vpa(a,10)ans=.2500000000,2.7182818281.098612289,.4285714286 diff(f)對(duì)缺省變量求微分 diff(f,v)對(duì)指定變量v求微分 diff(f,v,n)對(duì)指定變量v求n階微分 int(f)對(duì)f表達(dá)式的缺省變量求積分 int(f,v)對(duì)f表達(dá)式的v變量求積分 int(f,v,a,b)對(duì)f表達(dá)式的v變量在(a,b)區(qū)間求定積分缺省時(shí)為不定積分例1.計(jì)算定積分 syms x;f=2*xh=int(f,x,0,2)h=4例2.計(jì)算二重不定積分dxdyxexyF=int(int(x*exp(-x
9、*y),x),y)F=1/y*exp(-x*y)ztrans(fn,n,z)求時(shí)域序列fn的Z變換iztrans(FZ,z,n)求頻域序列FZ的Z反變換fnlaplace(ft,t,s)求時(shí)域函數(shù)ft的拉氏變換Fsilaplace(Fs,s,t)求頻域Fs的拉氏反變換ftfourier(ft,t,w)求時(shí)域ft的付氏變換Fwifourier(Fw,w,t)求頻域Fw的付氏反變換ft例3.計(jì)算 f=sym(x*exp(-x*10)的Z變換F=ztrans(f,x,z)F=z*exp(-10)/(z-exp(-10)2例4.計(jì)算指數(shù)函數(shù)eAt。用拉氏反變換法計(jì)算。eAt的公式為:eAt=L-1(s
10、I-A)-1系統(tǒng)矩陣A=3210tttttttteeeeeeee22222222eAt=結(jié)果:a=0 1;-2-3;syms s b=(s*eye(2)-a)b=s,-1 2,s+3 B=inv(b)(s+3)/(s2+3*s+2),1/(s2+3*s+2)-2/(s2+3*s+2),s/(s2+3*s+2)b=ilaplace(B,s,t)1.limit(f,x,a)計(jì)算符號(hào)表達(dá)式f(x)在xa時(shí)的極限值;limit(f,x,a,right)或limit(f,x,a,left)計(jì)算f(x)的單側(cè)極限;2.symsum(f,n,a,b)計(jì)算符號(hào)表達(dá)式f(n)在n取遍a,b區(qū)間所有整數(shù)時(shí)的和;3
11、.taylor(f,x,Order,n,ExpansionPoint,a)計(jì)算符號(hào)表達(dá)式f(x)在a點(diǎn)的n-1階Taylor展開(kāi)多項(xiàng)式;例1:求f=1/x+1在x 時(shí)的極限值syms x f=1/x+1h=lim(f,x,inf)例2:求級(jí)數(shù)1+2+n+的和syms nf=nh=symsum(f,n,1,10)例3:求f=ex在x=2處的4階Taylor展開(kāi)syms xf=exp(x)h=taylor(f,x,Order,5,ExpansionPoint,2)5.符號(hào)代數(shù)方程求解 matlab符號(hào)運(yùn)算能夠解一般的線性方程、非線性方程及一般的代數(shù)方程、代數(shù)方程組。當(dāng)方程組不存在符號(hào)解時(shí),又無(wú)其他
12、自由參數(shù),則給出數(shù)值解。命令格式:solve(f)求一個(gè)方程的解Solve(f1,f2,fn)求n個(gè)方程的解 例1.方程 ax2+bx+c=0 求解syms a b c x;f=a*x2+b*x+c solve(f)對(duì)缺省變量x求解ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)計(jì)算機(jī)格式aacbb242一般格式例2.符號(hào)方程cos(x)=sin(x)的解f1=solve(cos(x)=sin(x),x),f1=1/4*pi solve(f,b)對(duì)指定變量b求解ans=-(a*x2+c)/x例3.解方程組 x+y+z=1 x-y+z=
13、2 2x-y-z=1syms x y z;g1=x+y+z-1,g2=x-y+z-2,g3=2*x-y-z-1f=solve(g1,g2,g3,x,y,z)f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1x,y,z)f.z=5/6,f.y=-1/2,f.x=2/3f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)f=ans=2/3 ans=-1/2 ans=5/6 x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)x=2/3 y=-1/2 z=5/66.符號(hào)微分方程求解 用一個(gè)函數(shù)可以方便地得到微 分方程的符號(hào)解符號(hào)微分方程求解指令
14、:dsolve命令格式:dsolve(f,g)f 微分方程,可多至12個(gè)微分方程的求 解;g為初始條件 默認(rèn)自變量為 x,可任意指定自變量t,u等 微分方程的各階導(dǎo)數(shù)項(xiàng)以大寫字母D表示 dtdydxdy22dtydnndtyd22dxydnndxyd或或或y的一階導(dǎo)數(shù) Dyy的二階導(dǎo)數(shù) D2yy的 n 階導(dǎo)數(shù) Dnyy1,y2=dsolve(x1,x2,xn)返回 微分方程的解一階微分方程dsolve(Dx=y,Dy=x,x(0)=0,y(0)=1)ans=x(t)=(exp(t)-exp(-t)/2,y(t)=(exp(-t)+exp(t)/2二階微分方程dsolve(D2y=-a2*y,y
15、(0)=1,Dy(pi/a)=0)ans=cos(a*x)微分方程組求解注:eq1,eq2,.為微分方程或微分方程組,cond1,cond2,.,是初始條件或邊界條件,v是獨(dú)立變量,默認(rèn)的獨(dú)立變量是t。函數(shù)dsolve用來(lái)解符號(hào)常微分方程、方程組,如果沒(méi)有初始條件,則求出通解,如果有初始條件,則求出特解。dsolve(eq1,eq2,.,cond1,cond2,.,v)X,Y=dsolve(Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-*t),x(0)=2,y(0)=0,t)例1:求的通解。y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)ans=exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y)方程解y(x)的時(shí)間曲線圖22dxyddxdy202y00)(dxdy,1)0(y求該方程的解-6-4-2024050100150200250300 xexp(-x)*cos(x)+exp(-x)*sin(x)注:ezplot()可以在圖型窗口繪制出符號(hào)函數(shù)圖形,也可以畫隱函數(shù)圖形,形如f(x,y)=0這種不能寫出像y=f(x)這種函數(shù)的圖形.小 結(jié) 本節(jié)介紹了matlab語(yǔ)言的符號(hào)運(yùn)算功能,通過(guò)學(xué)習(xí)應(yīng)該掌握:掌握如何創(chuàng)建、修改符號(hào)矩陣掌握符號(hào)運(yùn)算功能