第5章符號運算_第1頁
第5章符號運算_第2頁
第5章符號運算_第3頁
第5章符號運算_第4頁
第5章符號運算_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

MATLAB7.0從入門到精通哈爾濱工業(yè)大學(威海)汽車工程學院2/4/20231課程主要內(nèi)容第1章MATLAB簡介第2章數(shù)值運算第3章單元數(shù)組和結(jié)構(gòu)第4章字符串第5章符號運算第6章MATLAB繪圖基礎(chǔ)第7章程序設(shè)計第8章計算方法的MATLAB實現(xiàn)第9章優(yōu)化設(shè)計第10章SIMULINK仿真初探2/4/20232第5章符號運算數(shù)學問題的求解通常有兩條途徑可循,一是求它的解析解,二是求它的數(shù)值解。求解析解的主要工具是符號運算。所謂符號運算是指運算的主要對象是符號、文字,或說是變量。2/4/202335.1符號表達式的生成符號表達式是代表數(shù)字、函數(shù)、算子和變量的MATLAB字符串,或字符串數(shù)組。不要求變量有預(yù)先確定的值,符號方程式是含有等號的符號表達式。符號算數(shù)是使用已知的規(guī)則和給定符號恒等式求解這些符號方程的實踐,它與代數(shù)和微積分所學到的求解方法完全一樣。符號矩陣式數(shù)組,其元素是符號表達式。符號表達式的生成可采用sym和syms函數(shù)生成。2/4/202345.1.1符號常量符號常量是一種符號對象??捎胹ym函數(shù)生成,可用class函數(shù)來檢測其數(shù)據(jù)類型。2/4/20235程序?qū)嵗?gt;>a=sqrt(2)a=1.4142>>b=sym(sqrt(2))b=

sqrt(2)>>c=sqrt(sym(2))c=

2^(1/2)2/4/20236程序?qū)嵗?gt;>a=sqrt(2)a=1.4142>>b=sym(sqrt(2))b=sqrt(2)>>class(a)ans=double>>class(b)ans=sym2/4/202375.1.2符號變量及符號表達式使用sym函數(shù)也可定義符號表達式,一是將每一個變量定義為符號變量,二是將整個表達式集體定義。也可以直接用單引號生成。函數(shù)syms功能比sym更為強大,它可以一次創(chuàng)建任意多個符號變量。使用格式如下:symsvar1var2...2/4/20238程序?qū)嵗?gt;>a=sym('a');>>b=sym('b');>>c=sym('c');>>x=sym('x');>>f=a*x^2+b*x+c

f=

a*x^2+b*x+c2/4/20239程序?qū)嵗?gt;>f=sym('a*x^2+b*x+c')

f=

a*x^2+b*x+c

>>g=sym('a*sin(b*x+c)')

g=

a*sin(b*x+c)2/4/202310程序?qū)嵗?gt;>symsabcx>>f=a*x^2+b*x+c

f=

a*x^2+b*x+c

>>g=a*sin(b*x+c)

g=

a*sin(c+b*x)2/4/2023115.1.3符號矩陣元素是符號對象的矩陣叫做符號矩陣。在MATLAB7.0語言中,符號矩陣的生成與數(shù)值矩陣的相關(guān)操作很相似。使用sym函數(shù)直接生成符號矩陣,各符號表達式長度相同。2/4/202312程序?qū)嵗?gt;>m1=sym('[asdwe;reas]')m1=

[asd,we][re,as]

>>m2=sym('[56;12]')m2=

[5,6][1,2]2/4/2023135.2符號變量的基本操作符號變量的基本操作主要包括符號變量的查找、符號變量的精度設(shè)置、數(shù)值型變量與符號型變量的轉(zhuǎn)換。2/4/2023145.2.1符號變量查詢函數(shù)findsym用于找出一個表達式中存在哪些符號變量。findsym(s)列出全部符號變量,findsym(s,n)列出靠x最近的n個符號變量。2/4/202315程序?qū)嵗?gt;>f=sym('a*x^2+b*x+c');>>m1=findsym(f)m1=a,b,c,x>>m2=findsym(f,2)m2=x,c>>m3=findsym(f,3)m3=x,c,b2/4/2023165.2.2符號變量精度設(shè)置單獨使用digits或d=digits在命令窗口顯示當前設(shè)定的數(shù)值精度。digits(d)命令設(shè)置數(shù)值的精度為d位。r=vpa(s)命令將顯示符號表達式s在當前精度下的值。r=vpa(s,d)命令將顯示符號表達式s在精度d下的值。顯示的數(shù)字個數(shù)為d。2/4/202317程序?qū)嵗?gt;>digits

