《MATLAB教程及實訓 第4版》課件 第4章符號運算實訓_第1頁
《MATLAB教程及實訓 第4版》課件 第4章符號運算實訓_第2頁
《MATLAB教程及實訓 第4版》課件 第4章符號運算實訓_第3頁
《MATLAB教程及實訓 第4版》課件 第4章符號運算實訓_第4頁
《MATLAB教程及實訓 第4版》課件 第4章符號運算實訓_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章符號運算

(symbolicmathtoolbox)4.1符號對象的創(chuàng)建和使用4.2符號對象的運算4.3符號表達式的變換4.4符號微積分、極限和級數(shù)4.5符號積分變換4.6符號方程的求解4.7符號函數(shù)的可視化4.8綜合舉例4.9繪圖函數(shù)本章小結(jié)和練習符號運算的對象是非數(shù)值的符號對象,對于像公式推導和因式分解等抽象的運算都可以通過符號運算來解決。MATLAB具有專用的符號數(shù)學工具箱(SymbolicMathToolbox)進行符號運算,由MATLAB實時編輯器(LivescriptEditor)代替了原來的Mupadnotebook,可以創(chuàng)建、運行和共享符號表達式,直接生成MATLAB函數(shù)、Simulink函數(shù)塊和Simscape方程,使符號運算的功能有了很大的擴展。符號工具箱能夠?qū)崿F(xiàn)微積分運算、線性代數(shù)、表達式的化簡、求解代數(shù)方程和微分方程、積分變換和不同精度轉(zhuǎn)換,符號計算的結(jié)果可以以圖形化顯示。例如:計算a*x^2+b*x+c的根計算f=sin(ax)+cos(x)的微分計算符號運算的特點:

(1)符號運算以推理解析的方式進行,計算的結(jié)果不受計算累積誤差影響;(2)符號計算可以得出完全正確的封閉解和任意精度的運算;(3)符號計算命令調(diào)用簡單與數(shù)值計算命令基本一致。4.1符號對象的創(chuàng)建和使用創(chuàng)建符號對象可以使用sym和syms函數(shù)實現(xiàn)。1.sym函數(shù)S=sym(s,參數(shù)) %由數(shù)值創(chuàng)建符號對象S=sym(‘s’,參數(shù))%由字符串創(chuàng)建符號對象例,>>x=sym('x');參數(shù)作用實例d返回最接近的小數(shù)(默認位數(shù)為32位)

>>x=sym(pi,‘d‘)

x=3.1415926535897931159979634685442f返回浮點型數(shù)值

>>x=sym(pi,‘f‘)

x=884279719003555/281474976710656r返回最接近的有理數(shù)型數(shù)值(為系統(tǒng)默認方式)

>>x=sym(pi,‘r‘)

x=pie返回最接近的帶浮點估計誤差的有理數(shù)型

>>x=sym(pi,‘e‘)

x=pi-(198*eps)/3592.syms函數(shù)syms(s1,s2,s3,…,參數(shù)) %創(chuàng)建多個符號變量symss1s2s3…參數(shù) %創(chuàng)建多個符號變量,由空格分開變量

symsf(x1,x2,x3)%創(chuàng)建符號變量和符號函數(shù)例:>>symsf(x,y)>>symsabc>>B=sym(‘b’,‘real’)%限定b為實數(shù)4.1.2符號常量和符號變量符號常量是不含變量的符號表達式,用sym函數(shù)來創(chuàng)建;符號變量使用sym和syms函數(shù)來創(chuàng)建?!纠?-1】在實時編輯器中創(chuàng)建Livescript文件,編寫并運行創(chuàng)建符號常量和符號變量。4.1.2符號常量和符號變量設(shè)置假設(shè)條件的命令格式如下:assume(condition) %假設(shè)條件assume(expr,set) %對符號表達式設(shè)置條件assumptions(var) %變量的假設(shè)條件【例4-2】使用字符串創(chuàng)建符號變量,并使用假設(shè)條件。>>symsx;>>assume(x>5); %設(shè)置假設(shè)條件>>assumeAlso(x<10)>>assumptions %顯示假設(shè)條件ans=[5<x,x<10]4.1.3符號表達式符號表達式是由符號常量和符號變量等構(gòu)成的表達式,使用sym和syms函數(shù)來創(chuàng)建。例4-3

