山大MATLAB編程指導(dǎo)課件第2章 符號(hào)計(jì)算_第1頁
山大MATLAB編程指導(dǎo)課件第2章 符號(hào)計(jì)算_第2頁
山大MATLAB編程指導(dǎo)課件第2章 符號(hào)計(jì)算_第3頁
山大MATLAB編程指導(dǎo)課件第2章 符號(hào)計(jì)算_第4頁
山大MATLAB編程指導(dǎo)課件第2章 符號(hào)計(jì)算_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第2章 符號(hào)計(jì)算教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo)一是講述MATLAB符號(hào)計(jì)算基本知識(shí),包括符號(hào)對(duì)象的創(chuàng)建、符號(hào)數(shù)字、符號(hào)表達(dá)式的操作; 二是介紹符號(hào)微積分的計(jì)算;三是介紹符號(hào)矩陣分析和代數(shù)方程(組)的符號(hào)解法;四是介紹符號(hào)計(jì)算結(jié)果的可視化。教學(xué)重點(diǎn)熟悉符號(hào)對(duì)象的創(chuàng)建、符號(hào)數(shù)字、符號(hào)表達(dá)式的操作。熟悉符號(hào)微積分的基本計(jì)算函數(shù)指令。熟悉代數(shù)方程(組)的符號(hào)解法。熟悉符號(hào)計(jì)算結(jié)果可視化的的基本指令。了解符號(hào)計(jì)算幫助系統(tǒng)及其幫助指令。 教學(xué)內(nèi)容2.1符號(hào)對(duì)象和符號(hào)表達(dá)式2.2 符號(hào)數(shù)字及表達(dá)式的操作 2.3 符號(hào)微積分2.4 微分方程的符號(hào)解法2.5 符號(hào)變換和符號(hào)卷積 2.6 符號(hào)矩陣分析和代數(shù)方程

2、解 2.7 代數(shù)狀態(tài)方程求符號(hào)傳遞函數(shù) 2.8 符號(hào)計(jì)算結(jié)果的可視化 2.9 符號(hào)計(jì)算資源深入利用Matlab的符號(hào)計(jì)算功能matlab自產(chǎn)生起就在數(shù)值計(jì)算上功能卓著,深受各專業(yè)計(jì)算人員的歡迎.但由于在數(shù)學(xué),物理等各種科研和工程應(yīng)用中經(jīng)常會(huì)遇到符號(hào)運(yùn)算的問題. 為此, 公司于1993年購買了 Maple 軟件的使用權(quán),并在此基礎(chǔ)上,開發(fā)了符號(hào)計(jì)算工具箱 (Symbolic Math Toolbox)matlab 從2008b 開始與符號(hào)計(jì)算語言MuPAD 相結(jié)合,到2009b止仍然支持Maple引擎(需單獨(dú)安裝Maple軟件) 。在此版本之間輸入指令symengine彈出選擇MuPAD和 Ma

3、ple引擎的窗口。從2010a開始不再支持Maple引擎。符號(hào)運(yùn)算與數(shù)值運(yùn)算的區(qū)別:符號(hào)運(yùn)算中,解算數(shù)學(xué)表達(dá)式、方程時(shí),不是在離散化的數(shù)值點(diǎn)上進(jìn)行,而是憑借一系列恒等式和數(shù)學(xué)定理,通過推理和演繹,獲得解析結(jié)果。這種計(jì)算建立在數(shù)值完全準(zhǔn)確表達(dá)和推演嚴(yán)格解析的基礎(chǔ)上,所得結(jié)果是完全準(zhǔn)確的。符號(hào)運(yùn)算代數(shù)運(yùn)算,公式推導(dǎo)數(shù)值運(yùn)算算術(shù)運(yùn)算代值2.1 符號(hào)對(duì)象和符號(hào)表達(dá)式在matlab中,數(shù)值和數(shù)值變量用于數(shù)值的存儲(chǔ)和各種數(shù)值計(jì)算.而符號(hào)常量,符號(hào)變量,符號(hào)函數(shù),符號(hào)操作等則是用來形成符號(hào)表達(dá)式,嚴(yán)格按照代數(shù),微積分等課程中的規(guī)則,公式進(jìn)行運(yùn)算,并盡可能給出解析表達(dá)式.2.1.1 符號(hào)對(duì)象的創(chuàng)建和衍生 數(shù)值

4、計(jì)算變量先賦值,再使用. 符號(hào)計(jì)算先定義基本的符號(hào)對(duì)象(可以是常量,變 量,表達(dá)式),然后用這些基本符號(hào)對(duì)象去構(gòu)成新的表達(dá)式,再進(jìn)行所需的符號(hào)運(yùn)算2.1.1 符號(hào)對(duì)象的創(chuàng)建和衍生1. 生成符號(hào)對(duì)象的基本規(guī)則 任何基本符號(hào)對(duì)象(數(shù)字、參數(shù)、變量、表達(dá)式)都必須借助專門的符號(hào)函數(shù)指令sym或syms定義。 任何包含符號(hào)對(duì)象的表達(dá)式或方程,將繼承符號(hào)對(duì)象的屬性。即任何包含符號(hào)對(duì)象的表達(dá)式、方程也一定是符號(hào)對(duì)象。2 符號(hào)數(shù)字的定義格式:sc=sym(num) % sc為值為num的符號(hào)數(shù)字注意: i) 單引號(hào)必須在英文狀態(tài)下輸入,構(gòu)成字符串 ii) num為一個(gè)具體的數(shù)字如: sc=sym(2/3)