Digits=32

>>digits(100)>>digits

Digits=100

>>digits(32)>>digits

Digits=322/4/202318程序?qū)嵗?gt;>r1=vpa(pi)r1=3.1415926535897932384626433832795

>>r2=vpa(pi,4)r2=3.142

>>r2=vpa(pi,5)r2=3.14162/4/2023195.2.3數(shù)值型變量與符號型變量的轉(zhuǎn)換將數(shù)值形式轉(zhuǎn)換為符號形式:對于任意數(shù)值型變量t,使用sym函數(shù)可以將其轉(zhuǎn)換為4種形式的符號變量,分別為:有理數(shù)形式sym(t)或sym(t,’r’)、浮點數(shù)形式sym(t,’f’)、指數(shù)形式sym(t,’e’)和數(shù)值精度形式sym(t,’d’)。也可以采用這種方法將數(shù)值型矩陣轉(zhuǎn)換為符號型矩陣,但此時只能把它轉(zhuǎn)換成有理數(shù)形式。另外,函數(shù)poly2sym實現(xiàn)將某一向量轉(zhuǎn)化為它對應(yīng)的多項式。2/4/202320程序?qū)嵗?gt;>t=0.1;>>sym(t,'r')ans=1/10>>sym(t,'f')ans='1.999999999999a'*2^(-4)>>sym(t,'e')ans=1/10+eps/40>>sym(t,'d')ans=.100000000000000005551115123125782/4/202321程序?qū)嵗?gt;>a=[12345];>>f=poly2sym(a)

f=

x^4+2*x^3+3*x^2+4*x+52/4/202322將符號形式轉(zhuǎn)換為數(shù)值形式:將符號形式轉(zhuǎn)化為數(shù)值形式主要用函數(shù)eval來實現(xiàn)。另外,使用sym2poly函數(shù)實現(xiàn)將多項式轉(zhuǎn)化為它對應(yīng)的系數(shù)向量。2/4/202323程序?qū)嵗?gt;>a=sym(sqrt(5))

a=

sqrt(5)>>b=eval(a)b=2.23612/4/202324程序?qū)嵗?gt;>symsx>>f=x^3-4*x+5;>>c=sym2poly(f)c=10-452/4/2023255.3符號表達式的操作用戶可以對符號表達式進行各種操作,包括四則運算、合并同類項、多項式分解和簡化等。2/4/2023265.3.1符號表達式的四則運算符號表達式也與通常的算術(shù)式一樣,可以進行四則運算。在符號對象的比較中只有相等與否,沒有大小關(guān)系比較;三角函數(shù)的符號運算與數(shù)值運算法則基本相同;符號運算的指數(shù)函數(shù)運算與前面數(shù)值運算法則相同,對數(shù)運算對于符號運算來說只能使用log函數(shù),因此log2(sym(a))=log(a)/log(2)。符號運算的復(fù)數(shù)運算與數(shù)值復(fù)數(shù)運算相同。2/4/202327程序?qū)嵗?gt;>symsxyab>>f1=sin(x)+cos(y);>>f2=a+b;>>f=f1*f2

f=

(a+b)*(cos(y)+sin(x))2/4/2023285.3.2符號表達式合并同類項collect(s,v)命令將符號矩陣s中所有同類項合并,并以v為符號變量輸出。collect(s)命令使用findsym函數(shù)規(guī)定的默認變量代替上式中的v。2/4/202329程序?qū)嵗?gt;>symsxy>>collect(x^2*y+y*x-x^2-2*x,x)ans=(y-1)*x^2+(y-2)*x>>collect(x^2*y+y*x-x^2-2*x,y)ans=(x^2+x)*y-x^2-2*x>>collect(x^2*y+y*x-x^2-2*x)ans=(y-1)*x^2+(y-2)*x2/4/2023305.3.3符號多項式的因式分解使用expand函數(shù)將表達式中的括號進行展開;使用factor函數(shù)將表達式進行因式分解;使用horner函數(shù)將一般的表達式變換為嵌套的形式,默認x為第一變量。2/4/202331程序?qū)嵗?gt;>symsxy>>f=(x-1)*(x-2)*(x-3)*(y-4);>>g=expand(f)

g=

x^3*y-4*x^3-6*x^2*y+24*x^2+11*x*y-44*x-6*y+242/4/202332程序?qū)嵗?gt;>symsxy>>g=x^3*y-4*x^3-6*x^2*y+24*x^2+11*x*y-44*x-6*y+24;>>f=factor(g)