分別使用sym和syms函數(shù)創(chuàng)建符號表達式。>>symsabcx>>f1=a*x^2+b*x+cf1=a*x^2+b*x+c>>symsf2(z);>>f2=sin(z)^2+cos(z)^2==1 %創(chuàng)建符號方程f2=sin(z)^2+cos(z)^2=14.1.4符號矩陣符號矩陣的元素是符號對象,符號矩陣可以用sym和syms函數(shù)來創(chuàng)建。>>symsabcd;A3=[a,b;c,d]%創(chuàng)建符號矩陣A3=[a,b][c,d]>>B=sym('b',[2,3])B=[b1_1,b1_2,b1_3][b2_1,b2_2,b2_3]4.2符號對象的運算

4.2.1符號運算的類型轉(zhuǎn)換1.符號變量與數(shù)值變量的相互轉(zhuǎn)換d=double(s) %轉(zhuǎn)換為雙精度型數(shù)據(jù)c=sym2cell(s) %轉(zhuǎn)換為元胞數(shù)值sym、syms、str2sym和cell2sym,可以將數(shù)值、字符串和元胞數(shù)組轉(zhuǎn)換為符號對象。>>S1=sym([sqrt(2),pi]);>>d=double(S1) %轉(zhuǎn)換為雙精度型數(shù)據(jù)d=1.41423.1416>>s3='[a,b;c,d]';S3=str2sym(s3)S3=[a,b][c,d]2.任意精度符號變量的轉(zhuǎn)換VPA型(variable-precisionfloating-pointarithmetic)是指任意精度運算,這種運算比較靈活,可以設(shè)置任意有效精度。digits(n) %設(shè)定n位有效位數(shù)的精度S=vpa(s,n) %將s按n位有效位數(shù)計算得出符號對象S不同類型對象轉(zhuǎn)換關(guān)系4.2.2符號對象的基本運算1.算術(shù)運算(1)“+”,“-”,“*”,“\”,“/”,“^”(2)“.*”,“./”,“.\”,“.^”(3)“′”,“.′”2.符號矩陣運算函數(shù)符號運算中的矩陣代數(shù)命令有diag、triu、inv、det、rank、qr、eig、svd和expm、logm等。3.關(guān)系運算包括“>”、“>=”、“<”、“<=”、“==”、“~=”,可以結(jié)合assume等函數(shù)使用。。符號矩陣運算:>>symsabcd>>C=[a,b;c,d];>>detC=det(C)%求行列式>>invC=inv(C)%求逆陣>>rotC=rot90(B)>>logC=log(C)>>D=sin(C).*cos(C)4.邏輯運算包括“&”、“|”和xor,可以對關(guān)系表達式進行邏輯運算,函數(shù)all、any、in、isinf、isnan等也進行邏輯運算。5.算術(shù)運算函數(shù)三角函數(shù)包括sin、cos、sinc、cot和tan,雙曲函數(shù)包括sinh、cosh和tanh,三角反函數(shù)包括asin、acos和atan函數(shù)等。指數(shù)函數(shù)sqrt、exp和expm的使用方法與數(shù)值運算的完全相同;對數(shù)函數(shù)有自然對數(shù)log(表示ln)、log2和log10。復數(shù)的共軛conj、實部real、虛部imag、角度angle和求模abs等函數(shù),與數(shù)值計算中的使用方法相同。算術(shù)運算的統(tǒng)計函數(shù)max、min、mod和rem等。例:>>symsabcd>>A=[a,b;c,d];>>B=[1,2;3,4];>>C=A+B*i %C是符號變量C=[a+1i,b+2i][c+3i,d+4i]>>e=logical(A==B)>>conj(C) %求共軛ans=[conj(a)-1i,conj(b)-2i][conj(c)-3i,conj(d)-4i]4.3符號表達式的變換

4.3.1符號表達式中的自由符號變量1.自由符號變量的確定以下原則來選擇一個自由符號變量:符號表達式中的多個符號變量,按以下順序來選擇自由符號變量:首先選擇x,如果沒有x,則選擇在字母表順序中最接近x的字符變量,如果字母與x的距離相同,則在x后面的優(yōu)先;字母pi、i和j不能作為自由符號變量;大寫字母比所有的小寫字母都靠后。例如,在符號表達式“ax2+bx+c”中,自由符號變量的順序為x

