第三章符號(hào)運(yùn)算_第1頁
第三章符號(hào)運(yùn)算_第2頁
第三章符號(hào)運(yùn)算_第3頁
第三章符號(hào)運(yùn)算_第4頁
第三章符號(hào)運(yùn)算_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

P79表4-1limit命令的用法

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論