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

下載本文檔

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

文檔簡介

第三章MATLAB的符號運算功能3.1符號對象的創(chuàng)建3.2變量間的相互轉(zhuǎn)換3.5符號方程的求解3.4常用符號運算功能的實現(xiàn)3.3

符號表達式的操作和轉(zhuǎn)換第4章MATLAB的符號運算功能符號計算可以對未賦值的符號對象(常數(shù)、變量、表達式)進行運算和處理,是MATLAB處理數(shù)值功能的自然擴展。數(shù)值運算中必須先對變量賦值,然后才能參與運算。符號運算無須事先對獨立變量賦值,運算結果以標準的符號形式表達。符號運算不產(chǎn)生數(shù)值運算產(chǎn)生的運算誤差,可以在運算最后將數(shù)字代入結果,因此避免了中間運算的誤差,能夠以指定的精度返回結果。3.1符號對象的創(chuàng)建在數(shù)值計算過程中,參與運算的變量都是被賦了值的數(shù)值變量。而在符號運算的整個過程中,參與運算的是符號變量。在符號運算中所出現(xiàn)的數(shù)字都是當做符號來處理的。符號對象是一種數(shù)據(jù)結構,包括符號常數(shù)、符號變量和符號表達式,用來存儲代表符號的字符串。在符號運算中,凡是由符號表達式所生成的對象也都是符號對象。

3.1.1創(chuàng)建符號常量符號常量是不含變量的符號表達式,可用sym命令來創(chuàng)建。3.1.2創(chuàng)建符號變量MATLAB中創(chuàng)建符號變量是利用命令sym和syms來實現(xiàn)的。sym命令用創(chuàng)建單個符號變量,而syms命令則可以一次創(chuàng)建任意多個符號變量。因此,在符號運算中syms命令比sym命令常用。3.1.3創(chuàng)建符號表達式創(chuàng)建符號表達式有兩種方法:一是用sym命令直接創(chuàng)建符號表達式;二是按普通書寫形式創(chuàng)建符號表達式。1.用sym命令創(chuàng)建符號表達式創(chuàng)建時不需在前面進行任何說明,但是需要注意的是:表達式內(nèi)的符號變量并未得到說明,它們不會存在于MATLAB的工作空間。2.按普通書寫形式創(chuàng)建符號表達式在創(chuàng)建符號表達式之前,必須把符號表達式所包含的全部符號變量都創(chuàng)建完畢。創(chuàng)建符號表達式時,只需按照賦值格式輸入即可。3.1.4創(chuàng)建符號方程符號方程的創(chuàng)建方法與符號表達式創(chuàng)建的第一種方法類似,不能采用創(chuàng)建符號表達式的第二種方法。3.1.5創(chuàng)建符號矩陣創(chuàng)建符號矩陣有以下幾種方法:用sym命令直接創(chuàng)建符號矩陣;用類似創(chuàng)建普通數(shù)值矩陣的方法創(chuàng)建符號矩陣;由數(shù)值矩陣轉(zhuǎn)換為符號矩陣。1.用sym命令直接創(chuàng)建符號矩陣矩陣的元素可以是任何符號變量或符號表達式甚至是符號方程,并且元素的長度允許不等。輸入符號矩陣時,矩陣行與行之間用“;”隔開,各矩陣元素之間用“,”或“空格”隔開。2.用類似創(chuàng)建普通數(shù)值矩陣的方法創(chuàng)建符號矩陣在創(chuàng)建符號矩陣之前要將符號矩陣所包含的全部符號變量均創(chuàng)建完畢,然后在創(chuàng)建符號矩陣時只要按創(chuàng)建普通數(shù)值矩陣的格式輸入即可。3.由數(shù)值矩陣轉(zhuǎn)換為符號矩陣將數(shù)值矩陣M轉(zhuǎn)化為符號矩陣S的命令為:S=sym(M)需要注意:這個轉(zhuǎn)化過程是在系統(tǒng)內(nèi)部自動完成。