c

b

a。練習:確定下面各符號表達式中的自由符號變量:1/(log(t)+log10(w*t)) sqrt(t)/y 10*i+x*j exp(-a*result)答案:wyxresult

4.3.2符號表達式的化簡多項式的符號表達式有多種形式,例如,f(x)=x3-6x2+11x-6可以表示為:>>symsf(x)>>f=x^3-6*x^2+11*x-6合并同類項形式:f(x)=x3-6x2+11x-6

collectexpand因式分解形式:f(x)=(x-1)(x-2)(x-3)

factor

嵌套形式:f(x)=x(x(x-6)+11)-6

horner例:>>symsf(x)>>f=x^3-6*x^2+11*x-6>>factor(f)>>g=(x-1)*(x-2)*(x-3)>>f=collect(g)>>pretty(f)例:>>symsf(x,y)>>f=cos(x-y)>>g=expand(f)>>p=sym(120)>>factor(p)simplify函數(shù)simplify函數(shù)是一個功能強大的函數(shù),利用各種形式的代數(shù)恒等式對符號表達式進行化簡,包括求和、分解、積分、冪、三角、指數(shù)、對數(shù)、Bessel以及超越函數(shù)等方法來簡化表達式。例:>>symsxy>>f2=cos(x)^2+sin(x)^2;>>g2=simplify(f2)g2=1練習:對符號表達式,進行化簡。答案:symsxf1=cos(x)+sqrt(-sin(x)^2)F11=simplify(f1)f2=(x^2-1)/(x+1)f21=expand(f2)f22=collect(f2)4.3.3符號表達式的替換1.subexpr函數(shù)subexpr函數(shù)用來替換符號表達式中重復出現(xiàn)的子表達式,通過替換子表達式來化簡。2.subs函數(shù)subs函數(shù)用來對符號表達式中某個特定符號進行替換,命令格式如下:subs(s,old,new)%用new替換符號表達式s中的old例如:>>f1=subs(f,x-y,S)例:

將符號表達式f=(x-y)(x+y)+(x-y)2+2(x-y)中的特定符號使用subs函數(shù)替換。>>symsxyzS>>f=(x-y)*(x+y)+(x-y)^2+2*(x-y);>>f1=subs(f,x-y,S)>>x=5;>>y=3;>>f2=subs(f)4.3.4計算反函數(shù)和復合函數(shù)1.反函數(shù)函數(shù)f(x)存在一個反函數(shù)g(.),g(f(x))=x,則g和f互為反函數(shù)g=finverse(f,v)%對f(v)按指定自變量v求反函數(shù)例4-12:>>symsxy>>f=5*sin(x)+y;>>g=finverse(f) %對默認自由變量求反函數(shù)>>g1=finverse(f,y) %對y求反函數(shù)2.復合函數(shù)MATLAB提供了compose函數(shù)可以求出f(x)和g(y)的復合函數(shù)f(g(y))。compose(f,g,x,y,z) %計算f和g的復合函數(shù)例:>>symsxytvn>>f=x+y;>>g=t*v;>>y1=compose(f,g) %以x為符號變量求復合函數(shù)y1=t*v+y>>y4=compose(f,g,y,t,'n')%以n代替t求復合函數(shù)f(g(n))y4=x+n*v4.3.5多項式符號表達式1.多項式符號表達式的運算函數(shù)root求多項式的根,resultant計算兩個多項式合成,numden進行多項式分母通分,ploynomialDegree計算多項式最高階次。例,已知多項式為>>symsxs;f1=sym(1/(x-1)+1/(x+1)+3);>>[N1,D1]=numden(f1)N1=2*x+3*x^2-3D1=(x-1)*(x+1)>>deg=polynomialDegree(N1) %求多項式的階次deg=22.符號表達式與多項式的互換sym2poly(s)和poly2sym將符號表達式與行向量互相轉(zhuǎn)換例:將多項式表達式轉(zhuǎn)換成>>n1=sym2poly(N1)n1=32-3>>d1=sym2poly(D1);>>f2=poly2sym(n1,s)/poly2sym(d1,s) %轉(zhuǎn)換為以s為符號變量的表達式f2=(3*s^2+2*s-3)/(s^2-1)4.4符號微積分、極限和級數(shù)