f=

(x-1)*(x-2)*(x-3)*(y-4)2/4/202333程序?qū)嵗?gt;>symsxy>>g=x^3*y-4*x^3-6*x^2*y+24*x^2+11*x*y-44*x-6*y+24;>>f=horner(g)

f=

-6*y+24+(11*y-44+(-6*y+24+(y-4)*x)*x)*x2/4/202334程序?qū)嵗?gt;>symsxy>>f=x^2-2*x+y^2-3*y*x;>>horner(f)

ans=

y^2+(-2-3*y+x)*x2/4/2023355.3.4符號表達式的簡化使用simplify函數(shù)和simple函數(shù)進行符號表達式的簡化。simplify(s)命令將符號表達式s中的每一個元素都進行簡化,該函數(shù)的缺點是即使多次運用此函數(shù)也不一定得到最簡形式。simple(s)命令使用多種代數(shù)簡化方法對符號表達式s進行簡化,并顯示其中最簡單的結(jié)果。[r,how]=simple命令在返回最簡單的結(jié)果的同時,返回一個描述得到該最簡結(jié)果所用簡化方法的字符串how。2/4/202336程序?qū)嵗?gt;>symsx>>f=(x-2).^2+3*(x-3);>>simplify(f)

ans=

x^2-x-52/4/202337程序?qū)嵗?gt;>symsx>>f=(x-2).^2+3*(x-3);>>[r,how]=simple(f)

r=x^2-x-5how=simplify2/4/202338程序?qū)嵗?gt;>symsx>>f=(x-3).^3-3*x+(x-1)/(x+2).^2-2*x.^2;>>simplify(f)

ans=