3.2數(shù)值變量、符號變量及字符變量間的相互轉(zhuǎn)換

(1)將其他類型變量轉(zhuǎn)換為符號變量命令格式:s=sym(f)其中變量f不受類型的限制,只要不是字符矩陣或非法的表達式,sym(f)命令均可將f轉(zhuǎn)換為符號變量s。例如:s1=sym('1.234')

s1=1.234s2=sym(1.234)

s2=617/500a='123f'

a=123f(2)將其他類型變量轉(zhuǎn)換為字符變量

(1).s=int2str(x)該命令可以把整數(shù)x轉(zhuǎn)換為字符型變量s。當x為有理數(shù)時,將對x先進行四舍五入得到整數(shù)后,再把它轉(zhuǎn)換為字符型變量。當x為虛數(shù)時,將只對x的實部進行轉(zhuǎn)換,轉(zhuǎn)換時,按照將有理數(shù)轉(zhuǎn)換為字符變量的相同規(guī)則進行。(2).S=num2str(x)該命令可以把普通的數(shù)值型變量x轉(zhuǎn)換為字符型變量s,對x無任何限制。執(zhí)行下面的命令,觀察這兩條命令之間的區(qū)別:x1=-123;s1=int2str(x1)s1=-123x2=-11.8+4i;s2=int2str(x2),s3=num2str(x2)s2=-12s3=-11.8+4i(3)將其他類型變量轉(zhuǎn)換為數(shù)值變量

(1).x=double(s)當s為符號變量時,該命令將s轉(zhuǎn)換為數(shù)值變量x;如果s中含有非數(shù)字的符號,則系統(tǒng)將給出出錯信息;當s為字符變量時,該命令將s轉(zhuǎn)換為數(shù)值矩陣x,矩陣中元素的值為s中相應字符的ASCII碼值。(2).x=str2num(s)該命令專用于將字符變量s轉(zhuǎn)換為數(shù)值變量x。當s是一個包含非數(shù)字字符的變量時,該命令將返回一個空矩陣。(3).x=numeric(s)該命令可將變量s轉(zhuǎn)換為數(shù)值變量x。這里s既可以是字符變量也可以是符號變量,但s不能是矩陣,否則將給出出錯信息。3.3符號表達式的操作和轉(zhuǎn)換3.3.1符號表達式中自由變量的確定(1).自由變量的確定原則小寫字母i和j不能作為自由變量。符號表達式中如果有多個字符變量,則按照以下順序選擇自由變量:首先選擇x作為自由變量;如果沒有x,則選擇在字母順序中最接近x的字符變量;如果與x相同距離,則在x后面的優(yōu)先。除去i和j的小寫字母,表達式中如果沒有其它字母,則選擇x作為獨立變量。大寫字母比所有小寫字母都靠后。當變量是詞組時,比較第一個字母,第一個字母一樣時,比較第二個字母,以此類推。(2).findsym命令如果不確定符號表達式中的自由符號變量,可以用findsym命令來自動確定。其調(diào)用格式有以下兩種:findsym(s):其中s為一個符號表達式或者是符號矩陣,執(zhí)行該命令后返回一個字符串,該字符串包含s中出現(xiàn)的所有符號變量,并且符號變量是以字母順序排列的(分別用“,”隔開);如果s中沒有找到符號變量,則findsym將返回一個空的字符串。findsym(s,n):返回字母表中最靠近字母x的n個字符變量。3.3.2符號表達式的化簡(1).pretty命令該命令不會對原表達式進行任何化簡或展開,只是以類似于數(shù)學課本上的形式(如有理分式)來顯示符號表達式。本節(jié)所有的簡化命令都不支持字符定義。該命令可以合并同類項,給出降冪排列形式。其調(diào)用格式有:collect(A):按默認變量對表達式A進行降冪排列。collect(A,v):按指定變量v對表達式A進行降冪排列。(2).collect命令(3).expand命令該命令將符號表達式展開成多項式,給出降冪排列形式。在多項式、三角函數(shù)、對數(shù)函數(shù)和指數(shù)函數(shù)中經(jīng)常用到該命令。其調(diào)用格式為:expand(S),其中S為符號表達式。該命令可將降冪排列的多項式符號表達式寫成嵌套的形式。(4).horner命令(5).factor命令該命令可將符號表達式分解成因式。(6).simplify命令該命令充分考慮了符號表達式的各種運算法則,并充分考慮了各種特殊函數(shù)的運算性質(zhì),經(jīng)計算機比較后給出認為表達式相對簡單的一種化簡方法。3.3.3符號表達式的替換subs命令可用來進行對符號表達式中符號變量的替換。其調(diào)用格式為:

subs(s):用給定值替換符號表達式s中的所有變量。

subs(s,new):用new替換符號表達式s中的自由變量。

subs(s,old,new):用new替換符號表達式s中的old變量。3.3.4求反函數(shù)和復合函數(shù)(1).求反函數(shù)對于函數(shù)f(x),存在另一個函數(shù)g(x)使得g(f(x))=x成立,則函數(shù)g(x)稱為函數(shù)f(x)的反函數(shù)。在MATLAB中,finverse命令可以求得符號函數(shù)的反函數(shù)。其調(diào)用格式為:finverse(f,v):對指定自變量v的函數(shù)f(v)求反函數(shù)。當v省略時,則對默認的自由符號變量求反函數(shù)。(2).求復合函數(shù)運用命令compose可以求符號函數(shù)f(x)和g(y)的復合函數(shù)。其調(diào)用格式為:compose(f,g):求f(x)和g(y)的復合函數(shù)f(g(y))。compose(f,g,z):求f(x)和g(y)的復合函數(shù)f(g(z))。compose(f,g,x,z):以x為自變量構成復合函數(shù)。compose(f,g,x,y,z):以x為自變量構成復合函數(shù),并用z替換y。說明:x是f的自變量,y是g的自變量;當函數(shù)f有多個自變量時,可以通過設置來選擇以某個自變量構成復合函數(shù)。已知:f=f(x),g=g(y),compose(f,g)返回f(g(y))已知:f=f(x),g=g(y),compose(f,g,’z’)返回f(g(z))finverse和compose命令都不支持字符定義方式,必須用符號定義方式(sym)。3.3.5符號表達式的轉(zhuǎn)換(1).符號表達式與多項式的轉(zhuǎn)換MATLAB提供了sym2poly和poly2sym兩條命令來實現(xiàn)構成多項式的符號表達式與多項式系數(shù)構成的行向量之間的相互轉(zhuǎn)換。sym2poly命令用來將構成多項式的符號表達式轉(zhuǎn)換為按降冪排列的行向量,該命令只能對含有一個變量的符號表達式進行轉(zhuǎn)換。poly2sym與sym2poly相反,用來將按降冪排列的行向量轉(zhuǎn)換為符號表達式。sym2poly命令不支持字符定義格式(2).提取分子和分母如果表達式是一個有理分式(兩個多項式之比),可以利用numden命令來提取分子或分母,必要時還可以進行通分。其調(diào)用格式為:[n,d]=numden(S):將符號表達式S轉(zhuǎn)換為分子分母都是整系數(shù)的最佳多項式,返回結果n為分子,d為分母。當?shù)仁阶筮呏挥幸粋€變量時,返回的是分子多項式。

注意顯示格式numden命令只支持符號定義,不支持字符定義3.4常用符號運算功能的實現(xiàn)3.4.1符號的代數(shù)運算符號表達式的代數(shù)運算與普通數(shù)值運算基本一致,只是在使用時要注意符號定義方式與字符定義方式的處理。命令symadd,symsub,symmul和symdiv可以進行兩個表達式的加、減、乘、除運算。這類命令支持字符定義方式sympow可將一個表達式表示為另一個表達式的冪次,該命令也支持字符定義方式。symop命令可以將兩個或多個表達式合并為一個,被合并的表達式由多個單引號括起來的運算符號連接,各單引號之間用逗號隔開。該命令也支持字符定義方式。3.3.3符號的極限運算假定符號表達式的極限存在,MATLAB提供了直接求表達式極限的命令limit,命令limit的基本用法如