4.4.1符號表達式的微積分1.微分diff(f,t,n)%計算f對符號變量t的n階微分例

計算符號表達式f=sin(ax)+y2cos(x)的微分。>>symsaxy>>f=sin(a*x)+y^2*cos(x);>>dfdx=diff(f) %對默認自由變量x求一階微分dfdx=cos(a*x)*a-y^2*sin(x)>>dfdy2=diff(f,y,2) %對符號變量y求二階微分dfdy2=2*cos(x)2.積分int(f,t,a,b) %計算符號變量t的積分說明:f為符號表達式;t為積分符號變量,可以省略,當t省略時則指默認自由符號變量;a和b是為積分上下限[ab],可以省略,省略時計算的是不定積分。例:>>symsarphi>>g=r^2*(sin(phi))^2;>>f=int(int(g,r,0,a),phi,0,2*pi)f=(pi*a^3)/34.4.2符號表達式的極限limit(f,x,a)%求符號表達式f對x趨近于a的極限例4-22

使用limit函數(shù)計算符號表達式的極限,和>>symst>>f1=exp(-t)*sin(t);>>ess=limit(f1,t,inf) %計算趨向無窮大的極限ess=0>>f2=1/t;>>limitf2_l=limit(f2,'t','0','left') %計算趨向0的左極限>>limitf2_r=limit(f2,'t','0','right') %計算趨向0的右極限>>limitf2=limit(f2) %計算趨向0的極限limitf2=NaN 左右極限不相等,極限不存在表示為NaN

4.4.3符號表達式的級數(shù)1.級數(shù)求和symsum(s,x,a,b) %計算表達式s當x從a到b的級數(shù)和例

使用symsum函數(shù)對符號表達式進行級數(shù)求和,已知符號表達式。>>symsk>>f2=1/k;>>limitf1=symsum(f2,k,0,inf)%計算無窮級數(shù)和Limitf1=Inf>>symsum(f2,k,1,10)ans=7381/25202.taylor級數(shù)taylor(f,x,x0,’Order’,n) %求泰勒級數(shù)以符號變量x在x0點展開n項例

使用taylor函數(shù)對符號表達式cos(x)

進行泰勒級數(shù)展開。>>symsx>>f1=cos(x);>>taylorf1=taylor(f1,x,1,’order’,3) %計算x=1級數(shù)展開前3項taylorf1=cos(1)-sin(1)*(x-1)-1/2*cos(1)*(x-1)^24.5符號積分變換

4.5.1Fourier變換F=fourier(f,t,w)%求f的fourier變換Ff=ifourier(F,w,t)%求F的fourier反變換f例

使用fourier函數(shù)和ifourier函數(shù)對符號表達式cos(2t)進行積分變換。>>symst;f1=cos(2*t);>>ff1=fourier(f1) %fourier變換ff1=pi*(dirac(w-2)+dirac(w+2))>>if1=ifourier(ff1) %fourier反變換if1=exp(-x*2i)/2+exp(x*2i)/2>>if2=simplify(if1) %化簡if2=cos(2*x)dirac4.5.2Laplace變換F=laplace(f,t,s)%求以t為變量f的Laplace變換Ff=ilaplace(F,s,t)%求F的Laplace反變換f例:計算表達式的拉式變換。>>symsABat>>lf1=laplace(heaviside(t))%單位階躍函數(shù)求拉式變換lf1=1/s>>f1=A*t^3+B*exp(a*t)>>F1=laplace(f1)F1=6*A/s^4+B/(s-a)Heaviside例