(x^5-7*x^4-16*x^3+25*x^2-109-11*x)/(x+2)^22/4/202339程序?qū)嵗?gt;>symsx>>f=(x-3).^3-3*x+(x-1)/(x+2).^2-2*x.^2;>>simple(f)simplify:(x^5-7*x^4-16*x^3+25*x^2-109-11*x)/(x+2)^2radsimp:(x^5-7*x^4-16*x^3+25*x^2-109-11*x)/(x+2)^2combine(trig):(x^5-7*x^4-16*x^3+25*x^2-109-11*x)/(x^2+4*x+4)2/4/202340factor:(x^5-7*x^4-16*x^3+25*x^2-109-11*x)/(x+2)^2expand:x^3-11*x^2+24*x-27+1/(x+2)^2*x-1/(x+2)^2combine:(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2convert(exp):(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2convert(sincos):(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2convert(tan):(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^22/4/202341collect(x):(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2mwcos2sin:(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2ans=(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2>>symsx>>f=(x-3).^3-3*x+(x-1)/(x+2).^2-2*x.^2;>>[r,how]=simple(f)r=(x-3)^3-3*x+(x-1)/(x+2)^2-2*x^2how=[]2/4/2023425.3.5書寫形式的轉(zhuǎn)化pretty函數(shù)的使用pretty(s)將符號表達式用書寫方式表示出來,默認寬度為79。pretty(s,n)將符號表達式用書寫方式表示出來,寬度指定為n。2/4/202343程序?qū)嵗?gt;>p=sym('(x^2-1)/(x+2)+(2*x+5)/(3*x-2)')p=(x^2-1)/(x+2)+(2*x+5)/(3*x-2)>>pretty(p)2x-12x+5------+-------x+23x-22/4/2023445.3.6subs函數(shù)用于替換求值subs(s)命令將符號表達式s中的所有符號變量用調(diào)用函數(shù)中的值或matlab工作區(qū)間的值替代。subs(s,new)命令將符號表達式s中的自由符號變量用數(shù)值型變量或表達式new替換。subs(s,old,new)命令將符號表達式s中的符號變量old用數(shù)值型變量或表達式new替換。如沒指定被替換的變量,則默認選擇與x最接近的字母。2/4/202345程序?qū)嵗?gt;>symsxy>>f=x^2*y+5*x*sqrt(y);>>subs(f)ans=x^2*y+5*x*y^(1/2)>>subs(f,2)ans=4*y+10*y^(1/2)>>subs(f,y,2)ans=2*x^2+5*x*2^(1/2)>>subs(f,{x,y},{2,3})或subs(f,[x,y],[2,3])ans=29.32052/4/202346程序?qū)嵗?gt;>symsaxy>>f=x^2*y+5*x*sqrt(y);>>subs(f,a)

ans=a^2*y+5*a*y^(1/2)

>>subs(f,y,a)ans=a*x^2+5*x*a^(1/2)2/4/2023475.3.7反函數(shù)的運算g=finverse(f)命令用于求函數(shù)f的反函數(shù)。g=finverse(f,v)指定對變量v求反函數(shù)。2/4/202348程序?qū)嵗?gt;>symsxy>>f=x^2+y;>>finverse(f,x)Warning:finverse(x^2+y)isnotunique.>Insym.finverseat43ans=(-y+x)^(1/2)>>finverse(f,y)ans=-x^2+y2/4/2023495.3.8復(fù)合函數(shù)的運算compose(f,g)返回f=f(x)和g=g(y)時的復(fù)合函數(shù)f(g(y)),就是原來的默認變量用函數(shù)g完整替代。compose(f,g,z)返回f=f(x)和g=g(y)時的復(fù)合函數(shù)f(g(z)),z為指定變量,代替復(fù)合函數(shù)中默認變量,即先用z替代默認變量再復(fù)合。compose(f,g,x,z)返回復(fù)合函數(shù)f(g(z))。即指定變量x用g(z)替代,如果g(z)中有z,則g(z)函數(shù)保持原形不變,如沒有,則默認變量用z替代。compose(f,g,x,y,z)返回復(fù)合函數(shù)f(g(y))。首先g(y)中的指定變量y用z代替,原有的z不變,然后f(x)中的指定變量x用g(z)代替。2/4/202350程序?qū)嵗?gt;>symsxyztu>>f=1/(1+x^2);>>g=sin(y);>>h=x^t;>>p=exp(-y/u);>>compose(f,g)ans=1/(1+sin(y)^2)>>compose(f,g,t)ans=1/(1+sin(t)^2)2/4/202351程序?qū)嵗?gt;>compose(h,g,x,z)ans=sin(z)^t>>compose(h,g,t,z)ans=x^sin(z)>>compose(h,p,x,y,z)ans=exp(-z/u)^t>>compose(h,p,t,u,z)ans=x^exp(-y/z)2/4/202352程序?qū)嵗?gt;>symsxyztu>>f=1/(1+x^2)+y-z*t+sin(u);>>g=x+z*sin(y)-t*u;>>h=x^t-y*z+z^u;>>p=x*z+exp(-y/u)-log(t);>>compose(f,g)ans=1/(1+(x+z*sin(y)-t*u)^2)+y-z*t+sin(u)>>compose(f,g,t)ans=1/(1+(t+z*sin(y)-t*u)^2)+y-z*t+sin(u)2/4/202353程序?qū)嵗?gt;>symsxyztu>>f=1/(1+x^2)+y-z*t+sin(u);>>g=x+z*sin(y)-t*u;>>h=x^t-y*z+z^u;>>p=x*z+exp(-y/u)-log(t);>>compose(h,g,x,z)ans=(x+z*sin(y)-t*u)^t-y*z+z^u>>compose(h,g,t,z)ans=x^(x+z*sin(y)-t*u)-y*z+z^u2/4/202354程序?qū)嵗?gt;>symsxyztu>>f=1/(1+x^2)+y-z*t+sin(u);>>g=x+z*sin(y)-t*u;>>h=x^t-y*z+z^u;>>p=x*z+exp(-y/u)-log(t);>>compose(h,p,x,y,z)ans=(x*z+exp(-z/u)-log(t))^t-y*z+z^u>>compose(h,p,t,u,z)ans=x^(x*z+exp(-y/z)-log(t))-y*z+z^u2/4/2023555.3.9提取分子、分母如果符號表達式是有理式形式或可展開為有理分式的形式,則可通過函數(shù)numden來提取符號表達式中的分子與分母。numden函數(shù)可將符號表達式合并、有理化,并返回所得的分子與分母。其調(diào)格式如下:[n,d]=numden(a)提取符號表達式a的分子與分母,并分別把其存放在n與d中;n=numden(a)提取符號表達式a的分子與分母,但只把分子存放在n中。2/4/202356程序?qū)嵗?gt;>f=sym('a*x^2/(b-x)');>>[n,d]=numden(f)n=-a*x^2d=-b+x>>k=numden(f)k=-a*x^22/4/2023575.4符號微積分微積分是高等數(shù)學中最重要的基礎(chǔ)內(nèi)容之一,它被廣泛地應(yīng)用于許多的工程學科中。MATLAB的符號數(shù)學工具箱為我們提供了快速、簡便地計算微積分的工具。MATLAB符號數(shù)學工具箱中的符號微積分包括符號極限、符號微分、符號積分等。2/4/2023585.4.1符號極限極限是高等數(shù)學的出發(fā)點,同時它也是微積分學的基礎(chǔ)。在MATLAB中,符號極限由函數(shù)“l(fā)imit”來實現(xiàn)的。Limit函數(shù)的調(diào)用格式如下:limit(f,x,a)計算符號表達式當x→a時f=f(x)的極限值。limit(f,a)命令使用命令findsym(f)確定f中的自變量當其→a時f的極限。limit(f)命令使用命令findsym(f)確定f中的自變量當其→0時f的極限。limit(f,x,a,’right(left)’)求x→a的左、右極限。limit(f,x,±inf)計算符號表達式當x→正負無窮時f=f(x)的極限值。2/4/202359程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>a=limit(f)a=cos(t*y)>>b=limit(f,t)b=cos(t*y)+sin(t*y)2/4/202360程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>c=limit(f,t,0)c=sin(x*y)+1>>d=limit(f,t,pi)d=cos(pi*y)+sin(x*y)2/4/202361程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>a=limit(f,y,3,'left')a=

