




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章符號運算科學計算可分為兩類:一類是純數值的計算,例如求函數的值,以及方程的數值解等等;另一類計算是符號運算,又稱代數運算,這是一種智能化的計算,處理的是符號。符號可以代表整數、有理數、實數和復數,也可以代表多項式、函數,還可以代表數學結構,如集合、群的表示等等。我們在數學的教學和研究中進行的數學運算多為符號運算。MATLAB中的符號數學工具箱(SymbolicMathToolbox)集成了豐富的符號運算功能?;镜姆枖祵W工具箱包含100多個MATLAB函數,包括的內容有:微積分、線性代數、化簡代數表達式、方程求解、特殊的數學函數、變量精度算法和數學變換等等。【學習目標】掌握對符號變量的定義和基本操作。掌握對符號表達式的定義和基本操作。掌握符號矩陣的生成和運算方法。了解符號微分、符號積分運算方法。掌握符號方程的求解方法。6.1符號變量、符號表達式和符號方程的生成符號數學工具箱定義了MATLAB的一個新的數據類型:符號對象(symbolicobject),其類型名標識為“sym”。符號對象內部的儲存內容是字符串,用來表示符號變量、符號表達式以及矩陣等等。生成符號變量和符號表達式的函數是sym和syms。6.1.1使用sym函數生成符號變量和符號表達式sym函數可以生成單個的符號數值、符號變量和符號表達式。格式為:S=sym(x)它生成了一個符號對象S。x可以是字符、字符串、表達式或字符表達式等等。如果x是一個數值,則得到該數值的符號表示。如果x是一個字符串,則可生成一個符號變量或符號表達式。例如,>>sqrt(2)ans=1.4142>>aa=sqrt(sym(2))ans=2^(1/2)sqrt(2)是對數值2進行開方運算;而在式aa=sqrt(sym(2))中,將2用sym命令轉化為符號對象,這樣,就得到了使用字符串形式表示的“根號2”??墒褂胐ouble命令獲取符號對象aa對應的數值運算結果。>>double(aa)ans=1.4142如果表達式里面的元素都定義為符號對象,則表達式之間還可以按代數規(guī)則進行運算。比如:>>sym(2)/sym(5)+sym(1)/sym(3)ans=11/15【例6-1】使用sym函數創(chuàng)建符號變量和符號表達式。分別輸入以下語句:x=sym('x')y=sym('hello')z=sym('(1+sqrt(5))/2')f=sym('a*x^2+b*x+c')f-a返回結果依次為:x=xy=helloz=(1+sqrt(5))/2f=a*x^2+b*x+c???Undefinedfunctionorvariable'a'.本例中,雖然符號表達式a*x^2+b*x+c創(chuàng)建成功并將其賦予變量f,但并沒有定義符號變量a,因此系統(tǒng)不能進行f-a運算,給出了錯誤信息。6.1.2使用syms函數定義符號變量和符號表達式syms函數可以一次創(chuàng)建多個符號變量,調用格式為:symsvar1,var2,var3...
,變量名之間的間隔也可以是空格?!纠?-2】使用syms函數定義符號變量和符號表達式。輸入以下語句:symsabcxf=a*x^2+b*x+cf-a返回結果為:f=a*x^2+b*x+cans=a*x^2+b*x+c-a與例6-1相比,本例中f-a運算成功。6.1.3符號方程的生成方程與函數的區(qū)別在于函數是由數字和變量組成的代數式,而方程則是包含了函數的等式,在MATLAB中,生成符號方程的方法與使用sym函數生成符號表達式類似?!纠?-3】用sym生成符號方程:
a*x^2+b*x+c=0。>>e1=sym('a*x^2+b*x+c=0')結果為:
e1=a*x^2+b*x+c=06.3符號表達式的基本操作用戶可以對符號表達式進行各種操作,包括四則運算、合并同類項、多項式分解和簡化等。6.3.1四則運算符號表達式也與通常的算術表達式一樣,可以進行加、減、乘、除等四則運算?!纠?-7】符號表達式的四則運算輸入以下語句:symsxyabfun1=sin(x)+cos(y)fun2=a+bfun3=fun1*fun2轉換結果為:fun1=sin(x)+cos(y)fun2=a+bfun3=(sin(x)+cos(y))*(a+b)6.3.2符號多項式的因式分解與展開MATLAB提供了對符號多項式進行因式分解與展開的函數,函數的調用格式為:factor(S):對符號多項式S分解因式。expand(S):對符號多項式S進行展開。collect(S):對符號多項式S按照默認變量x合并同類項。collect(S,v):對符號多項式S按變量v合并同類項。horner(f):將一般的符號多項式f轉換成嵌套形式。【例6-8】對表達式f=a^3-1進行因式分解。輸入:f=sym('a^3-1');factor(f)結果為:ans=(a-1)*(a^2+a+1)如果用syms命令如何定義函數?【例6-9】展開表達式f=(x+1)^5和f=sin(x-y)輸入:>>symsxy>>f=(x+1)^5;>>expand(f)返回結果為:ans=x^5+5*x^4+10*x^3+10*x^2+5*x+1>>f=sin(x-y);>>expand(f)返回結果為:ans=sin(x)*cos(y)-cos(x)*sin(y)【例6-10】符號多項式的同類項合并。(自學)輸入:f=sym('(exp(x)+x)*(x+2)*(y+1)');c1=collect(f)c2=collect(f,y)c3=collect(f,exp(x))返回結果為:c1=(y+1)*x^2+(exp(x)+2)*(y+1)*x+2*exp(x)*(y+1)c2=(exp(x)+x)*(x+2)*y+(exp(x)+x)*(x+2)c3=(x+2)*(y+1)*exp(x)+x*(x+2)*(y+1)我們分別按不同的變量進行同類項合并,得到了不同的結果。6.3.3提取有理式的分子和分母(自學)如果符號表達式是一個有理分式或可以展開為有理分式,可利用numden函數來提取符號表達式S中的分子和分母。其一般調用格式為:[n,d]=numden(S)該函數提取符號表達式S的分子(numerator)和分母(denominator),分別將它們存放在n與d中?!纠?-12】求有理式f=x/y+y/x分子和分母。輸入:symsxyf=x/y+y/x;[n,d]=numden(f)返回結果為:n=x^2+y^2d=y*x6.3.4符號表達式的化簡在MATLAB中,使用simplify函數和simple函數對符號表達式進行化簡。下面對它們進行分別介紹。1.simplify函數simplify函數利用Maple的化簡規(guī)則對符號表達式進行化簡。其中用到大量的代數恒等式以及大量的函數恒等式,包括求和、整數冪、開方、分數冪、三角函數、指數函數、對數函數、貝塞爾函數、超幾何分布函數、伽馬函數等等,力求得到最簡結果。【例6-13】用simplify函數化簡符號表達式。輸入:f=sym('sin(x)^2+cos(x)^2');S=sym('exp(c*log(sqrt(a+b)))');simplify(f)simplify(S)返回結果為:ans=1ans=(a+b)^(1/2*c)2.simple函數的使用simple(f)也是一種化簡的函數,它嘗試用多種不同的化簡算法對符號表達式進行化簡,以找到對應的最簡形式,其格式如下:[r,how]=simple(f)返回的r為化簡后的符號表達式,how為所采用的簡化方法。如果不指定輸出項r和how,則會輸出嘗試的所有化簡方法名稱及對應的化簡結果。【例6-14】用simple(f)函數化簡符號表達式14*x^2/(22*x*y)輸入:S=sym('14*x^2/(22*x*y)');[r,how]=simple(S)返回結果為:r=7/11*x/yhow=simplify6.4符號矩陣的生成和運算6.4.1符號矩陣的生成在MATLAB中,符號矩陣的生成與數值矩陣的相關操作很相似。創(chuàng)建符號矩陣的方法有以下幾種:用sym命令直接創(chuàng)建符號矩陣;用類似創(chuàng)建普通數值矩陣的方法創(chuàng)建符號矩陣;由數值矩陣轉換為符號矩陣。符號矩陣的輸出格式與數值矩陣有所不同,其每一行用“[]”標記。1.用sym命令直接創(chuàng)建符號矩陣這時sym命令的使用方法與前面創(chuàng)建符號表達式及方程的用法類似。所創(chuàng)建的符號矩陣的元素可以是任何符號對象,且元素的長度允許不同。在輸入格式上,矩陣行之間以“;”分割,各矩陣元素之間用“,”或空格分隔?!纠?-18】用sym函數創(chuàng)建符號矩陣。>>A=sym('[a,b;c,d]')A=[a,b][c,d]>>B=sym(‘[x+3*x,5*z+6*z;y-y,z/z]’)B=[x+3*x,5*z+6*z][y-y,z/z]2.以數值矩陣生成方法創(chuàng)建符號矩陣用這種方法創(chuàng)建符號矩陣之前,需要預先定義所有需要的符號變量。【例6-19】用生成數值矩陣的方法創(chuàng)建符號矩陣>>symsxyz>>B=[x+3*x,5*z+6*z;y-y,z/z]B=[4*x,11*z][0,1]3.由數值矩陣轉換為符號矩陣由于數值型對象和符號型對象分屬于兩個不同的數據類型,它們之間不能直接運算,但卻可以相互轉換。將數值對象M轉化為符號對象S時,可以應用sym函數,格式為:S=sym(M)【例6-20】使用sym函數將3階Hilbert矩陣轉換為符號矩陣。>>h=hilb(3)h=1.00000.50000.33330.50000.33330.25000.33330.25000.2000>>h1=sym(h)h1=[1,1/2,1/3][1/2,1/3,1/4][1/3,1/4,1/5]>>S=rand(2)S=0.81470.12700.90580.9134>>S1=sym(S)S1=[7338378580900475*2^(-53),4575182228323196*2^(-55)][8158648460577917*2^(-53),8226958330713791*2^(-53)]從本例可以看出,不管原來數值矩陣M是以分數還是浮點數形式賦值的,但當它被轉化為符號矩陣后,都將以最接近原數的精確有理式給出。6.4.2符號矩陣的運算(自學)符號矩陣的運算方法與數值矩陣類似,我們將常見的運算類型概述如下(設A和B是已存在的兩個符號矩陣):1.A+B、A-B符號陣列的加法與減法。若A與B為同型陣列時,A+B、A-B分別對對應元素進行加減;若A與B中至少有一個為標量,則把標量擴大為與另外一個同型的陣列,再按對應的元素進行加減。2.A*B,符號矩陣乘法。為線性代數中定義的矩陣乘法。按乘法定義要求必須有矩陣A的列數等于矩陣B的行數,或者至少有一個為標量時,方可進行乘法操作,否則將返回一出錯信息。3.A.*B,對應元素相乘。A.*B為按參量A與B對應的元素進行相乘。A與B必須為同型陣列,或至少有一個為標量。6.5符號微積分微積分是高等數學的基礎,MATLAB的符號數學工具箱提供了許多關于微積分計算的功能。6.5.1符號極限limit函數用來求符號函數的極限。其格式如下:limit(F,x,a)計算符號表達式F在x→a條件下的極限;limit(F,a)計算符號表達式F中由默認自變量趨向于a條件下的極限;limit(F)計算符號表達式F在默認自變量趨向于0條件下的極限;limit(F,x,a,‘right’)和limit(F,x,a,’left’)計算符號表達式F在x→a條件下的右極限和左極限。【例6-22】分別計算表達式,,分別輸入下列語句:symsxlimit(sin(x)/x)limit(1/x,x,0,'right')limit(1/x,x,0,'left')返回結果依次為:ans=1ans=infans=-inf6.5.2符號微分(自學)diff函數用來求符號微分,其格式如下:diff(S),求符號表達式S對于默認自變量的微分;diff(S,‘v’),求符號表達式S對于自變量v的微分;diff(S,n),求符號表達式S對于默認自變量的n次微分;diff(S,‘v’,n),求符號表達式S對自變量v的n次微分。【例6-23】符號表達式的微分運算。>>S1=sym('6*x^3-4*x^2+b*x-5');>>S2=sym('sin(a)');>>S3=sym('(1-t^3)/(1+t^4)');>>diff(S1)ans=18*x^2-8*x+b
>>diff(S1,2)
ans=36*x-8>>diff(S1,'b')ans=x>>diff(S2)ans=cos(a)>>diff(S3)ans=-3*t^2/(1+t^4)-4*(1-t^3)/(1+t^4)^2*t^3>>simplify(diff(S3))ans=t^2*(-3+t^4-4*t)/(1+t^4)^26.5.3符號積分(自學)int函數用來求解符號積分,其格式如下:int(S),求符號表達式S對于默認自變量的不定積分;int(S,’v’),求符號表達式S對于自變量v的不定積分;int(S,a,b),求符號表達式S對于默認自變量從a到b的定積分;int(S,’v’,a,b),求符號表達式S中自變量v計算從a到b的定積分。6.6符號積分變換(自學)在科學計算和各種工程實際中,常常要用到各種積分變換,比較常見的有Fourier變換、Laplace變換和z變換等。下面分別對他們進行介紹。6.7符號方程的求解6.7.1代數方程求解MATLAB的符號數學工具箱提供了solve函數對代數方程求解。其格式如下:g=solve(eq),求解代數方程eq=0,自變量為默認自變量;g=solve(eq,var),求解代數方程eq=0,自變量為var;g=solve(eq1,eq2,…,eqn,var1,var2,…,varn)),求解符號表達式eq1,eq2,…eqn組成的代數方程組,自變量分別為var1,var2,…varn。方程組的解將存入結構變量g。【例6-31】求一元二次方程a*x^2+b*x+c=0的根.>>f=sym('a*x^2+b*x+c');>>solve(f)%以x為自變量,求解方程f=0ans=1/2/a*(-b+(b^2-4*a*c)^(1/2))1/2/a*(-b-(b^2-4*a*c)^(1/2))>>solve(f,a)%以a為自變量,求解方程f=0ans=-(b*x+c)/x^2【例6-32】求解由方程x^2-y^2+z=10,x+y-5z=0,2x-4y+z=0構成的線性方程組。依次輸入以下語句:sym
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五房屋租賃代理協議
- 個人房購買合同標準文本
- 倉庫修整合同標準文本
- 住宅裝飾合同樣本政府
- 構建有效商業(yè)模型的試題及答案
- 借款擔保合同標準文本格式
- 兼職入職合同標準文本
- ktv銷售合同樣本
- 代簽燃氣合同樣本
- 公益性合同樣本
- 黑紅色簡約風《白夜行》名著導讀好書推薦PPT模板
- 吉春亞神奇的漢字-完整版PPT
- 上海市初三數學競賽(大同杯)試題
- 付款審批表(標準樣本)
- 《船舶安全檢查表》word版
- 市政工程監(jiān)理規(guī)劃范本(完整版)
- 壓裂設計步驟
- 交管12123駕照學法減分題庫及答案共155題(完整版)
- 水蛭深加工提取天然水蛭素項目資金申請報告寫作模板
- 讓創(chuàng)造力照亮每一個孩子的未來向明初級中學
- 模塊三 物資調運問題的圖上作業(yè)法
評論
0/150
提交評論