5、sb=sym(pi+sqrt(5)sc=2/3sb =pi + 5(1/2)2 符號(hào)數(shù)字的定義【例2.1-1】符號(hào)(類)數(shù)字與數(shù)值(類)數(shù)字之間的差異。a=pi+sqrt(5)sa=sym(pi+sqrt(5)Ca=class(a)Csa=class(sa)vpa(sa-a) a = 5.3777sa = pi + 5(1/2)Ca = doubleCsa = symans =0.00000000000000001382237584108520004859354256418 本例表現(xiàn)符號(hào)數(shù)字總是被準(zhǔn)確記錄和運(yùn)算,而數(shù)值數(shù)字并不總能保證被準(zhǔn)確存儲(chǔ),運(yùn)算時(shí)會(huì)引進(jìn)截?cái)嗾`差。3. 基本符號(hào)變量:定義格

6、式:i) syms para para=sym(para) syms a; a=sym(a)ii) syms para flag para=sym(para, flag) syms a positive; a=sym(a, positive)flag為參數(shù)屬性:positive參數(shù)取正實(shí)數(shù)real參數(shù)為實(shí)數(shù)unreal參數(shù)為限定的復(fù)數(shù)iii) syms a b c syms a b c flag無逗號(hào)符號(hào)參數(shù)(表達(dá)式中的參數(shù)), “待解符號(hào)變量”或“自由符號(hào)變量” (表達(dá)式中的自變量x,默認(rèn)為x)4. 自由符號(hào)變量symvar(expression) 列出表達(dá)式中所有基本符號(hào)變量symvar(

7、expression,n) 列出表達(dá)式中認(rèn)定n個(gè)自由符號(hào)變量expression是符號(hào)表達(dá)式或符號(hào)表達(dá)式矩陣,x是首選自由符號(hào)變量,認(rèn)定優(yōu)先次序?yàn)閤, y, w, z, v等解題結(jié)果是“用符號(hào)參數(shù)構(gòu)成的表達(dá)式表述自由符號(hào)變量”。解題時(shí)自由符號(hào)變量可“人為指定”,也可“默認(rèn)地自動(dòng)認(rèn)定”:與小寫字母 x 的ASII碼距離最小的變量。syms u v w z a5f=sym(3);Eq=sin(f)*u*z2+v*z+f*w-a5;【例2.1-2】 用符號(hào)計(jì)算研究方程 的解。symvar(Eq) %按字母表順序列出基本符號(hào)變量, 無 fans = a5, u, v, w, z symvar(Eq,1

8、00) %按離x的距離列出所有自由符號(hào)變量ans = w, z, v, u, a5result_1=solve(Eq) result_1 =a5/3 - (v*z)/3 - (u*sin(3)*z2)/3 result_2=solve(Eq,z)result_2 = -(v - (v2 + 4*a5*u*sin(3) - 12*u*w*sin(3)(1/2)/(2*u*sin(3) -(v + (v2 + 4*a5*u*sin(3) - 12*u*w*sin(3)(1/2)/(2*u*sin(3)syms a b x X Yk=sym(3);z=sym(c*sqrt(d)+y*sin(t);E

9、XPR=a*z*X+(b*x2+k)*Y;【例2.1-3】元符號(hào)表達(dá)式、衍生符號(hào)表達(dá)式定義,基本符號(hào)變量、自由符號(hào)變量的機(jī)器認(rèn)定。E3=sym(a*sqrt(theta) ? Error using = sym.sym convertExpression at 2515 E4=sym(a*sqrt(theta1)E5=sym(a*sqrt(theta*t) %在R2009b版本中還正確? Error using = sym.sym convertExpression at 2515symvar(EXPR)ans = X, Y, a, b, c, d, t, x, y 無 k zsymvar(E

10、XPR,10) ans = x, y, t, d, c, b, a, X, Y 4. 自由符號(hào)變量syms a b t u v x yA=a+b*x, sin(t)+u; x*exp(-t), log(y)+vsymvar(A,1) A = a + b*x, u + sin(t) x/exp(t), v + log(y)ans = x 【例2.1-4】symvar確定自由變量是對(duì)整個(gè)矩陣進(jìn)行的。 2.1.2 符號(hào)計(jì)算中的算符由于新版matlab采用了重載(Overload)技術(shù), 使得用來構(gòu)成符號(hào)計(jì)算表達(dá)式的算符和基本函數(shù),無論在形式,名稱,還是使用方法上,都與數(shù)值計(jì)算中的算符和基本函數(shù)幾乎完

11、全相同,這給編程帶來極大的方便.(1) 基本運(yùn)算符算符 ”+”, ”-”, ”*”, ”, “/”,“” 分別構(gòu)成矩陣的加, 減, 乘,左除,右除,求冪運(yùn)算. 算符 ”.*”, “./”, “.”, “.” 分別實(shí)現(xiàn)元素對(duì)元素的數(shù)組乘,除,求冪運(yùn)算.算符” ”, “ . ” 分別實(shí)現(xiàn)矩陣的共軛轉(zhuǎn)置,非共軛轉(zhuǎn)置2.1.2 符號(hào)計(jì)算中的算符(2) 關(guān)系運(yùn)算符在符號(hào)對(duì)象的比較中,沒有大于,大于等于,小于,小于等于的概念,而只有是否等于的概念。 ”=“ “=“分別用來對(duì)算符兩邊的對(duì)象進(jìn)行相等和不等的比較,返回為邏輯量。事實(shí)為真時(shí),比較結(jié)果為1,事實(shí)為假時(shí),結(jié)果為0.2.1.3 符號(hào)計(jì)算中的函數(shù)指令符號(hào)

12、計(jì)算中的函數(shù)分成三個(gè)層次:與數(shù)值類函數(shù)和指令對(duì)應(yīng)的同名符號(hào)類函數(shù)和指令。約50個(gè)經(jīng)典特殊函數(shù)(誤差函數(shù)erf、貝塞爾函數(shù)besselj、橢圓積分ElliptiK等),借助mfun調(diào)用,用mfunlist可列出。數(shù)量較大的MuPAD庫函數(shù),借助evalin和feval調(diào)用。(2) 指數(shù),對(duì)數(shù)函數(shù) sqrt, exp, expm在兩者中用法相同符號(hào)計(jì)算中只有自然對(duì)數(shù)log,而沒有數(shù)值計(jì)算中的log2, log10(3) 復(fù)數(shù)函數(shù) conj, imag, real, abs在兩者中用法相同.但在符號(hào)計(jì)算中沒有求相角的指令angle.(1) 三角函數(shù),雙曲線函數(shù)以及他們的反函數(shù)除atan2只能用于數(shù)值

13、計(jì)算外,另外的在兩種運(yùn)算中使用方法相同.與數(shù)值類函數(shù)和指令對(duì)應(yīng)的同名符號(hào)類函數(shù)和指令(4) 矩陣代數(shù)指令在符號(hào)計(jì)算中, matlab提供的常用矩陣代數(shù)指令有:diag, tril, inv, det, rank, eig, svd( Singular value decomposition奇異值分解)等與數(shù)值類函數(shù)和指令對(duì)應(yīng)的同名符號(hào)類函數(shù)和指令(5) 方程求解指令solve,與數(shù)值類不同。(6) 微積分如diff,int,與數(shù)值類不完全相同。(7) 積分變換和反變換函數(shù)如laplace, ilaplace,數(shù)值類只有Fourier變換。(8) 繪圖函數(shù)如ezplot,ezsurf,數(shù)值類繪圖

14、指令更豐富。數(shù)值計(jì)算對(duì)象,符號(hào)計(jì)算對(duì)象,字符串是MATALB中最常用的數(shù)據(jù)對(duì)象.他們遵循各自不同的運(yùn)算法則,但有時(shí)在外形上卻十分相似.MATLAB提供了一些識(shí)別不同數(shù)據(jù)對(duì)象的指令,常用的有class, isa, whos 例2.1.3-1 數(shù)據(jù)對(duì)象及其識(shí)別指令的使用(1) 生成三種不同類型的矩陣,給出不同的顯示形式clear, a=1;b=2;c=3;d=4 % 產(chǎn)生四個(gè)數(shù)值變量Mn=a,b; c,d % 利用已賦值變量構(gòu)成數(shù)值矩陣Mc=a,b; c,d % 字符串中的a,b,c,d與前面輸入的數(shù)值變量無關(guān)Ms=sym(Mc) % 符號(hào)變量,與前面的各變量無關(guān)2.1.4 符號(hào)對(duì)象的識(shí)別Mn =

15、 1 2 3 4Mc =a,b;c,dMs = a, b c, dSizeMn=size(Mn), SizeMc=size(Mc), SizeMs=size(Ms)SizeMn = 2 2SizeMc = 1 9SizeMs = 2 2(3) 用class獲得每種矩陣的類別CMn=class(Mn), CMc=class(Mc), CMs=class(Ms)CMn = doubleCMc = charCMs = sym(4) 用isa判斷每種矩陣的類別isa(Mn,double), isa(Mc,char), isa(Ms,sym)ans = 1ans = 1ans = 1Mn = 1 2 3

16、 4 Mc = a,b;c,dMs = a, b c, d(2) 三個(gè)矩陣的大小不同(5) 利用whos觀察內(nèi)存變量的類別和其他屬性 Name Size Bytes Class Mc 1x9 18 char array Mn 2x2 32 double array Ms 2x2 312 sym objecta=0:1:6; theta=sym(30*pi/180*a)alfa=sym(30*pi/180)*atheta =30*pi/180*aalfa = 0, 1/6*pi, 1/3*pi, 1/2*pi, 2/3*pi, 5/6*pi, pia與數(shù)組a無關(guān)whos P26 Name Siz

17、e Bytes Class ans 1x1 8 double t 1x201 1608 double y 1x201 1608 double 2.1.5 符號(hào)運(yùn)算機(jī)理和變量假設(shè)1.符號(hào)運(yùn)算的工作機(jī)理Matlab借助sym或syms定義符號(hào)變量時(shí),啟動(dòng)MuPAD引擎并啟動(dòng)一個(gè)專供MuPAD使用的內(nèi)存工作空間執(zhí)行符號(hào)運(yùn)算;matlab內(nèi)存空間只保存該符號(hào)變量和計(jì)算結(jié)果。該定義變量的限定性假設(shè)(assumption)被保存在MuPAD的內(nèi)存空間。若變量不帶限定性假設(shè),則MuPAD默認(rèn)為復(fù)數(shù)。2.1.5 符號(hào)運(yùn)算機(jī)理和變量假設(shè)2. 對(duì)符號(hào)變量的限定性假設(shè)i) syms x para=sym(x)ii)

18、 syms x flag para=sym(x, flag) syms a positive; a=sym(a, positive)iii) syms a b c syms a b c flagflag為參數(shù)屬性:positive參數(shù)取正實(shí)數(shù)real參數(shù)為實(shí)數(shù)unreal參數(shù)為限定的復(fù)數(shù)2.1.5 符號(hào)運(yùn)算機(jī)理和變量假設(shè)3. 清除變量和撤銷假設(shè)符號(hào)變量和其假設(shè)存放在不同的內(nèi)存空間,因此刪除符號(hào)變量和撤銷關(guān)于變量的假設(shè)是兩件需要分別處理的事情。 clear all 可同時(shí)刪除clear x 刪除matlab內(nèi)存中的x變量syms x clear 撤銷MuPAD內(nèi)存中對(duì)變量x的假設(shè)evalin(s

19、ymengine,getprop(x) ) 獲取x的限定性假設(shè) evalin(symengine,anames (Properties) 列出MuPAD內(nèi)存中帶限定性假設(shè)的符號(hào)變量reset(symengine) 重啟MuPAD引擎,清空MuPAD內(nèi)存clear all 刪除matlab及 MuPAD內(nèi)存中的所有變量【例2.1-6】syms 對(duì)符號(hào)變量限定性假設(shè)的影響syms x clearf=x3+4.75*x+2.5;rf=solve(f,x)rf = -1/2 1/4 - (79(1/2)*i)/4 (79(1/2)*i)/4 + 1/4 evalin(symengine,getprop

20、(x) ans =C_ syms x realrfr=solve(f,x) rfr =-1/2 evalin(symengine,getprop(x) ans =R_ clear xsyms xg=x2+x+5;rg=solve(g,x)Warning: Explicit solution could not be found. In solve at 98rg = empty sym evalin(symengine,anames(Properties) ans =xsyms x clearrg=solve(g,x) rg = - (19(1/2)*i)/2 - 1/2 (19(1/2)*i

21、)/2 - 1/2 reset(symengine)clear all2.1.6 符號(hào)幫助體系 Matlab符號(hào)指令幫助系統(tǒng)與2008年前不同,因?yàn)橛肕uPAD取代maple作為符號(hào)計(jì)算的內(nèi)核。help SymNamehelpwin SymNamedoc SymNamedoc mfunlistdoc(symengine)2.1.6 符號(hào)幫助體系 Matlab符號(hào)指令幫助系統(tǒng)與2008年前不同,因?yàn)橛肕uPAD取代maple作為符號(hào)計(jì)算的內(nèi)核。help SymNamehelpwin SymNamedocsearch laplacedoc mfunlistdoc(symengine)2.1.6 符

22、號(hào)幫助體系 Matlab符號(hào)指令幫助系統(tǒng)與2008年前不同,因?yàn)橛肕uPAD取代maple作為符號(hào)計(jì)算的內(nèi)核。help SymNamehelpwin SymNamedocsearch laplacedoc mfunlistdoc(symengine)開啟MuPAD幫助瀏覽器。2.2 符號(hào)數(shù)字及表達(dá)式的操作2.2.1雙精度數(shù)字與符號(hào)數(shù)字之間的轉(zhuǎn)換sym(num, r) % “有理分?jǐn)?shù)”表達(dá)的符號(hào)數(shù)字 : p/q, n(p/q)sym(num) % sym(num, r) 的簡寫形式1. 雙精度數(shù)字向符號(hào)數(shù)字的轉(zhuǎn)換 sym(num, f) %以數(shù)值 表示“浮點(diǎn)數(shù)”,N, e為整數(shù) sym(1/10

23、,f) is 3602879701896397/36028797018963968 sym(num, e) % “有理分?jǐn)?shù)”表達(dá)+機(jī)器實(shí)際浮點(diǎn)表達(dá)誤差e sym(3*pi/4,e) is 3*pi/4 - 103*eps/249sym(num, d) %十進(jìn)制小數(shù)近似表示,有效數(shù)字位數(shù)受 digits指令控制。默認(rèn)為digits(32)情況.2.2.1雙精度數(shù)字與符號(hào)數(shù)字之間的轉(zhuǎn)換sym(num) % sym(num, r) 的簡寫形式sym(num) % num是字符串?dāng)?shù)字 1. 雙精度數(shù)字向符號(hào)數(shù)字的轉(zhuǎn)換 sym(num) 中num 用作符號(hào)計(jì)算函數(shù)的輸入時(shí),體現(xiàn)其理論真值,對(duì)sym(nu

24、m)中的num用作符號(hào)計(jì)算函數(shù)的輸入時(shí),體現(xiàn)其字面數(shù)子的雙精度近似。2.2.1雙精度數(shù)字與符號(hào)數(shù)字之間的轉(zhuǎn)換double(num_sym) % 把符號(hào)數(shù)字轉(zhuǎn)換為雙精度數(shù)字2. 符號(hào)數(shù)字向雙精度數(shù)字轉(zhuǎn)換 注意:double(num) 把字符串?dāng)?shù)字轉(zhuǎn)換為字符的ASCII碼double(0.1)ans = 48 46 49f=sym(10/3)Df=double(f)class(Df) Df = 3.3333ans = doubledigits 顯示當(dāng)前環(huán)境下符號(hào)數(shù)字“十進(jìn)制浮點(diǎn)” 表示的有效數(shù)字位數(shù);digits(n) 設(shè)定 “十進(jìn)制浮點(diǎn)”表示的有效數(shù)字位數(shù); xs=vpa(x) 據(jù)表達(dá)式x得到d

25、igits指定精度下的符號(hào)數(shù)字xs xs=vpa(x,n) 據(jù)表達(dá)式x得到n位有效數(shù)字的符號(hào)數(shù)字xs2.2.2 符號(hào)數(shù)字的任意精度表達(dá)形式 數(shù)值計(jì)算與符號(hào)計(jì)算的最重要區(qū)別:數(shù)值計(jì)算存在截?cái)嗾`差,且在計(jì)算中不斷傳播,產(chǎn)生累計(jì)誤差;符號(hào)計(jì)算完全準(zhǔn)確,沒有累計(jì)誤差,但降低計(jì)算速度,增加內(nèi)存。為兼顧精度和速度,采用“變精度”算法。reset(symengine) sa=sym(1/3+sqrt(2) sa =2(1/2) + 1/3 digits Digits = 32 format longa=1/3+sqrt(2)sa_Plus_a=vpa(sa+a,20)sa_Minus_a=vpa(sa-a,

26、20)a = 1.747546895706428sa_Plus_a =3.4950937914128567869sa_Minus_a =-0.000000000000000022658064826339973669 例2.2-1 digits, vpa, symengine指令演示sa32=vpa(sa)digits(48)sa5=vpa(sa,5)sa48=vpa(sa)sa32 =1.747546895706428382135022057543sa5 =1.7475sa48 =1.74754689570642838213502205754303141190300520871 2.2.3 符

27、號(hào)表達(dá)式的基本操作collect合并同類項(xiàng)numden獲取最小公分母和相應(yīng)分子expand展開指定項(xiàng)simplify簡化表達(dá)式,消除冗余項(xiàng)factor因式分解simple搜索尋找最簡表達(dá)horner轉(zhuǎn)換為嵌套形式pretty習(xí)慣方式顯示syms x;f=(1/x3+6/x2+12/x+8)(1/3);g1=simple(f)g1 =(2*x + 1)3/x3)(1/3)驗(yàn)證:f2=g13f2 =(2*x + 1)3/x3expand(f2)ans =12/x + 6/x2 + 1/x3 + 8例2.2-2 簡化2.2.4 表達(dá)式中的置換操作1.公共子表達(dá)式法簡化表達(dá) RS=subexpr(S)

28、; RS=subexpr(S,w); RS,w=subexpr(S,w) 其中,w為MATLAB自動(dòng)尋找的子表達(dá)式syms a b c d W;V,D=eig(a,b;c,d);RVD,W=subexpr(V;D,W)【例2.2-3】 對(duì)符號(hào)矩陣 進(jìn)行特征向量分解。RVD = (a/2 + d/2 - w/2)/c - d/c, (a/2 + d/2 + w/2)/c - d/c 1, 1 a/2 + d/2 - w/2, 0 0, a/2 + d/2 + w/2w =(a2 - 2*a*d + d2 + 4*b*c)(1/2) V =(a/2+d/2-(a2-2*a*d+d2+4*b*c)(

29、1/2)/2)/c-d/c, (a/2+d/2+(a2-2*a*d+ d2+4*b*c)(1/2)/2)/c-d/c 1, 1D =a/2 + d/2 - (a2 - 2*a*d + d2 + 4*b*c)(1/2)/2, 0 0, a/2 + d/2 + (a2 - 2*a*d + d2 + 4*b*c)(1/2)/2 2.2.4 表達(dá)式中的置換操作2. 通用置換指令RESsubs(ES,old,new)RESsubs(ES,new)例2.2-4 subs置換規(guī)則示例clearsyms a b x;f=a*sin(x)+b f1=subs(f,sin(x),log(y)f2=subs(f,a

30、,3.11)f3=subs(f,a,b,x,2,5,sym(pi/3)class(f3) f1=a* log(y) +b f2 =b + (311*sin(x)/100f3 =3(1/2) + 5ans =sym (5)例2.2-4 subs置換規(guī)則示例format %設(shè)為默認(rèn)輸出格式顯示format compactf4=subs(f,a,b,x,2,5,pi/3)class(f4) f4 = 6.7321ans =double f5=subs(f,x,0:pi/2:pi)class(f5)f5 = b, a + b, bans =sym t=0:pi/10:2*pi;f6=subs(f,a,

31、b,x,2,3,t)plot(t,f6)k=(0.5:0.1:1);f6=subs(subs(f,a,b,k,2),x,t);size(f6) plot(t,f6) ans = 6 21 f6=2*sin(t)+3 f=a*sin(x)+b 符號(hào)限定假設(shè)對(duì)方程根不起作用。Matlab6.5 版本上機(jī)問題findsym(expression,n) 當(dāng)n大于實(shí)際的基本變量數(shù)目時(shí),按字母表順序列出所有本符號(hào)變量;當(dāng)n小于等于時(shí),按與x距離順序列出。symvar(expression,n) 多一個(gè)參數(shù)n在Matlab6.5中不能用syms x clearf=x3+4.75*x+2.5;rf=solve

32、(f,x)rf = -1/2 1/4 - (79(1/2)*i)/4 (79(1/2)*i)/4 + 1/4 syms x realrfr=solve(f,x) rfr =-1/2 evalin(symengine,getprop(x) ans =R_ evalin(symengine,anames(Properties)調(diào)用word問題。指令的輸入、編寫用M文件編輯器。習(xí)題2 (Page114) 除了第3題不能得到實(shí)根、正根外,112題, 2325題都可做,只是4題結(jié)果在差值有效數(shù)字上與2010版本有差別, 7題不能得到最簡結(jié)果,9題結(jié)果 6.5版本錯(cuò)誤,。 單周上機(jī),鞋套帶上。 clear

33、 all; clear mex syms x unreal通用置換指令RESsubs(ES,old,new)RESsubs(ES,new)digits(n) 設(shè)定 “十進(jìn)制浮點(diǎn)”表示的有效數(shù)字位數(shù); xs=vpa(x,n) 據(jù)表達(dá)式x得到n位有效數(shù)字的符號(hào)數(shù)字xsdouble(num_sym) % 把符號(hào)數(shù)字轉(zhuǎn)換為雙精度數(shù)字sym(num) %雙精度數(shù)字轉(zhuǎn)符號(hào)數(shù)字sym(num, r) 的簡寫形式sym(num) %定義符號(hào)數(shù)字, num是字符串?dāng)?shù)字 syms x flag para=sym(x, flag) syms a positive; a=sym(a, positive)reviewd

34、fdvn=diff(f,v,n) 求fjac=jacobian(f,v) 求多元向量函數(shù)f(v)的jacobian矩陣r=taylor(f,n,v,a) 把f(v)在v=a處進(jìn)行泰勒展開2.3 符號(hào)微積分2.3.1 極限和導(dǎo)數(shù)的符號(hào)計(jì)算limit(f,v,a) 求極限limit(f,v,a,right) 求右極限limit(f,v,a,left) 求左極限【例2.3-1】試求syms x kf=(1-1/x)(k*x); Lf=limit(f,x,inf) Lf =1/exp(k) Lf1=vpa(subs(Lf,k,sym(-1),48) Lf1=2.71828182845904523536

35、02874713526624977572470937 syms a t x f=a, t3; t*cos(x), log(x); df=diff(f) dfdt2=diff(f,t,2) dfdxdt=diff( diff(f,x) ,t) 【例2.3-2】 求df = 0, 0 -t*sin(x), 1/xdfdt2 = 0, 6*t 0, 0dfdxdt = 0, 0 -sin(x), 0 例2.3-5:設(shè)cos(x+siny)=siny, 求dy/dx(隱函數(shù)求導(dǎo)).%將dy/dx表達(dá)式用x,y表達(dá)syms xg=sym(cos(x+sin(y(x)=sin(y(x)dgdx=diff(

36、g,x) g =cos(x + sin(y(x) = sin(y(x)dgdx = -sin(x + sin(y(x)*(cos(y(x)*diff(y(x), x) + 1) = cos(y(x)*diff(y(x), x) dgdx1=subs(dgdx,diff(y(x),x),dydx)dgdx1 =-sin(x + sin(y(x)*(dydx*cos(y(x) + 1) = dydx*cos(y(x) dydx=solve(dgdx1, dydx) dydx =-sin(x + sin(y(x)/(cos(y(x) + cos(y(x)*sin(x + sin(y(x)sym xr

37、=taylor(x*exp(x),9,x,0)pretty(r) 例2.3-6:求f(x)=xex在x=0處展開的8階Maclaurin級(jí)數(shù),即忽略9階及以上小量的泰勒級(jí)數(shù)展開 。 r =x8/5040 + x7/720 + x6/120 + x5/24 + x4/6 + x3/2 + x2 + x 8 7 6 5 4 3 x x x x x x 2 + + + - + - + - + x + x 5040 720 120 24 6 2 MATLAB求解通式求和 問題的指令為:s=symsum(f,v,a,b) 求通式f在指定變量v取遍 a,b中所有整數(shù)時(shí)的和。 2.3.2 序列/級(jí)數(shù)的符號(hào)求

38、和說明: (1)f是矩陣時(shí),求和對(duì)逐個(gè)元素進(jìn)行,但自變量定義在整個(gè)矩陣上。(2)v省缺時(shí),f中的自變量由findsym(symvar)自動(dòng)辨認(rèn);b可以取有限整數(shù)也可以取無窮大。(3)a,b同時(shí)省缺時(shí),默認(rèn)的自變量求和區(qū)間為0,v-1syms n kf1=1/(k*(k+1);s1=symsum(f1,k,1,n)s1 =1 - 1/(n + 1) 【例2.3-8】求 , 。f2=1/(2*k-1)2, (-1)k/k s2=symsum(f2,1,inf) s3 = pi2/8, -log(2) 2.3.3 符號(hào)積分【例2.3-9】求 。intf=int(f,v) 給出f 對(duì)指定變量v的不定積

39、分intf=int(f,v,a,b) 給出f對(duì)指定變量v的定積分syms xf= x*log(x) s=int(f,x)s=simple(s)f = x*log(x)s = (x2*(log(x) - 1/2)/2s = x2*(log(x)/2 - 1/4)2.3.3 符號(hào)積分intf=int(f,v) 給出f 對(duì)指定變量v的不定積分intf=int(f,v,a,b) 給出f對(duì)指定變量v的定積分syms a b x;f2=a*x, b*x2; 1/x, sin(x)disp(The integral of f is)pretty(int(f2) 【例2.3-10】求 。The integra

40、l of f is +- -+ | 2 3 | | a x b x | | , | | 2 3 | | | | log(x), -cos(x) | +- -+ f2 = a*x, b*x2 1/x, sin(x) 例2.3-11求積分syms x y z;f=x2+y2+z2;F2=int(int(int(f, z, sqrt(x*y), x2*y), y, sqrt(x), x2), x, 1, 2)第一重積分第二重積分Warning: Explicit integral could not be found. F2 =(14912*2(1/4)/4641 - (6072064*2(1/2)

41、/348075 + (64*2(3/4)/225 + 1610027357/6563700VF2=vpa(F2) %默認(rèn)32位有效數(shù)字 VF2 =224.92153573331143159790710032805教材中48位有效數(shù)字 syms a r theta phi r=a*theta; x=r*cos(theta);y=r*sin(theta); dLdth=sqrt(diff(x,theta)2+diff(y,theta)2);L=simple(int(dLdth,theta,0,phi)例2.3-12 求阿基米德螺線r=a*(a0)在=0到 間的曲線長度函數(shù),并求出a=1, 時(shí)的曲線

42、長度。解:L_2pi=subs(L,a,phi,sym(1,2*pi) L_2pi_vpa=vpa(L_2pi) L =(phi*(a2*phi2 + a2)(1/2) + log(phi + (phi2 + 1)(1/2)*(a2)(1/2)/2 L_2pi_vpa =21.256294148209098800702512272566例2.3-12 畫阿基米德螺線r = a*及其曲線長度圖形。L1=subs(L,a,sym(1);ezplot(L1*cos(phi),L1*sin(phi),0,2*pi)grid on; hold onx1=subs(x,a,sym(1);y1=subs(y

43、,a,sym(1);h1=ezplot(x1,y1,0,2*pi);set(h1,Color,r,LineWidth,5) title( ); legend(螺線長度-幅角曲線,阿基米德螺線)hold offL =(phi*(a2*phi2 + a2)(1/2) + log(phi + (phi2 + 1)(1/2)*(a2)(1/2)/2 見P1982.4 微分方程的符號(hào)解法S=dslove(eq1,eq2,eqn, cond1,cond2,condn,v)2.4.1 符號(hào)解法和數(shù)值解法有互補(bǔ)作用2.4.2 求微分方程符號(hào)解的一般指令從數(shù)值計(jì)算角度看,微分方程邊值問題的求解比初值問題復(fù)雜困難

44、;而對(duì)符號(hào)計(jì)算來說,邊值問題和初值問題的求解微分方程的指令形式相同且簡單,不過計(jì)算時(shí)間較長且未必有封閉形式解。S=dslove(eq1,eq2,eqn,cond1,cond2,condn,v)默認(rèn)獨(dú)立變量t輸入量為字符串必選可選條件:y(a)=b, Dy(c)=d若應(yīng)變量為y ,用“Dny”表示“y的n階導(dǎo)數(shù)”, Dy為一階導(dǎo)數(shù)。解在S.y中。說明:(1)輸入量包括三部分:微分方程、初始條件、指定獨(dú)立變量(不指定時(shí),默認(rèn)為t)。輸入量必須以字符串的形式給出。(2)微分方程的記述規(guī)定:當(dāng)y是應(yīng)變量時(shí), 用“Dny”表示“y的n階導(dǎo)數(shù)”。(3)關(guān)于初始條件或邊界條件的規(guī)定:應(yīng)寫成y(a)=b, D

45、y(c)=d等。(4)如果y是應(yīng)變量,則它的解在S.y中?!纠?.4-1】求 的解。2.4.3 微分方程符號(hào)解示例clearS=dsolve(Dx=y,Dy=-x) disp(微分方程的解, blanks(2),x,blanks(22),y)disp(S.x,S.y) S = x: 1x1 sym y: 1x1 sym微分方程的解 x y C2*cos(t) + C1*sin(t), C1*cos(t) - C2*sin(t)寫微分方程遵循原則:導(dǎo)數(shù)在前函數(shù)在后,導(dǎo)數(shù)階數(shù)降階x, y= dsolve(Dx=y,Dy=-x) %按字母表輸出順序不變例2.4-2.圖示微分方程y=xy-(y)2通解

46、和奇解的關(guān)系clear ally=dsolve(Dy)2-x*Dy+y=0,x)y = x2/4 C3*x - C32 clf, hold onhy1=ezplot(y(1),-6,6,-4,8,1);set(hy1,Color,r,LineWidth,5)for k=-2:0.5:2 y2=subs(y(2),C3,k); ezplot(y2,-6,6,-4,8,1)endhold off;box onlegend(奇解,通解,Location,Best)ylabel(y)title(fontsize14微分方程, (y )2 xy + y = 0 ,的解) 見P199例2.4-3.求解兩點(diǎn)

47、邊值問題: xy-3y=x2,y(1)=0,y(5)=0y=dsolve(x*D2y-3*Dy=x2,y(1)=0,y(5)=0,x) y =(31*x4)/468 - x3/3 + 125/468 ezplot(y,-1,6)hold onplot(1,5,0,0,.r,MarkerSize,20)text(1,1,y(1)=0)text(4,1,y(5)=0)title(x*D2y-3*Dy=x2, y(1)=0,y(5)=0)hold off2.5 符號(hào)變換和符號(hào)卷積2.5.1 Fourier變換及其反變換Fw=fourier(ft,t,w) 求“時(shí)域”函數(shù)ft的Fourier變換ft=

48、ifourier(Fw,w,t) 求“頻域”函數(shù)Fw的Fourier 反變換2.5.2 Laplace變換及其反變換Fs=laplace(ft,t,s) 求“時(shí)域”函數(shù)ft的Laplace變換ft=ilaplace(Fs,s,t) 求“頻域”函數(shù)Fs的Laplace 反變換2.5.3 Z變換及其反變換FZ=ztrans(ft,n,z) 求“時(shí)域”序列ft的Z變換fn=itrans(FZ,z,n) 求“頻域”序列FZ的Z反變換2.5.4 符號(hào)卷積 利用拉氏變換求取?!纠?2.5-1】求 的Fourier變換。(1)求Fourier變換syms t wut=heaviside(t);UT=four

49、ier(ut) UT = pi*dirac(w)-i/w (2)求Fourier反變換Ut=ifourier(UT,w,t) Ut =heaviside(t)plot(t(kk),ut(kk),.r,MarkerSize,30)ut(kk)=NaN; hold onplot(t,ut,-r,LineWidth,3)plot(t(kk),t(kk),ut(kk-1), ut(kk+1),or,MarkerSize,10)hold offgrid onaxis(-2,2,-0.2,1.2)xlabel(fontsize14t),ylabel(fontsize14ut)title(fontsize1

50、4Heaviside(t) (3)單位階躍曲線t=-2:0.01:2;ut=heaviside(t);kk=find(t=0);【例2.5-4】求 的Laplace變換。 syms t s; syms a b positive; %不限定無結(jié)果 Dt=dirac(t-a); Ut=heaviside(t-b); Mt=Dt,Ut;exp(-a*t)*sin(b*t),t2*exp(-t); MS=laplace(Mt,t,s) MS = exp(-s*a), exp(-s*b)/s 1/b/(s+a)2/b2+1), 2/(s+1)3 dfdvn=diff(f,v,n) 求r=taylor(f

51、,n,v,a) 把f(v)在v=a處進(jìn)行泰勒展開review2.3.1 極限和導(dǎo)數(shù)的符號(hào)計(jì)算limit(f,v,a) 求極限limit(f,v,a,right) 求右極限limit(f,v,a,left) 求左極限2.3.2 序列/級(jí)數(shù)的符號(hào)求和s=symsum(f,v,a,b)S=dslove(eq1,eq2,eqn, cond1,cond2,condn,v)2.4.2 求微分方程符號(hào)解的一般指令S=dslove(eq1,eq2,eqn,cond1,cond2,condn,v)默認(rèn)獨(dú)立變量t輸入量為字符串必選可選條件:y(a)=b, Dy(c)=d若應(yīng)變量為y ,用“Dny”表示“y的n階導(dǎo)

52、數(shù)”, Dy為一階導(dǎo)數(shù)。解在S.y中。reviewintf=int(f,v) 給出f 對(duì)指定變量v的不定積分intf=int(f,v,a,b) 給出f對(duì)指定變量v的定積分2.3.3 符號(hào)積分例2.4-2.圖示微分方程y=xy-(y)2通解和奇解的關(guān)系clear ally=dsolve(Dy)2-x*Dy+y=0,x)clf, hold onhy1=ezplot(y(1),-6,6,-4,8,1);set(hy1,Color,r,LineWidth,5)for k=-2:0.5:2 y2=subs(y(2),C3,k); ezplot(y2,-6,6,-4,8,1)endhold off;box

53、 onlegend(奇解,通解,Location,Best) %參數(shù)的設(shè)置有多種ylabel(y)title(fontsize14微分方程, (y )2 xy + y = 0 ,的解)legend(奇解,通解,Location,northwest)legend(奇解,通解,Location, 0.4,0.6,0.3,0.1)legend(.,Location,location) location can be either a 1-by-4 position vector (left bottom width height) or one of the following strings. 見

54、P199docsearch legend Location %通過幫助指令獲取參數(shù)SpecifierLocation in AxesNorthInside plot box near topSouthInside bottomEastInside rightWestInside leftNorthEastInside top right (default for 2-D plots)NorthWestInside top leftSouthEastInside bottom rightSouthWestInside bottom leftNorthOutsideOutside plot box

55、 near topSouthOutsideOutside bottomEastOutsideOutside rightWestOutsideOutside leftNorthEastOutsideOutside top right (default for 3-D plots)NorthWestOutsideOutside top leftSouthEastOutsideOutside bottom rightSouthWestOutsideOutside bottom leftBestLeast conflict with data in plotBestOutsideLeast unuse

56、d space outside plot2.6 符號(hào)矩陣分析和代數(shù)方程的解2.6.1 符號(hào)矩陣分析最常用的矩陣分析指令如下:det(A)diag(A)V,D=eig(A)expm(A) 矩陣指數(shù)函數(shù)eAinv(A)V,J=jordan(A) Jordan分解,使AV=VJpoly(A)rank(A)2.6.1 符號(hào)矩陣分析syms a11 a12 a21 a22A=a11, a12; a21, a22DA=det(A)IA=inv(A)A = a11, a12 a21, a22DA =a11*a22 - a12*a21IA = a22/(a11*a22 - a12*a21), -a12/(a1

57、1*a22 - a12*a21) -a21/(a11*a22 - a12*a21), a11/(a11*a22 - a12*a21) EA=subexpr(eig(A),D) D = (a112 - 2*a11*a22 + a222 + 4*a12*a21)(1/2)EA = a11/2 + a22/2 - D/2 a11/2 + a22/2 + D/2 【例2.6-1】求矩陣 的行列式、逆和特征根。例2.6-2 Givens旋轉(zhuǎn) 對(duì)矩陣 (兩點(diǎn))的旋轉(zhuǎn)作用.解: syms t; A=sym(sqrt(3)/2,1/2;1/2,sqrt(3)/2); %符號(hào)變量G=cos(t),-sin(t)

58、;sin(t),cos(t); GA=G*AAn=subs(GA,t,110/180*pi); %旋轉(zhuǎn)后數(shù)值陣Op=0;0; Ad=double(A); %旋轉(zhuǎn)前數(shù)值陣v1=Op,Ad(:,1), v2=Op,Ad(:,2) %旋轉(zhuǎn)前各點(diǎn)與坐標(biāo)原點(diǎn)相連直線陣u1=Op,An(:,1), u2=Op,An(:,2) %旋轉(zhuǎn)后plot(v1(:,1),v1(:,2),-k,v2(:,1),v2(:,2),b), hold onhu=plot(u1(:,1),u1(:,2),-k,u2(:,1),u2(:,2),b)set(hu,LineWidth,4)Lstr=旋轉(zhuǎn)前的 v1;旋轉(zhuǎn)前的 v2;旋轉(zhuǎn)

59、后的 u1;旋轉(zhuǎn)后的 u2; legend(Lstr,Location,South)axis(-1,1,-1,1), axis square, hold off, grid on2.6.2 線性方程組的符號(hào)解(參考4.2節(jié))矩陣計(jì)算是求解線性方程組最簡單有效的方法,在matlab中,不管數(shù)據(jù)對(duì)象是數(shù)值還是符號(hào),實(shí)現(xiàn)矩陣運(yùn)算的指令形式幾乎完全相同. A=sym(1,1/2,1/2 , -1; 1, 1, -1,1; 1, -1/4, -1,1; -8, -1, 1, 1);b=sym(0; 10; 0; 1)x=Ab【例2.6-3】求線性方程組的解。X = 1 8 8 9 A=1,1/2,1/2

60、 , -1; 1, 1, -1,1; 1, -1/4, -1,1; -8, -1, 1, 1;b=0; 10; 0; 1;x=AbX=1.0000 8.0000 8.0000 9.0000 2.6.3 一般代數(shù)方程組的解一般代數(shù)方程包括線性 ( Linear )、非線性( Nonlinear )和超越方程( Transcendental equation ) 等。S =solve(eq1,eq2,.,eqN,v1,v2,.vn) (推薦)S =solve(exp1, exp2,., expN, v1, v2,. vn) (可用)只能是符號(hào)表達(dá)式符號(hào)變量【例2.6-3】求線性方程組的解。syms

溫馨提示

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

評(píng)論

0/150

提交評(píng)論