cos(3*t)+sin(3*x)>>b=limit(f,x,2,'right')b=

sin(2*y)+cos(t*y)2/4/202362程序?qū)嵗?gt;>symsxn>>f1=limit((1+x/n)^n,n,inf)f1=exp(x)>>f2=limit((1-x/n)^n,n,inf)f2=1/exp(x)2/4/2023635.4.2符號微分和求導(dǎo)微分是高等數(shù)學中最基礎(chǔ)的內(nèi)容之一。在MATLAB中,符號微分由函數(shù)“diff”來實現(xiàn)的。diff函數(shù)可同時計算數(shù)值微分與符號微分。diff函數(shù)的調(diào)用格式如下:diff(f)對f中默認的符號變量求導(dǎo)。diff(f,n)對f中默認的符號變量求n階導(dǎo)。diff(f,x)對f中指定的自變量x求導(dǎo)。diff(f,x,n)對f中指定的自變量x求n階導(dǎo)。說明:n是正整數(shù)時,對指定的變量求n階導(dǎo),當n是小數(shù)時,按四舍五入原則先取整,然后求導(dǎo),當n是負數(shù)時,默認求指定變量的一階導(dǎo)數(shù)。n還可以是字符串,相當于對新指定的符號變量求導(dǎo),結(jié)果為0。小于1的數(shù)將對函數(shù)求一階導(dǎo)。2/4/202364程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>a=diff(f)

a=

y*cos(x*y)

>>b=diff(f,3)

b=

-y^3*cos(x*y)2/4/202365程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>c=diff(f,t)

c=

-y*sin(t*y)

>>d=diff(f,t,3)

d=

y^3*sin(t*y)2/4/202366程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>a=diff(f,7.5)

a=

y^8*sin(x*y)

>>b=diff(f,pi)

b=

-y^3*cos(x*y)2/4/202367程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>a=diff(f,-3)

a=

y*cos(x*y)

>>b=diff(f,-5.2)

b=

y*cos(x*y)2/4/202368程序?qū)嵗?gt;>symsxyt>>f=sin(x*y)+cos(y*t);>>diff(f,a)???Illegalrighthandsideinassignment.Toomanyelements.Errorin==>sym.diffat30x=a.s;>>diff(f,'a')ans=02/4/202369程序?qū)嵗?gt;>symsxy>>a=[x^2+x*y;sin(x)*cos(y)];>>diff(a)ans=2*x+ycos(x)*cos(y)>>diff(a,y)ans=x-sin(x)*sin(y)2/4/202370jacobian(f,v)命令用于計算數(shù)量或向量f對于向量v的jacobi矩陣,所得結(jié)果的第i行第j列的數(shù)是df(i)/df(j)。f是數(shù)量時返回f的梯度。2/4/202371程序?qū)嵗?gt;>symsxyz>>a=[x^2+x*y;sin(x)*cos(y)];>>jacobian(a,[x,y])ans=[2*x+y,x][cos(x)*cos(y),-sin(x)*sin(y)]2/4/202372程序?qū)嵗?gt;>symsxyz>>a=[x^2+x*y,sin(x)*cos(y)];>>jacobian(a,[x,y,z])

ans=

