




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)學軟件Matlab篇Mathematical Software for Section Matlab第七講 MATLAB的 符號計算所謂符號計算是指在運算時,無須事先對變量賦值,而將所得到結果以標準的符號形式來表示。MathWorks公司以Maple的內核作為符號計算引擎(Engine),依賴Maple已有的函數(shù)庫,開發(fā)了實現(xiàn)符號計算的兩個工具箱:基本符號工具箱和擴展符號工具箱。一、符號計算基礎(一) 定義符號變量參與符號運算的對象可以是符號變量、符號表達式或符號矩陣。符號變量要先定義,后引用??梢杂胹ym函數(shù)、syms函數(shù)將運算量定義為符號型數(shù)據(jù)。引用符號運算函數(shù)時,用戶可以指定函數(shù)執(zhí)行過
2、程中的變量參數(shù);若用戶沒有指定變量參數(shù),則使用findsym函數(shù)默認的變量作為函數(shù)的變量參數(shù)。一、符號計算基礎【例1】作符號計算:a,b,x,y均為符號運算量。在符號運算前,應先將a,b,x,y定義為符號運算量(一) 定義符號變量一、符號計算基礎1、sym函數(shù) sname=sym(string)創(chuàng)建名為sname的符號變量,輸出變量為string (下面例1中給出解釋),也可用于創(chuàng)建符號表達式或符號矩陣。a=sym(a1); %定義a為符號運算量,輸出變量名為a1b=sym(b);x=sym(x);y=sym(y); x,y=solve(a*x-b*y-1,a*x+b*y-5,x,y) %以a
3、,b為符號常數(shù),x,y為符號變量,a輸出為a1運算結果(方程組的解): x =3/a1 y =2/b(一) 定義符號變量一、符號計算基礎【例2】已知一復數(shù)表達式 z=x+i*y, 試求其共軛復數(shù),并求該表達式與其共軛復數(shù)乘積的多項式。 為了使乘積表達式x2+y2非負,這里,把變量x和y定義為實數(shù)。x=sym(x,real); %定義x為實數(shù)y=sym(y,real); %定義y為實數(shù)(一) 定義符號變量一、符號計算基礎z=x+i*y; %定義復數(shù)表達式conj(z); %求共軛復數(shù)expand(z*conj(z) %求表達式與其共軛復數(shù)乘積的多項式ans = x2+y2若要去掉x的屬性, 可以
4、使用下面語句 x = sym(x,unreal) 將x創(chuàng)建為純格式的符號變量。(一) 定義符號變量一、符號計算基礎2、syms函數(shù) syms函數(shù)的功能與sym函數(shù)類似。syms函數(shù)可以在一個語句中同時定義多個符號變量,其一般格式為:syms arg1 arg2 argN 用于將rg1, arg2,argN等符號創(chuàng)建為符號型變量。 注意:定義多個符號變量的表達式是syms arg1 arg2 argN (用空格分離變量列表)而不是syms arg1, arg2, , argN (一) 定義符號變量一、符號計算基礎在數(shù)學表達式中,一般習慣于使用排在字母表中前面的字母作為變量的系數(shù),而用排在后面的字
5、母表示變量。例如: f=ax2+bx+c表達式中的a,b,c通常被認為是常數(shù),用作變量的系數(shù);而將x看作自變量。一、符號計算基礎(二)默認符號變量例如,在數(shù)學表達式 f=xn, g=sin(a*t+b)中,根據(jù)數(shù)學式中表示自變量的習慣,默認a,b,n為符號常數(shù),t,x為符號變量。當然,在matlab中a,b,n可以作為變量使用。若在MATLAB中定義上述表達式,首先用syms 函數(shù)定義a, b, n, t, x為符號對象。在進行導數(shù)運算時,由于沒有指定符號變量,則系統(tǒng)采用數(shù)學習慣來確定表達式中的自變量,默認a,b,c為符號常數(shù),x, t為符號變量。即 : 對函數(shù)f求導默認為:df/dx 對函數(shù)
6、g求導默認為:dg/dt(二)默認符號變量一、符號計算基礎為了了解函數(shù)引用過程中使用的符號變量個數(shù)及變量名,可以用findsym函數(shù)查詢默認的變量。該函數(shù)的引用格式為:findsym(f,n)說明:f為用戶定義的符號函數(shù), n為正整數(shù),表示查詢變量的個數(shù)。n=i 表示查詢f中前i個系統(tǒng)默認變量,查詢結果按照離x由近到遠的次序排列。 n值省略時findsym(f)表示查詢符號函數(shù)中系統(tǒng)默認的全部變量,查詢結果按英文字母順序排列(只能查出所有符號變量的名字,看不出各變量的優(yōu)先級)。(二)默認符號變量一、符號計算基礎26個單字母變量的排列次序:syms a b c d e f g h i j k l
7、 m n o p q r s t u v w x y zfindsym(a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z,26)ans =x,y,w,z,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a也就是說,在matlab符號運算中,26個單字母變量的排列次序為x,y,w,z,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a一個表達式中排在最前面的變量為默認變量。(二)默認符號變量一、符號計算基礎【例3 】查詢符號函數(shù) f=xn, g=sin(a*t+b)中的系
8、統(tǒng)默認變量。syms a b n t x %定義符號變量f=xn; %給定符號函數(shù)g=sin(a*t+b);findsym(f,1) %在f函數(shù)中查詢1個系統(tǒng)默認變量結果:ans = x,即在函數(shù)f中系統(tǒng)默認變量為 xs=findsym(g,3) %在f函數(shù)中查詢1個系統(tǒng)默認變量結果:s = t,b,a,即在函數(shù)g中系統(tǒng)默認變量為 t(二)默認符號變量一、符號計算基礎(三) 符號表達式符號表達式由符號變量、函數(shù)、算術運算符等組成。符號表達式的書寫格式與數(shù)值表達式相同。例如,數(shù)學表達式 的符號表達式為: 1+sqr(5*x)/(2*x)注意,在定義表達式前應先將表達式中的字符x定義為符號變量。一
9、、符號計算基礎(四) 生成符號函數(shù)將表達式中的自變量定義為符號變量后,賦值給符號函數(shù)名,即可生成符號函數(shù)。例如有一數(shù)學表達式:一、符號計算基礎其用符號表達式生成符號函數(shù)fxy的過程為: syms a b c x y %定義符號運算量 fxy=(a*x2+b*y2)/c2 %生成符號函數(shù)生成符號函數(shù)fxy后,即可用于微積分等符號計算。【例4】定義一個符號函數(shù) fxy=(a*x2+b*y2)/c2 ,分別求該函數(shù)對x、y的導數(shù)和對x的積分。syms a b c x y %定義符號變量fxy=(a*x2+b*y2)/c2; %生成符號函數(shù) diff(fxy, x) %符號函數(shù)fxy對x求導數(shù)ans
10、=2*a*x/c2diff(fxy,y,2) %符號函數(shù)fxy對y求2階導數(shù) ans = (2*b)/c2 int(fxy, x) %符號函數(shù)fxy對x求不定積分ans =1/c2*(1/3*a*x3+b*y2*x)(四) 生成符號函數(shù)一、符號計算基礎(五) 符號表達式運算1提取分子和分母運算n,d=numden(S)函數(shù)提取有理分式或可以展開為有理分式的符號表達式S的分子或分母,分別將其存放在n與d中。syms xf=3/2*x2+2/3*x-3/5 % rationalize and extract the partsg=(x2+3)/(2*x-1)+3*x/(x-1) % the sum
11、 of rational polynomialsn,d=numden(f) % extract the numerator and denominatorn1,d1=numden(g) % extract the numerator and denominator運行結果:n= 45*x2+20*x-18, d= 30n1= x3+5*x2-3, d1= (2*x-1)*(x-1)一、符號計算基礎(五) 符號表達式運算2符號表達式的因式分解與展開MATLAB提供了符號表達式的因式分解與展開的函數(shù),函數(shù)的調用格式為:factor(S) 對符號表達式S分解因式。expand(S) 對符號表達式S進
12、行展開。collect(S) 對符號表達式S合并同類項。collect(S,v) 對符號表達式S按變量v合并同類項。這些函數(shù)使用簡單,不再舉例。一、符號計算基礎3符號表達式的化簡MATLAB提供的對符號表達式化簡的函數(shù)有:simplify(S) Reduce explicit MPC controller complexity and memory requirements. 減少顯式MPC控制器的復雜性和內存要求。應用函數(shù)規(guī)則對S進行化簡。simple(S) Search for simplest form of symbolic expression.尋找最簡單的符號表達形式。This M
13、ATLAB function applies different algebraic simplification functions and displays all resulting forms of S, and then returns the shortest form. 這個Matlab函數(shù)應用不同的代數(shù)化簡函數(shù)獲得S的簡易格式,并顯示化簡過程。一、符號計算基礎一、符號計算基礎 3符號表達式的化簡 pretty(S) Prints the symbolic expression S in a format that resembles(類似于) type-set mathemat
14、ics. 使用類似于型集數(shù)學的形式,打印符號表達式 S。4符號表達式與數(shù)值表達式之間的轉換利用函數(shù)sym可以將數(shù)值表達式變換成它的符號表達式。sym(3*pi/4,d) % The d stands for decimal. With digits(20), ans= 2. . With digits(10), ans= 2.35619449.sym(3*pi/4,f) % The f stands for floating point. All values are transformed from double precision to exact numeric values N*2e
15、for integers N and e. ans= 2652839157010665 /1125899906842624.sym(3*pi/4,e) % The e stands for estimate error. ans=(3*pi)/4 - (103*eps)/249sym(3*pi/4,r) % The r form is supplemented by a term involving the variable eps which estimates the difference between the theoretical rational expression and it
16、s actual floating point value. ans=(3*pi)/4一、符號計算基礎4符號表達式與數(shù)值表達式之間的轉換 eval 函數(shù)可以將符號表達式變換成數(shù)值表達式。eval()函數(shù)將括號內的字符串視為語句并運行。 eval(y1=sin(2)和語句y1=sin(2)等價 多在循環(huán)中使用,可以對多個名字有規(guī)則的變量或文件進行操作,例如for x=1:5 eval(y,num2str(x),=,num2str(x2),;)end 又如syms x, a=solve(x2+4*x-9=0)eval(a)一、符號計算基礎5. 符號矩陣符號矩陣也是一種符號表達式,所以前面介紹的符號
17、表達式運算都可以在矩陣意義下進行。但應注意這些函數(shù)作用于符號矩陣時,是分別作用于矩陣的每一個元素。由于符號矩陣是一個矩陣,所以符號矩陣還能進行有關矩陣的運算。MATLAB還有一些專用于符號矩陣的函數(shù),這些函數(shù)作用于單個的數(shù)據(jù)無意義。例如transpose(S):或transp(S)或S返回矩陣S的轉置矩陣。det (S):返回矩陣S的行列式值。其實,曾介紹過的許多應用于數(shù)值矩陣的函數(shù),如diag、triu、tril、inv、det、rank、eig等,都可以直接應用于符號矩陣。一、符號計算基礎曾介紹過的許多應用于數(shù)值矩陣的函數(shù),如diag、triu、tril、inv、det、rank、eig等
18、,都可直接應用于符號矩陣。transpose - transpose of matrixdet - Matrix determinanttriu - Upper triangular part of matrixtril - Lower triangular part of matrixdiag - Get diagonal elements or create diagonal matrixinv - Matrix inverserank - Rank of matrixeig - Eigenvalues and eigenvectors一、符號計算基礎1.求極限 limit函數(shù)用于求符號函
19、數(shù)的極限。系統(tǒng)可以根據(jù)用戶要求,計算變量從不同方向趨近于指定值的極限值。該函數(shù)的格式及功能如下:二、符號微積分二、符號微積分 limit(f,x,a)求符號函數(shù)f(x) 當變量x趨近于常數(shù)a時的極限值。a可以為 inf (=-inf) 或 -inf。 limit(f,a)求符號函數(shù)f的極限值。由于沒有指定f的自變量,則其變量為函數(shù)findsym(f)確定的默認自變量。limit(f)求符號函數(shù)f當默認變量趨近于0時的極限。limit(f,x,a,right)求符號函數(shù)f的極限值。right表示變量x從右邊趨近于a。limit(f,x,a,left)求符號函數(shù)f的極限值。left表示變量x從左邊
20、趨近于a。二、符號微積分【例5】求極限syms x; %定義符號變量,等價于 x = sym(x) f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/sin(x)3; %確定符號表達式w=limit(f) %求函數(shù)的極限,等價于w=limit(f,x,0)答案:w = -1/2二、符號微積分2. 求導數(shù)/偏導數(shù) diff(S,v,n)函數(shù)用于計算符號表達式S關于變量v的n階導數(shù)。 diff(S)沒有指定微分變量和微分階數(shù),則求默認變量對符號表達式S的一階導數(shù)。 diff(S,v)以v為自變量,對符號表達式S求一階導數(shù)。 diff(S,n)求默認變量對符號表達式S的n階微
21、分,n為正整數(shù)。 diff(S,v,n)或diff(S,n,v)以v為自變量,對符號表達式S求n階導數(shù)。二、符號微積分 diff(diff(S,u),v)函數(shù)用于計算符號表達式S關于變量u和v的2階混合偏導數(shù)。 【例6】求下列導數(shù)及偏導數(shù):x = sym(x); y = sym(y); %定義符號變量diff(sin(x2) %求導數(shù)運算ans =2*cos(x2)*xdiff(diff(sin(y*x2)+sin(x*y2),x),y) %求偏導數(shù)運算ans = 2*x*cos(x2*y) + 2*y*cos(x*y2) - 2*x*y3*sin(x*y2) - 2*x3*y*sin(x2*
22、y)二、符號微積分3求積分/重積分 int(S,v,a,b)積分函數(shù)計算符號表達式S在區(qū)間a,b上關于變量v的定積分。 int(S) 表示沒有指定積分變量和積分階數(shù)時,系統(tǒng)按findsym函數(shù)指示的默認變量對被積函數(shù)或符號表達式s求一階積分。 int(S,v)表示以v為自變量,對被積函數(shù)或符號表達式s求不定積分。 在此基礎上可以計算多重積分。例如:syms x yint( int(x*y2+1,y,-sqrt(1-x2),sqrt(1-x2),x,-1,1) ans = pi二、符號微積分【例7】求下述積分。syms xint(1/(1+x2) ans = atan(x)int(2*x/(1+
23、x2),0,pi/2)ans = log(pi2 + 4) - log(4)syms x yint(int(x*y2+1,y,-sqrt(1-x2),sqrt(1-x2),x,-1,1)ans = pi二、符號微積分4. 級數(shù)(級數(shù)求和)symsum(s,v,n,m) 計算以s為通項的部分和,其中s表示級數(shù)的通項,是一個符號表達式。v是求和變量,v省略時使用系統(tǒng)的默認變量。n和m是求和的開始項和末項。用inf表示無窮大。二、符號微積分5. 函數(shù)的泰勒級數(shù)taylor(f,v,n,a) 函數(shù)將函數(shù)f按變量v展開為泰勒級數(shù),展開到第n項(即變量v的n-1次冪)為止,n的缺省值為6。v的缺省值與di
24、ff函數(shù)相同。參數(shù)a指定將函數(shù)f在自變量v=a處展開,a的缺省值是0?!纠?】求級數(shù)的和:1/12+1/22+1/32+1/42+ ,鍵入:syms k symsum(1/k2,1,inf) %k值為1到無窮大ans =1/6*pi2其結果為:1/12+1/22+1/32+1/42+ =2/6二、符號微積分5. 符號常微分方程求解在MATLAB中,用大寫字母D表示導數(shù)。例如,Dy表示y,D2y表示y,Dy(0)=5表示y(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y+y+y-x+5=0。dsolve(e,c,v)函數(shù)求常微分方程e在初值條件c下的特解。v是方程中的自變量,省略時按缺
25、省原則處理。若沒有給出初值條件c,則求方程的通解。dsolve(e1,e2,en,c1,cn,v1,vn)函數(shù)求解常微分方程組e1,en在初值條件c1,cn下的特解,若不給出初值條件,則求方程組的通解,v1,vn給出求解變量。5. 符號常微分方程求解【例9】求微分方程組: 2dx/dt+dy/dt-y=exp(-t), dx/dt+x+y=0 滿足初始條件x(0)=1.5, y(0)=0的特解。syms t x ys=dsolve(2*Dx+Dy-y=exp(-t),Dx+x+y=0); %求解微分方程組的通解s.x %微分方程組變量x的通解s.y %微分方程組變量x的通解s=dsolve(2*Dx+Dy-y=exp(-t),Dx+x+y=0,x(0)=1.5,y(0)=0);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加盟健康中心合作合同范本
- 初創(chuàng)公司分紅合同范本
- 保證合同范本單方
- 單位和個人合伙合同范本
- 書畫居間合同范本
- 供用熱力合同范本
- 關聯(lián)交易合同范本
- 會展活動合同范本
- 先導吊車出售合同范本
- 個人合伙買車合同范本
- 家校共育之道
- 【公開課】同一直線上二力的合成+課件+2024-2025學年+人教版(2024)初中物理八年級下冊+
- 人教鄂教版六年級下冊科學全冊知識點
- 鄭州市地圖含區(qū)縣可編輯可填充動畫演示矢量分層地圖課件模板
- 2024年湖南生物機電職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- (正式版)HGT 22820-2024 化工安全儀表系統(tǒng)工程設計規(guī)范
- 《中華民族共同體概論》考試復習題庫(含答案)
- 2023年青島遠洋船員職業(yè)學院高職單招(數(shù)學)試題庫含答案解析
- 促進能力提高的計劃表
- 北京小客車指標租賃協(xié)議最新
- 華為采購模式介紹
評論
0/150
提交評論