P79表4-1limit命令的用法

表達式命令格式說明limit(f)對默認變量求趨近于0的極限limit(f,x,a)對x求趨近于a的極限,當左右極限不相等時極限不存在。limit(f,x,a,left)對x求左趨近于a的極限limit(f,x,a,right)對x求右趨近于a的極限極限不存在時,返回結果為NaN。該命令不支持字符定義方式3.3.3符號的微積分運算(1).符號微分命令diff是用來求符號表達式的微分。其調(diào)用格式為:diff(f):求f對自由變量的一階微分。diff(f,t):求f對符號變量t的一階微分。diff(f,n):求f對自由變量的n階微分。diff(f,t,n):求f對符號變量t的n階微分。diff(f)

:對缺省變量求一階微分diff(f,’t’)

:對指定變量t求一階微分diff命令對符號定義及字符定義方式都支持diff(f,n)

對自由變量進行n階微分diff(f,’t’,n)

:對指定變量t求n階微分命令diff還可以用于對數(shù)組中的元素進行逐項求差值,計算出的差值比原來的向量少一列。2.符號積分命令int(f)可以求得符號表達式的積分,即找出一個符號表達式g使得diff(g)=f,也可以說是求微分的逆運算。其調(diào)用格式為:int(f,’t’):求符號變量t的不定積分。int(f,’t’,a,b):求符號變量t的定積分。int(f,’t’,’m’,’n’):求符號變量t的定積分。說明:t為符號變量,當t省略則為默認自由變量;a和b為數(shù)值,[a,b]為積分區(qū)間;m和n為符號對象,[m,n]為積分區(qū)間。當MATLAB不能找到積分時,它將給出警告提示并返回該函數(shù)的原表達式。int(f):對缺省變量求積分int(f,’t’):對指定變量t求積分int命令對符號定義及字符定義方式都支持int(f,a,b)和int(f,’t’,a,b):對缺省或指定變量求從a到b的定積分,a,b是數(shù)值。int(f,m,n)和int(f,’t’,m,n):對缺省或指定變量求從m到n的定積分,m,n是符號變量。3.3.5符號的級數(shù)運算1.symsum命令當符號表達式的級數(shù)和存在時,MATLAB提供了symsum和taylor命令來進行求級數(shù)的運算。symsum(s,x,a,b):計算表達式s的級數(shù)和。說明:x為自變量,x省略則默認為對自由變量求和;s為符號表達式;[a,b]為參數(shù)x的取值范圍,省略時為0~x-1。命令symsum不支持字符定義方式2.taylor命令taylor(F,x,n):求泰勒級數(shù)展開。說明:x為自變量,F(xiàn)為符號表達式,對F進行泰勒級數(shù)展開至n項,n為數(shù)值,省略時默認為6。命令taylor不支持字符定義方式3.4符號方程的求解3.3.1代數(shù)方程的求解利用MATLAB提供的solve命令可以方便地求解涉及符號的一般代數(shù)方程(組)。其調(diào)用格式為:solve(f):f為符號方程,該命令可以求f關于系統(tǒng)默 認變量為自變量的符號方程的解。solve(f,v):求出的解是關于指定變量v的解。[a1,a2,…,an]=solve(f1,f2,…,fn)[a1,a2,…,an]=solve(f1,f2,…,fn,’v1,v2,…,vn’)如果表達式不是一個方程式(不含等號),則在求解之前自動將表達式置成0。solve命令也支持字符定義方式3.3.2常微分方程的求解MATLAB的符號工具箱中提供了求解常微分方程(組)的命令:dsolve

溫馨提示

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

評論

0/150

提交評論