[2*x+y,x,0][cos(x)*cos(y),-sin(x)*sin(y),0]2/4/202373程序?qū)嵗?gt;>symsxyz>>a=[x^2+x*y,sin(x)*cos(y);x+sin(y),sin(x*y)-cos(x)];>>jacobian(a,[x,y])ans=[2*x+y,x][1,cos(y)][cos(x)*cos(y),-sin(x)*sin(y)][cos(x*y)*y+sin(x),cos(x*y)*x]2/4/202374程序?qū)嵗?gt;>symsxyz>>a=[x^2+x*y,sin(x)*cos(y);x+sin(y),sin(x*y)-cos(x)];>>jacobian(a,[x,y,z])ans=[2*x+y,x,0][1,cos(y),0][cos(x)*cos(y),-sin(x)*sin(y),0][cos(x*y)*y+sin(x),cos(x*y)*x,0]2/4/2023755.4.3符號積分由高等數(shù)學可知,積分比微分復(fù)雜得多。很多情況下,積分不一定能成功。當在MATLAB中進行符號積分,找不到原函數(shù)時,它將返回未經(jīng)計算的命令。符號積分由函數(shù)int來實現(xiàn)。int函數(shù)的調(diào)用格式如下所示:int(f)命令對f求不定積分,常數(shù)項默認為0。int(f,v)命令對f中的變量v求不定積分。int(f,a,b)命令對f進行[a,b]上求定積分。int(f,v,a,b)命令對f中的變量v進行[a,b]上求定積分。MATLAB還提供了一個交互性的近似積分命令rsums,該命令可以計算一元函數(shù)在某有限的閉區(qū)間上的積分數(shù)值。調(diào)用格式為rsums(f,a,b)其中f為積分表達式,a,b為積分上下限。2/4/202376程序?qū)嵗?gt;>symsxyt>>f=x^2+y^2+t^2;>>a=int(f)

a=

x^3/3+(t^2+y^2)*x

>>b=int(f,y)

b=

y^3/3+(t^2+x^2)*y2/4/202377程序?qū)嵗?gt;>symsxyt>>f=x^2+y^2+t^2;>>c=int(f,1,2)

c=

t^2+y^2+7/3

>>d=int(f,y,1,2)

d=

t^2+x^2+7/32/4/202378程序?qū)嵗?gt;>symsxytab>>f=x^2+y^2+t^2;>>m1=int(f,a,b)

m1=

-((a-b)*(a^2+a*b+b^2+3*t^2+3*y^2))/3

>>m2=int(f,t,a,b)

m2=

-((a-b)*(a^2+a*b+b^2+3*x^2+3*y^2))/32/4/202379程序?qū)嵗?gt;>symsx>>f=(x-1)^3+x^2+4*x;>>rsums(f,-1,2)2/4/2023802/4/2023812/4/2023825.4.4符號級數(shù)求和在數(shù)學分析中,級數(shù)求和是一個重要內(nèi)容,MATLAB中使用symsum函數(shù)求解符號表達式的和。調(diào)用格式如下:R=symsum(s,a,b)將符號表達式s中默認變量從a到b時的有限和。R=symsum(s,v,a,b)將符號表達式s中指定變量從a到b時的有限和。2/4/202383程序?qū)嵗炞C下列結(jié)果2/4/202384程序?qū)嵗?gt;>symsxk>>a=symsum(1/k^2,1,inf)a=pi^2/6>>b=symsum(x^k/sym('k!'),k,0,inf)b=exp(x)2/4/2023855.5符號代數(shù)方程的求解在MATLAB符號數(shù)學工具箱中,符號方程式是含有等號的符號表達式。符號方程的求解包括符號線性方程的求解、非線性方程的求解和符號微分方程的求解等。2/4/2023865.5.1符號非線性方程組的求解符號代數(shù)非線性方程的求解可以通過函數(shù)fsolve來實現(xiàn)。fsolve函數(shù)以最小二乘法求解非線性方程,其調(diào)用格式如下:x=fsolve(fun,x0)命令以x0為初始矩陣來求解方程fun。[x,fval]=fsolve(fun,x0)命令以x0為初始矩陣來求解方程fun,同時輸出方程根對應(yīng)的函數(shù)值。其中fun可以是函數(shù)名也可以是符號表達式。2/4/202387程序?qū)嵗?gt;>x1=fsolve('x(1).^2-2*x(2)',[12])x1=1.64621.3551>>x2=fsolve('x(1).^2-sin(x(2))',[12])x2=0.95561.99082/4/202388程序?qū)嵗褂胒solve函數(shù)求解下面非線性方程組。2/4/202389程序?qū)嵗紫染帉懛匠探M的M文件。functiony=myfun2(x)y(1)=3*x(1)^2-x(2)^2;y(2)=3*x(1)*x(2)^2-x(1)^2-1;2/4/202390程序?qū)嵗诿畲翱谳斎?gt;>x0=[0.80.4];>>x=fsolve('myfun2',x0)Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.x=0.52080.90202/4/202391程序?qū)嵗?gt;>x0=[0.80.4];>>[x,fval]=fsolve('myfun2',x0)Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.x=0.52080.9020fval=1.0e-006*-0.02090.19282/4/2023925.5.2一般符號代數(shù)方程求解在MATLAB7.0語言中,使用solve函數(shù)求解一般的符號代數(shù)方程組。其使用格式為:solve(eq1,eq2,……eqn)求解由符號表達式或不帶等號的字符串eq1,eq2,……eqn組成的方程組。自變量為默認自變量。solve(eq1,eq2,……eqn,var1,var2,……varn)求解由符號表達式或不帶等號的字符eq1,eq2,……eqn組成的方程組。自變量由var1,var2,……varn來指定。得到結(jié)構(gòu)體形式的解。當方程組中的符號變量個數(shù)大于求解的變量個數(shù)時只求解靠x最近的n個變量的解,其他變量作為常量對待。輸出結(jié)果時,可采用解的結(jié)構(gòu)體輸出方式自動判斷求解變量。2/4/202393程序?qū)嵗?gt;>x=solve('p*sin(x)=r')x=asin(r/p)

