![第5章 符號運算_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/e3514bea-303a-4934-a1c5-b42f9470e374/e3514bea-303a-4934-a1c5-b42f9470e3741.gif)
![第5章 符號運算_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/e3514bea-303a-4934-a1c5-b42f9470e374/e3514bea-303a-4934-a1c5-b42f9470e3742.gif)
![第5章 符號運算_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/e3514bea-303a-4934-a1c5-b42f9470e374/e3514bea-303a-4934-a1c5-b42f9470e3743.gif)
![第5章 符號運算_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/e3514bea-303a-4934-a1c5-b42f9470e374/e3514bea-303a-4934-a1c5-b42f9470e3744.gif)
![第5章 符號運算_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/15/e3514bea-303a-4934-a1c5-b42f9470e374/e3514bea-303a-4934-a1c5-b42f9470e3745.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、MATLAB 7.0MATLAB 7.0從入從入門到精通門到精通哈爾濱工業(yè)大學哈爾濱工業(yè)大學( (威海威海) )汽車工程學院汽車工程學院2021-12-152課程主要內(nèi)容課程主要內(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仿真初探2021-12-153第第5章章 符號運算符號運算 數(shù)學問題的求解通常有兩條途徑可循,一是求它的解析解,二是求它的數(shù)值解。求解析解的主要工具是符號運算。所謂符號運算是指運算的主要
2、對象是符號、文字,或說是變量。2021-12-1545.1 符號表達式的生成 符號表達式是代表數(shù)字、函數(shù)、算子和變量的MATLAB字符串,或字符串數(shù)組。不要求變量有預先確定的值,符號方程式是含有等號的符號表達式。符號算數(shù)是使用已知的規(guī)則和給定符號恒等式求解這些符號方程的實踐,它與代數(shù)和微積分所學到的求解方法完全一樣。符號矩陣式數(shù)組,其元素是符號表達式。 符號表達式的生成可采用sym和syms函數(shù)生成。2021-12-1555.1.1 符號常量 符號常量是一種符號對象??捎胹ym函數(shù)生成,可用class函數(shù)來檢測其數(shù)據(jù)類型。2021-12-156程序?qū)嵗?a=sqrt(2) a = 1.4142
3、 b=sym(sqrt(2) b = sqrt(2) c=sqrt(sym(2) c = 2(1/2)2021-12-157程序?qū)嵗?a=sqrt(2) a = 1.4142 b=sym(sqrt(2) b = sqrt(2) class(a) ans = double class(b) ans = sym2021-12-1585.1.2 符號變量及符號表達式 使用sym函數(shù)也可定義符號表達式,一是將每一個變量定義為符號變量,二是將整個表達式集體定義。也可以直接用單引號生成。 函數(shù)syms功能比sym更為強大,它可以一次創(chuàng)建任意多個符號變量。使用格式如下: syms var1 var2.202
4、1-12-159程序?qū)嵗?a=sym(a); b=sym(b); c=sym(c); x=sym(x); f=a*x2+b*x+c f = a*x2 + b*x + c2021-12-1510程序?qū)嵗?f=sym(a*x2+b*x+c) f = a*x2+b*x+c g=sym(a*sin(b*x+c) g = a*sin(b*x+c)2021-12-1511程序?qū)嵗?syms a b c x f=a*x2+b*x+c f = a*x2 + b*x + c g=a*sin(b*x+c) g = a*sin(c + b*x)2021-12-15125.1.3 符號矩陣 元素是符號對象的矩陣叫做符
5、號矩陣。在MATLAB7.0語言中,符號矩陣的生成與數(shù)值矩陣的相關(guān)操作很相似。 使用sym函數(shù)直接生成符號矩陣,各符號表達式長度相同。2021-12-1513程序?qū)嵗?m1=sym(asd we;re as) m1 = asd, we re, as m2=sym(5 6;1 2) m2 = 5, 6 1, 22021-12-15145.2 符號變量的基本操作 符號變量的基本操作主要包括符號變量的查找、符號變量的精度設(shè)置、數(shù)值型變量與符號型變量的轉(zhuǎn)換。2021-12-15155.2.1 符號變量查詢 函數(shù)findsym用于找出一個表達式中存在哪些符號變量。 findsym(s)列出全部符號變量,
6、findsym(s,n)列出靠x最近的n個符號變量。2021-12-1516程序?qū)嵗?f=sym(a*x2+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,b2021-12-15175.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。2021-
7、12-1518程序?qū)嵗?digits Digits = 32 digits(100) digits Digits = 100 digits(32) digits Digits = 322021-12-1519程序?qū)嵗?r1=vpa(pi) r1 = 3.1415926535897932384626433832795 r2=vpa(pi,4) r2 = 3.142 r2=vpa(pi,5) r2 = 3.14162021-12-15205.2.3 數(shù)值型變量與符號型變量的轉(zhuǎn)換 將數(shù)值形式轉(zhuǎn)換為符號形式:將數(shù)值形式轉(zhuǎn)換為符號形式: 對于任意數(shù)值型變量t,使用sym函數(shù)可以將其轉(zhuǎn)換為4種形式的符號變
8、量,分別為:有理數(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)化為它對應的多項式。2021-12-1521程序?qū)嵗?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 = .10000000000000000555111512312578
9、2021-12-1522程序?qū)嵗?a=1 2 3 4 5; f=poly2sym(a) f = x4+2*x3+3*x2+4*x+52021-12-1523 將符號形式轉(zhuǎn)換為數(shù)值形式:將符號形式轉(zhuǎn)換為數(shù)值形式: 將符號形式轉(zhuǎn)化為數(shù)值形式主要用函數(shù)eval來實現(xiàn)。另外,使用sym2poly函數(shù)實現(xiàn)將多項式轉(zhuǎn)化為它對應的系數(shù)向量。2021-12-1524程序?qū)嵗?a=sym(sqrt(5) a = sqrt(5) b=eval(a) b = 2.23612021-12-1525程序?qū)嵗?syms x f=x3-4*x+5; c=sym2poly(f) c = 1 0 -4 52021-12-152
10、65.3 符號表達式的操作 用戶可以對符號表達式進行各種操作,包括四則運算、合并同類項、多項式分解和簡化等。2021-12-15275.3.1 符號表達式的四則運算 符號表達式也與通常的算術(shù)式一樣,可以進行四則運算。 在符號對象的比較中只有相等與否,沒有大小關(guān)系比較; 三角函數(shù)的符號運算與數(shù)值運算法則基本相同; 符號運算的指數(shù)函數(shù)運算與前面數(shù)值運算法則相同,對數(shù)運算對于符號運算來說只能使用log函數(shù),因此log2(sym(a)=log(a)/log(2)。 符號運算的復數(shù)運算與數(shù)值復數(shù)運算相同。2021-12-1528程序?qū)嵗?syms x y a b f1=sin(x)+cos(y); f2
11、=a+b; f=f1*f2 f = (a + b)*(cos(y) + sin(x)2021-12-15295.3.2 符號表達式合并同類項 collect(s,v)命令將符號矩陣s中所有同類項合并,并以v為符號變量輸出。 collect(s)命令使用findsym函數(shù)規(guī)定的默認變量代替上式中的v。2021-12-1530程序?qū)嵗?syms x y collect(x2*y+y*x-x2-2*x,x) ans = (y-1)*x2+(y-2)*x collect(x2*y+y*x-x2-2*x,y) ans = (x2+x)*y-x2-2*x collect(x2*y+y*x-x2-2*x)
12、ans = (y-1)*x2+(y-2)*x2021-12-15315.3.3 符號多項式的因式分解 使用expand函數(shù)將表達式中的括號進行展開;使用factor函數(shù)將表達式進行因式分解;使用horner函數(shù)將一般的表達式變換為嵌套的形式,默認x為第一變量。2021-12-1532程序?qū)嵗?syms x y f=(x-1)*(x-2)*(x-3)*(y-4); g=expand(f) g = x3*y-4*x3-6*x2*y+24*x2+11*x*y-44*x-6*y+242021-12-1533程序?qū)嵗?syms x y g =x3*y-4*x3-6*x2*y+24*x2+11*x*y-4
13、4*x-6*y+24; f=factor(g) f = (x-1)*(x-2)*(x-3)*(y-4)2021-12-1534程序?qū)嵗?syms x y g =x3*y-4*x3-6*x2*y+24*x2+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)*x2021-12-1535程序?qū)嵗?syms x y f=x2-2*x+y2-3*y*x; horner(f) ans = y2+(-2-3*y+x)*x2021-12-15365.3.4 符號表達式的簡化 使用simplify函數(shù)和simple
14、函數(shù)進行符號表達式的簡化。 simplify(s)命令將符號表達式s中的每一個元素都進行簡化,該函數(shù)的缺點是即使多次運用此函數(shù)也不一定得到最簡形式。 simple(s)命令使用多種代數(shù)簡化方法對符號表達式s進行簡化,并顯示其中最簡單的結(jié)果。 r,how=simple命令在返回最簡單的結(jié)果的同時,返回一個描述得到該最簡結(jié)果所用簡化方法的字符串how。2021-12-1537程序?qū)嵗?syms x f=(x-2).2+3*(x-3); simplify(f) ans = x2-x-52021-12-1538程序?qū)嵗?syms x f=(x-2).2+3*(x-3); r,how=simple(f)
15、 r = x2-x-5 how = simplify2021-12-1539程序?qū)嵗?syms x f=(x-3).3-3*x+(x-1)/(x+2).2-2*x.2; simplify(f) ans = (x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)22021-12-1540程序?qū)嵗?syms x f=(x-3).3-3*x+(x-1)/(x+2).2-2*x.2; simple(f) simplify: (x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)2 radsimp: (x5-7*x4-16*x3+25*x2-109-11*x)/(x+
16、2)2 combine(trig): (x5-7*x4-16*x3+25*x2-109-11*x)/(x2+4*x+4)2021-12-1541 factor: (x5-7*x4-16*x3+25*x2-109-11*x)/(x+2)2 expand: x3-11*x2+24*x-27+1/(x+2)2*x-1/(x+2)2 combine: (x-3)3-3*x+(x-1)/(x+2)2-2*x2 convert(exp): (x-3)3-3*x+(x-1)/(x+2)2-2*x2 convert(sincos): (x-3)3-3*x+(x-1)/(x+2)2-2*x2 convert(t
17、an): (x-3)3-3*x+(x-1)/(x+2)2-2*x22021-12-1542 collect(x): (x-3)3-3*x+(x-1)/(x+2)2-2*x2 mwcos2sin: (x-3)3-3*x+(x-1)/(x+2)2-2*x2 ans = (x-3)3-3*x+(x-1)/(x+2)2-2*x2 syms x 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*x2 how = 2021-12-15435.3.5 書寫形式的轉(zhuǎn)化 pretty函數(shù)的使用 pre
18、tty(s)將符號表達式用書寫方式表示出來,默認寬度為79。 pretty(s,n)將符號表達式用書寫方式表示出來,寬度指定為n。2021-12-1544程序?qū)嵗?p=sym(x2-1)/(x+2)+(2*x+5)/(3*x-2) p = (x2-1)/(x+2)+(2*x+5)/(3*x-2) pretty(p) 2 x - 1 2 x + 5 - + - x + 2 3 x - 22021-12-15455.3.6 subs函數(shù)用于替換求值 subs(s)命令將符號表達式s中的所有符號變量用調(diào)用函數(shù)中的值或matlab工作區(qū)間的值替代。 subs(s,new)命令將符號表達式s中的自由符號
19、變量用數(shù)值型變量或表達式new替換。 subs(s,old,new)命令將符號表達式s中的符號變量old用數(shù)值型變量或表達式new替換。 如沒指定被替換的變量,則默認選擇與x最接近的字母。2021-12-1546程序?qū)嵗?syms x y f=x2*y+5*x*sqrt(y); subs(f) ans = x2*y+5*x*y(1/2) subs(f,2) ans = 4*y+10*y(1/2) subs(f,y,2) ans = 2*x2+5*x*2(1/2) subs(f,x,y,2,3)或subs(f,x,y,2,3) ans = 29.32052021-12-1547程序?qū)嵗?syms
20、 a x y f=x2*y+5*x*sqrt(y); subs(f,a) ans = a2*y+5*a*y(1/2) subs(f,y,a) ans = a*x2+5*x*a(1/2)2021-12-15485.3.7 反函數(shù)的運算 g=finverse(f)命令用于求函數(shù)f的反函數(shù)。 g=finverse(f,v)指定對變量v求反函數(shù)。2021-12-1549程序?qū)嵗?syms x y f=x2+y; finverse(f,x) Warning: finverse(x2+y) is not unique. In sym.finverse at 43 ans = (-y+x)(1/2) fin
21、verse(f,y) ans = -x2+y2021-12-15505.3.8 復合函數(shù)的運算 compose(f,g)返回f=f(x)和g=g(y)時的復合函數(shù)f(g(y),就是原來的默認變量用函數(shù)g完整替代。 compose(f,g,z)返回f=f(x)和g=g(y)時的復合函數(shù)f(g(z),z為指定變量,代替復合函數(shù)中默認變量,即先用z替代默認變量再復合。 compose(f,g,x,z)返回復合函數(shù)f(g(z)。即指定變量x用g(z)替代,如果g(z)中有z,則g(z)函數(shù)保持原形不變,如沒有,則默認變量用z替代。 compose(f,g,x,y,z)返回復合函數(shù)f(g(y)。首先g(
22、y)中的指定變量y用z代替,原有的z不變,然后f(x)中的指定變量x用g(z)代替。2021-12-1551程序?qū)嵗?syms x y z t u f=1/(1+x2); g=sin(y); h=xt; p=exp(-y/u); compose(f,g) ans = 1/(1+sin(y)2) compose(f,g,t) ans = 1/(1+sin(t)2)2021-12-1552程序?qū)嵗?compose(h,g,x,z) ans = sin(z)t compose(h,g,t,z) ans = xsin(z) compose(h,p,x,y,z) ans = exp(-z/u)t com
23、pose(h,p,t,u,z) ans = xexp(-y/z)2021-12-1553程序?qū)嵗?syms x y z t u f=1/(1+x2)+y-z*t+sin(u); g=x+z*sin(y)-t*u; h=xt-y*z+zu; 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)2021-12-1554程序?qū)嵗?syms x y z t u f=1/(1+x2)+
24、y-z*t+sin(u); g=x+z*sin(y)-t*u; h=xt-y*z+zu; p=x*z+exp(-y/u)-log(t); compose(h,g,x,z) ans = (x+z*sin(y)-t*u)t-y*z+zu compose(h,g,t,z) ans = x(x+z*sin(y)-t*u)-y*z+zu 2021-12-1555程序?qū)嵗?syms x y z t u f=1/(1+x2)+y-z*t+sin(u); g=x+z*sin(y)-t*u; h=xt-y*z+zu; p=x*z+exp(-y/u)-log(t); compose(h,p,x,y,z) ans
25、= (x*z+exp(-z/u)-log(t)t-y*z+zu compose(h,p,t,u,z) ans = x(x*z+exp(-y/z)-log(t)-y*z+zu2021-12-15565.3.9 提取分子、分母 如果符號表達式是有理式形式或可展開為有理分式的形式,則可通過函數(shù)numden來提取符號表達式中的分子與分母。numden函數(shù)可將符號表達式合并、有理化,并返回所得的分子與分母。其調(diào)格式如下: n,d=numden(a)提取符號表達式a的分子與分母,并分別把其存放在n與d中; n=numden(a)提取符號表達式a的分子與分母,但只把分子存放在n中。2021-12-1557程
26、序?qū)嵗?f=sym(a*x2/(b-x); n,d=numden(f) n = -a*x2 d = -b+x k=numden(f) k = -a*x22021-12-15585.4 符號微積分 微積分是高等數(shù)學中最重要的基礎(chǔ)內(nèi)容之一,它被廣泛地應用于許多的工程學科中。MATLAB的符號數(shù)學工具箱為我們提供了快速、簡便地計算微積分的工具。MATLAB符號數(shù)學工具箱中的符號微積分包括符號極限、符號微分、符號積分等。2021-12-15595.4.1 符號極限 極限是高等數(shù)學的出發(fā)點,同時它也是微積分學的基礎(chǔ)。在MATLAB中,符號極限由函數(shù)“l(fā)imit”來實現(xiàn)的。Limit函數(shù)的調(diào)用格式如下:
27、limit(f,x,a)計算符號表達式當xa時f=f(x)的極限值。 limit(f,a)命令使用命令findsym(f)確定f中的自變量當其a時f的極限。 limit(f)命令使用命令findsym(f)確定f中的自變量當其0時f的極限。 limit(f,x,a,right(left)求xa的左、右極限。 limit(f,x,inf)計算符號表達式當x正負無窮時f=f(x)的極限值。2021-12-1560程序?qū)嵗?syms x y t f=sin(x*y)+cos(y*t); a=limit(f) a = cos(t*y) b=limit(f,t) b = cos(t*y) + sin(t
28、*y)2021-12-1561程序?qū)嵗?syms x y t 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)2021-12-1562程序?qū)嵗?syms x y t 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)2021-12-1563程序?qū)嵗?syms x n f1=limit(1+x/
29、n)n,n,inf) f1 = exp(x) f2=limit(1-x/n)n,n,inf) f2 = 1/exp(x)2021-12-15645.4.2 符號微分和求導 微分是高等數(shù)學中最基礎(chǔ)的內(nèi)容之一。在MATLAB中,符號微分由函數(shù)“diff”來實現(xiàn)的。diff函數(shù)可同時計算數(shù)值微分與符號微分。diff函數(shù)的調(diào)用格式如下: diff(f)對f中默認的符號變量求導。 diff(f,n)對f中默認的符號變量求n階導。 diff(f,x)對f中指定的自變量x求導。 diff(f,x,n)對f中指定的自變量x求n階導。 說明:n是正整數(shù)時,對指定的變量求n階導,當n是小數(shù)時,按四舍五入原則先取整
30、,然后求導,當n是負數(shù)時,默認求指定變量的一階導數(shù)。n還可以是字符串,相當于對新指定的符號變量求導,結(jié)果為0。小于1的數(shù)將對函數(shù)求一階導。2021-12-1565程序?qū)嵗?syms x y t f=sin(x*y)+cos(y*t); a=diff(f) a = y*cos(x*y) b=diff(f,3) b = -y3*cos(x*y)2021-12-1566程序?qū)嵗?syms x y t f=sin(x*y)+cos(y*t); c=diff(f,t) c = -y*sin(t*y) d=diff(f,t,3) d = y3*sin(t*y)2021-12-1567程序?qū)嵗?syms x
31、 y t f=sin(x*y)+cos(y*t); a=diff(f,7.5) a = y8*sin(x*y) b=diff(f,pi) b = -y3*cos(x*y)2021-12-1568程序?qū)嵗?syms x y t 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)2021-12-1569程序?qū)嵗?syms x y t f=sin(x*y)+cos(y*t); diff(f,a) ? Illegal right hand side in assignment. Too many
32、elements. Error in = sym.diff at 30 x = a.s; diff(f,a) ans = 02021-12-1570程序?qū)嵗?syms x y a=x2+x*y;sin(x)*cos(y); diff(a) ans = 2*x+y cos(x)*cos(y) diff(a,y) ans = x -sin(x)*sin(y)2021-12-1571 jacobian(f,v)命令用于計算數(shù)量或向量f對于向量v的jacobi矩陣,所得結(jié)果的第i行第j列的數(shù)是df(i)/df(j)。f是數(shù)量時返回f的梯度。2021-12-1572程序?qū)嵗?syms x y z a=x
33、2+x*y;sin(x)*cos(y); jacobian(a,x,y) ans = 2*x+y, x cos(x)*cos(y), -sin(x)*sin(y)2021-12-1573程序?qū)嵗?syms x y z a=x2+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), 02021-12-1574程序?qū)嵗?syms x y z a=x2+x*y,sin(x)*cos(y);x+sin(y),sin(x*y)-cos(x); jacobian(a,x,y) ans =
34、2*x+y, x 1, cos(y) cos(x)*cos(y), -sin(x)*sin(y) cos(x*y)*y+sin(x), cos(x*y)*x2021-12-1575程序?qū)嵗?syms x y z a=x2+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, 02021-12-15765.4.3 符號積分 由高等數(shù)學可知,
35、積分比微分復雜得多。很多情況下,積分不一定能成功。當在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為積分上下限。2021-12-15
36、77程序?qū)嵗?syms x y t f=x2+y2+t2; a=int(f) a = x3/3 + (t2 + y2)*x b=int(f,y) b = y3/3 + (t2 + x2)*y2021-12-1578程序?qū)嵗?syms x y t f=x2+y2+t2; c=int(f,1,2) c = t2 + y2 + 7/3 d=int(f,y,1,2) d = t2 + x2 + 7/32021-12-1579程序?qū)嵗?syms x y t a b f=x2+y2+t2; m1=int(f,a,b) m1 = -(a - b)*(a2 + a*b + b2 + 3*t2 + 3*y2)/
37、3 m2=int(f,t,a,b) m2 = -(a - b)*(a2 + a*b + b2 + 3*x2 + 3*y2)/32021-12-1580程序?qū)嵗?syms x f=(x-1)3+x2+4*x; rsums(f,-1,2)2021-12-15812021-12-15822021-12-15835.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
38、021-12-1584程序?qū)嵗?驗證下列結(jié)果xkkkekxk0212!612021-12-1585程序?qū)嵗?syms x k a=symsum(1/k2,1,inf) a = pi2/6 b=symsum(xk/sym(k!),k,0,inf) b = exp(x)2021-12-15865.5 符號代數(shù)方程的求解 在MATLAB符號數(shù)學工具箱中,符號方程式是含有等號的符號表達式。符號方程的求解包括符號線性方程的求解、非線性方程的求解和符號微分方程的求解等。2021-12-15875.5.1 符號非線性方程組的求解 符號代數(shù)非線性方程的求解可以通過函數(shù)fsolve來實現(xiàn)。fsolve函數(shù)以最小
39、二乘法求解非線性方程,其調(diào)用格式如下: x=fsolve(fun,x0)命令以x0為初始矩陣來求解方程fun。 x,fval=fsolve(fun,x0)命令以x0為初始矩陣來求解方程fun,同時輸出方程根對應的函數(shù)值。其中fun可以是函數(shù)名也可以是符號表達式。2021-12-1588程序?qū)嵗?x1=fsolve(x(1).2-2*x(2),1 2) x1 = 1.6462 1.3551 x2=fsolve(x(1).2-sin(x(2),1 2) x2 = 0.9556 1.99082021-12-1589程序?qū)嵗?使用fsolve函數(shù)求解下面非線性方程組。01303212212221xxx
40、xx2021-12-1590程序?qū)嵗?首先編寫方程組的M文件。 function y=myfun2(x) y(1)=3*x(1)2-x(2)2; y(2)=3*x(1)*x(2)2-x(1)2-1;2021-12-1591程序?qū)嵗?在命令窗口輸入 x0=0.8 0.4; x=fsolve(myfun2,x0) Optimization terminated: first-order optimality is less than options.TolFun. x = 0.5208 0.90202021-12-1592程序?qū)嵗?x0=0.8 0.4; x,fval=fsolve(myfun2,
41、x0) Optimization terminated: first-order optimality is less than options.TolFun. x = 0.5208 0.9020 fval = 1.0e-006 * -0.0209 0.19282021-12-15935.5.2 一般符號代數(shù)方程求解 在MATLAB7.0語言中,使用solve函數(shù)求解一般的符號代數(shù)方程組。其使用格式為: solve(eq1,eq2,eqn)求解由符號表達式或不帶等號的字符串eq1,eq2,eqn組成的方程組。自變量為默認自變量。 solve(eq1,eq2,eqn,var1,var2,varn
42、)求解由符號表達式或不帶等號的字符eq1,eq2,eqn組成的方程組。自變量由var1,var2,varn來指定。得到結(jié)構(gòu)體形式的解。當方程組中的符號變量個數(shù)大于求解的變量個數(shù)時只求解靠x最近的n個變量的解,其他變量作為常量對待。 輸出結(jié)果時,可采用解的結(jié)構(gòu)體輸出方式自動判斷求解變量。2021-12-1594程序?qū)嵗?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)2021-12-1595程序?qū)嵗?x=solve(p*sin(x)=r,p)
43、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)2021-12-1596程序?qū)嵗?x,y=solve(x+y=5,x-y=1) x = 3 y = 2 y,x=solve(x+y=5,x-y=1) y = 3 x = 22021-12-1597程序?qū)嵗?s=solve(x+y=5,x-y=1) s = x: 1x1 sym y: 1x1 sym s.x ans = 3 s.y ans = 22021-12-1598程序?qū)嵗?x=solve(x+y=5,x-y=1,x) Warni
44、ng: 2 equations in 1 variables. In solve at 113 Warning: Explicit solution could not be found. In solve at 140 x = empty sym 2021-12-1599程序?qū)嵗?x,y,z=solve(x+y+z=5,x-y-z=1) ? Error using = solve 2 variables does not match 3 outputs. x,y,z=solve(x+y+z=5,x-y-z=1,x-y+z=7) x = 3 y = -1 z = 32021-12-15100程
45、序?qū)嵗?x,y,z=solve(a+b+c=15,a+b-c=3,a-b+c=5) x = 4 y = 5 z = 62021-12-15101程序?qū)嵗?a,b,c=solve(a+b+c=15,a+b-c=3,a-b+c=5) a = 4 b = 5 c = 62021-12-15102程序?qū)嵗?s=solve(a+b+c=15,a+b-c=3,a-b+c=5) s = a: 1x1 sym b: 1x1 sym c: 1x1 sym s.a ans = 4 s.b ans = 5 s.c ans = 62021-12-15103程序?qū)嵗?a,b=solve(a+b+c=15,a+b-c=3
46、,a-b+c=5) ? Error using = solve 3 variables does not match 2 outputs. a,b=solve(a+b+c=15,a+b-c=3) a = -a+9 b = 62021-12-15104程序?qū)嵗?s=solve(a+b+c=15,a+b-c=3) s = b: 1x1 sym c: 1x1 sym s.b ans = -a+9 s.c ans = 6 s.a ? Reference to non-existent field a.2021-12-15105工程實例 問題描述:一圓半徑為2,并以x=3,y=5為圓心,另一圓半徑為b,
47、并以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*b2021-12-15106求解過程 syms x y b x,y=solve(x-3).2+(y-5).2-4,(x-5).2+(y-3).2-b.2) x = 9/2-1/8*b2+1/8*(-16+24*b2-b4)(1/2) 9/2-1/8*b2-1/8*(-16+24*b2-b4)(1/2
48、) y = 7/2+1/8*b2+1/8*(-16+24*b2-b4)(1/2) 7/2+1/8*b2-1/8*(-16+24*b2-b4)(1/2) subs(x,b,3) ans = 4.7386 2.0114 subs(y,b,3) ans = 5.9886 3.26142021-12-151075.6 符號微分方程的求解 符號微分方程求解可以通過函數(shù)dsolve來實現(xiàn),dsolve函數(shù)的調(diào)用格式如下: dsolve(eqn1,eqn2,.,cond1,cond2,v),其中,對給定的常微分方程(組)eq1、eq2.中指定的符號自變量v,與給定的邊界條件和初始條件cond1、cond2.
49、求符號解。若沒有指定變量v,則默認變量為t,在微分方程表達式中,D=d/dt、D2=d2/dt2.。微分算子D后面的字母就是待求解的未知函數(shù)。初始和邊界條件由字符串表示,若邊界條件少于方程組的階數(shù),則結(jié)果中會出現(xiàn)任意常數(shù)c。2021-12-15108 函數(shù)的輸出結(jié)果可能存在三種情況: (1)一個方程和一個輸出,則返回符號向量中非線性方程的聯(lián)立解; (2)幾個方程與相同個數(shù)的輸出,返回的結(jié)果是按字母順序排序,并且分配給輸出參數(shù); (3)幾個方程和一個輸出,則返回解的結(jié)構(gòu)。 如果解不是顯式形式,則被認為是隱式形式。當一個隱式形式的解返回時,會給出警告。 如果解既不是顯式形式,也不是隱式形式,也會給
50、出警告,同時返回的是一個空字符串。在一些非線性方程中,輸出結(jié)果可能是降階的微分方程或是積分方程。2021-12-15109程序?qū)嵗?y1=dsolve(Dx=-a*x) y1 = C1*exp(-a*t) y2=dsolve(Dy)2+y2=1,y(0)=0) y2 = sin(t) -sin(t)2021-12-15110程序?qū)嵗?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(
51、0)=2,x) f = exp(x)*(2*sin(x)+cos(x) g = exp(x)*(2*cos(x)-sin(x)2021-12-15111程序?qū)嵗?s=dsolve(Df=f+g,Dg=-f+g,f(0)=1,g(0)=2) s = f: 1x1 sym g: 1x1 sym s.f ans = exp(t)*(2*sin(t)+cos(t) s.g ans = exp(t)*(2*cos(t)-sin(t)2021-12-151125.7 符號函數(shù)畫圖 MATLAB的符號工具箱也為用戶對符號函數(shù)進行畫圖提供了方便。符號函數(shù)畫圖可以通過函數(shù)ezplot或fplot來實現(xiàn)。其中,函
52、數(shù)ezplot的調(diào)用格式如下: ezplot(f)表示在默認區(qū)間-2*pix2*pi繪制f=f(x)的函數(shù)圖或在默認區(qū)間-2*pix2*pi和-2*piy2*pi繪制f(x,y)=0的函數(shù)圖。 ezplot(f,a,b)同上,繪圖區(qū)間變?yōu)閍,b。 ezplot(f,xmin,xmax,ymin,ymax)同上,繪圖區(qū)間變?yōu)閤為xmin,xmax,y為ymin,ymax。 ezplot(x,y)表示在區(qū)間0t2*pi繪制x=x(t)和y=y(t)的函數(shù)圖。 ezplot(x,y,tmin,tmax)表示在區(qū)間tmint syms x f=x2-9; ezplot(f)2021-12-15114結(jié)
53、果圖形2021-12-15115程序?qū)嵗?syms x y f=x2+y2-9; ezplot(f)2021-12-15116結(jié)果圖形2021-12-15117 ezplot(x.2+y.2-9)2021-12-15118 ezplot(x.2+y.2-9=0)2021-12-15119程序?qū)嵗?syms x y f=x2+y2-9; ezplot(f,-3,3)2021-12-15120結(jié)果圖形2021-12-15121程序?qū)嵗?syms x y f=x2+y2-9; ezplot(f,-3,3,-4,5)2021-12-15122結(jié)果圖形2021-12-15123 ezplot(sin(x)-x2+2*y2=9)2021-12-15124程序?qū)嵗?syms x y t x=sin(3*t)*cos(t); y=sin(3*t)*sin(t); ezplot(x,y,0,pi)2021-12-15125結(jié)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒泉2025年甘肅酒泉市公安局招聘留置看護崗位輔警60人筆試歷年參考題庫附帶答案詳解
- 玉林2025年廣西玉林市第一人民醫(yī)院招聘24人筆試歷年參考題庫附帶答案詳解
- ??诤D虾?谑协偵絽^(qū)教育局招聘2025屆師范畢業(yè)生筆試歷年參考題庫附帶答案詳解
- 2025年中國太陽能十字路口單黃閃警示燈市場調(diào)查研究報告
- 2025年艾納素項目可行性研究報告
- 2025至2031年中國電磁式掃頻振動試驗機行業(yè)投資前景及策略咨詢研究報告
- 惠州2025年廣東惠州惠東縣第一批鄉(xiāng)鎮(zhèn)政府專職消防員招聘14人筆試歷年參考題庫附帶答案詳解
- 2025年木窗簾項目可行性研究報告
- 惠州2024年廣東惠州博羅縣招聘醫(yī)療衛(wèi)生單位工作人員164人筆試歷年參考題庫附帶答案詳解
- 2025至2031年中國四層多用蒸鍋行業(yè)投資前景及策略咨詢研究報告
- 成本合約規(guī)劃培訓
- 山東省濟寧市2025屆高三歷史一輪復習高考仿真試卷 含答案
- 五年級數(shù)學(小數(shù)乘法)計算題專項練習及答案
- 交通法規(guī)教育課件
- 產(chǎn)前診斷室護理工作總結(jié)
- 6S管理知識培訓課件
- 小學校長任期五年工作目標(2024年-2029年)
- 醫(yī)院培訓課件:《猴痘流行病學特點及中國大陸首例猴痘病例調(diào)查處置》
- 氫氣-安全技術(shù)說明書MSDS
- 產(chǎn)科護士臨床思維能力培養(yǎng)
- 北師大版六年級下冊數(shù)學全冊表格式教案
評論
0/150
提交評論