根據(jù)圖形計算函數(shù)的laplace變換波形表示為:f(t)=u(t)-u(t-τ)>>symsAt>>tou=sym('tou','positive’);%定義tao為正實型符號變量>>f1=A*heaviside(t)-A*heaviside(t-tou);>>F1=laplace(f1)F1=A/s-A*exp(-s*tou)/s4.5.3Z變換F=ztrans(f,n,z) %求以n為變量的f的Z變換Ff=iztrans(F,z,n)%求以z為變量的F的z反變換f例:>>symsknzt>>zf1=ztrans(heaviside(t),n,z)%對單位階躍函數(shù)求Z變換zf1=heaviside(t)*z/(z-1)>>zf12=symsum(heaviside(t)/z^n,n,0,inf) %使用級數(shù)求和求Z變換zf12=heaviside(t)*z/(z-1)4.5.4傅里葉分析和濾波在信號處理應用和計算數(shù)學中,傅里葉變換和濾波器是用于處理和分析離散數(shù)據(jù)的工具。1.快速傅里葉變換Y=fft(X,n)%用快速傅里葉變換算法計算X的離散傅里葉變換DFTX=ifft(Y,n)%使用快速傅里葉逆變換計算Y的逆離散傅里葉變換例:>>Fs=1000; %采樣頻率

>>T=1/Fs;L=100; %信號長度>>t=(0:L-1)*T;>>x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);>>z1=0.5*randn(size(t)); %白噪聲>>Y=fft(x+z1); %快速傅里葉變換>>N=L/2;f=Fs*(0:(N))/L;>>stem(f(1:N),abs(Y(1:N))) %火柴桿圖2.濾波函數(shù)filter和filter2函數(shù)為一維和二維數(shù)組濾波器:y=filter(b,a,x) %由有理傳遞函數(shù)對x濾波

說明:a和b是有理傳遞函數(shù)的分母和分子系數(shù)。例:對信號進行移動平均濾波。移動平均濾波器是用于對含噪數(shù)據(jù)進行平滑處理的常用方法,沿數(shù)據(jù)移動長度為windowSize的窗口,計算每個窗口中包含的數(shù)據(jù)的平均值。>>figure(3);windowSize=2; %窗口長度>>b=(1/windowSize)*ones(1,windowSize);a=1;>>y=filter(b,a,x+z1); %移動平均濾波>>plot(t,x+z1,t,y);legend('x+z1','y')4.6符號方程的求解

4.6.1代數(shù)方程的求解一般的代數(shù)方程包括線性方程、非線性方程和超越方程。當方程不存在解析解又無其他自由參數(shù)時,MATLAB提供了solve函數(shù)得出方程的數(shù)值解。solve(eqn,var) %求方程關(guān)于指定變量v的解solve(eqns,vars) %求方程組關(guān)于指定變量解例:解方程>>symsx>>assume(x<0)>>x1=solve(x^2-1==0)x1=-1例:解方程組例:>>symsxyzabc;>>f=solve(x^2+x*y+y,x^2-4*x+3)

%解方程組輸出一個結(jié)果f=x:[1x1sym]y:[1x1sym]>>f.xans=13(x>1)

增加條件x>1>>assume(x>0)>>f=solve(x^2+x*y+y,x^2-4*x+3)>>x=double(f.x)練習:采用兩種方法解方程組。4.6.2微分方程的求解dsolve(eqn,cond,var) %求解微分方程說明:先使用syms對變量var和函數(shù)進行定義,var省略則默認為自由符號變量;eqn是符號常微分方程,方程中diff表示微分;cond是初始條件,可省略,當初始條件少于微分方程數(shù)時,在所得解中將出現(xiàn)任意常數(shù)符C1,C2……,解中任意常數(shù)符的數(shù)目等于所缺少的初始條件數(shù),是微分方程的通解。例

使用dsolve求解微分方程和方程組,微分方程為>>symsc(t)xyx(t)y(t)>>eqn1=diff(c,t,2)+1.414*diff(c,t)+c==1;>>cond1=[c(0)==0,c(1)==0];>>c=dsolve(eqn1,cond1); %解微分方程>>digits8;ct=vpa(c)>>[x,y]=dsolve(diff(x,t)==y,diff(y,t)==-x) %解微分方程組練習:求符號微分方程的通解和當y(0)=2的特解。>>symsxyy(x)>>y=dsolve(diff(y,x)==sin(x))

>>y=dsolve(diff(y,x)==sin(x),y(0)==2)4.7符號函數(shù)的可視化

4.7.1符號函數(shù)計算器在命令窗口中輸入命令“funtool”,就會出現(xiàn)該符號函數(shù)計算器,由兩個圖形窗口(Figure1、Figure2)和一個函數(shù)運算控制窗口(Figur

溫馨提示

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

評論

0/150

提交評論