>>r=solve('p*sin(x)=r')r=asin(r/p)

>>x=solve('p*sin(x)-r')x=asin(r/p)2/4/202394程序?qū)嵗?gt;>x=solve('p*sin(x)=r','p')x=r/sin(x)>>p=solve('p*sin(x)=r','p')p=r/sin(x)>>p=solve('p*sin(x)-r','p')p=r/sin(x)2/4/202395程序?qū)嵗?gt;>[x,y]=solve('x+y=5','x-y=1')x=3y=2>>[y,x]=solve('x+y=5','x-y=1')y=3x=22/4/202396程序?qū)嵗?gt;>s=solve('x+y=5','x-y=1')s=x:[1x1sym]y:[1x1sym]>>s.x

ans=3

>>s.y

ans=22/4/202397程序?qū)嵗?gt;>x=solve('x+y=5','x-y=1','x')Warning:2equationsin1variables.>Insolveat113Warning:Explicitsolutioncouldnotbefound.>Insolveat140

x=

[emptysym]2/4/202398程序?qū)嵗?gt;>[x,y,z]=solve('x+y+z=5','x-y-z=1')???Errorusing==>solve2variablesdoesnotmatch3outputs.>>[x,y,z]=solve('x+y+z=5','x-y-z=1','x-y+z=7')x=3y=-1z=32/4/202399程序?qū)嵗?gt;>[x,y,z]=solve('a+b+c=15','a+b-c=3','a-b+c=5')

x=

4

y=

5

z=

62/4/2023100程序?qū)嵗?gt;>[a,b,c]=solve('a+b+c=15','a+b-c=3','a-b+c=5')

a=

4

b=

5

c=

62/4/2023101程序?qū)嵗?gt;>s=solve('a+b+c=15','a+b-c=3','a-b+c=5')s=a:[1x1sym]b:[1x1sym]c:[1x1sym]>>s.aans=4>>s.bans=5>>s.cans=62/4/2023102程序?qū)嵗?gt;>[a,b]=solve('a+b+c=15','a+b-c=3','a-b+c=5')???Errorusing==>solve3variablesdoesnotmatch2outputs.>>[a,b]=solve('a+b+c=15','a+b-c=3')

a=

-a+9

b=

62/4/2023103程序?qū)嵗?gt;>s=solve('a+b+c=15','a+b-c=3')s=b:[1x1sym]c:[1x1sym]>>s.bans=-a+9>>s.cans=6>>s.a???Referencetonon-existentfield'a'.2/4/2023104工程實例問題描述:一圓半徑為2,并以x=3,y=5為圓心,另一圓半徑為b,并以x=5,y=3為圓心。找兩圓的交點。且當b=3時的解。解題過程:首先建立兩個圓的方程,然后采用符號方程求解計算出交點坐標,左后采用符號代換計算出焦點的具體坐標。第一圓方程(x-3)*(x-3)+(y-5)*(y-5)=2*2第二圓方程(x-3)*(x-3)+(y-5)*(y-5)=b*b2/4/2023105求解過程>>symsxyb>>[x,y]=solve((x-3).^2+(y-5).^2-4,(x-5).^2+(y-3).^2-b.^2)x=9/2-1/8*b^2+1/8*(-16+24*b^2-b^4)^(1/2)9/2-1/8*b^2-1/8*(-16+24*b^2-b^4)^(1/2)y=7/2+1/8*b^2+1/8*(-16+24*b^2-b^4)^(1/2)7/2+1/8*b^2-1/8*(-16+24*b^2-b^4)^(1/2)>>subs(x,b,3)ans=4.73862.0114>>subs(y,b,3)ans=5.98863.26142/4/20231065.6符號微分方程的求解符號微分方程求解可以通過函數(shù)dsolve來實現(xiàn),dsolve函數(shù)的調(diào)用格式如下:dsolve(‘eqn1’,’eqn2’,...,cond1,cond2,…,’v’),其中,對給定的常微分方程(組)eq1、eq2......中指定的符號自變量v,與給定的邊界條件和初始條件cond1、cond2......求符號解。若沒有指定變量v,則默認變量為t,在微分方程表達式中,D=d/dt、D2=d2/dt2......。微分算子D后面的字母就是待求解的未知函數(shù)。初始和邊界條件由字符串表示,若邊界條件少于方程組的階數(shù),則結(jié)果中會出現(xiàn)任意常數(shù)c。2/4/2023107函數(shù)的輸出結(jié)果可能存在三種情況:(1)一個方程和一個輸出,則返回符號向量中非線性方程的聯(lián)立解;(2)幾個方程與相同個數(shù)的輸出,返回的結(jié)果是按字母順序排序,并且分配給輸出參數(shù);(3)幾個方程和一個輸出,則返回解的結(jié)構(gòu)。如果解不是顯式形式,則被認為是隱式形式。當一個隱式形式的解返回時,會給出警告。如果解既不是顯式形式,也不是隱式形式,也會給出警告,同時返回的是一個空字符串。在一些非線性方程中,輸出結(jié)果可能是降階的微分方程或是積分方程。2/4/2023108程序?qū)嵗?gt;>y1=dsolve('Dx=-a*x')

y1=

C1*exp(-a*t)

>>y2=dsolve('(Dy)^2+y^2=1','y(0)=0')

y2=

sin(t)-sin(t)2/4/2023109程序?qū)嵗?gt;>[f,g]=dsolve('Df=f+g','Dg=-f+g','f(0)=1','g(0)=2')f=exp(t)*(2*sin(t)+cos(t))g=exp(t)*(2*cos(t)-sin(t))

>>[f,g]=dsolve('Df=f+g','Dg=-f+g','f(0)=1','g(0)=2','x')f=exp(x)*(2*sin(x)+cos(x))g=exp(x)*(2*cos(x)-sin(x))2/4/2023110程序?qū)嵗?gt;>s=dsolve('Df=f+g','Dg=-f+g','f(0)=1','g(0)=2')s=f:[1x1sym]g:[1x1sym]>>s.fans=exp(t)*(2*sin(t)+cos(t))

>>s.gans=exp(t)*(2*cos(t)-sin(t))2/4/20231115.7符號函數(shù)畫圖MATLAB的符號工具箱也為用戶對符號函數(shù)進行畫圖提供了方便。符號函數(shù)畫圖可以通過函數(shù)ezplot或fplot來實現(xiàn)。其中,函數(shù)ezplot的調(diào)用格式如下:ezplot(f)表示在默認區(qū)間-2*pi<x<2*pi繪制f=f(x)的函數(shù)圖或在默認區(qū)間-2*pi<x<2*pi和-2*pi<y<2*pi繪制f(x,y)=0的函數(shù)圖。ezplot(f,[a,b])同上,繪圖區(qū)間變?yōu)閇a,b]。ezplot(f,[xmin,xmax,ymin,ymax])同上,繪圖區(qū)間變?yōu)閤為[xmin,xmax],y為[ymin,ymax]。ezplot(x,y)表示在區(qū)間0<t<2*pi繪制x=x(t)和y=y(t)的函數(shù)圖。ezplot(x,y,[tmin,tmax])表示在區(qū)間tmin<t<tmax繪制x=x(t)和y=y(t)的函數(shù)圖。2/4/2023112程序?qū)嵗?gt;>symsx>>f=x^2-9;>>ezplot(f)2/4/2023113結(jié)果圖形2/4/2023114程序?qū)嵗?gt;>symsxy>>f=x^2+y^2-9;>>ezplot(f)2/4/2023115結(jié)果圖形2/4/2023116ezplot('x.^2+y.^2-9')2/4/2023117ezplot('x.^2+y.^2-9=0')2/4/2023118程序?qū)嵗?gt;>symsxy>>f=x^2+y^2-9;>>ezplot(f,[-3,3])2/4/2023119結(jié)果圖形2/4/2023120程序?qū)嵗?gt;>

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論