MATLABch07MATLAB符號(hào)計(jì)算與工具箱Word版_第1頁(yè)
MATLABch07MATLAB符號(hào)計(jì)算與工具箱Word版_第2頁(yè)
MATLABch07MATLAB符號(hào)計(jì)算與工具箱Word版_第3頁(yè)
MATLABch07MATLAB符號(hào)計(jì)算與工具箱Word版_第4頁(yè)
MATLABch07MATLAB符號(hào)計(jì)算與工具箱Word版_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Matlab-ch07(MATLAB符號(hào)計(jì)算與工具箱)第7講 MATLAB符號(hào)計(jì)算內(nèi)容提要:本章將介紹符號(hào)運(yùn)算的概念、基本用法和MAPLE資源的調(diào)用,同時(shí)將詳細(xì)介紹MATLAB的符號(hào)函數(shù)計(jì)算器。重點(diǎn)及難點(diǎn):§7.1 概述 除數(shù)值計(jì)算外,像公式推導(dǎo),因式分解等這一類含有x、y、z、等符號(hào)變量的符號(hào)表達(dá)式的抽象運(yùn)算,以及求解代數(shù)方程或微分方程的精確解等,在工程領(lǐng)域和科學(xué)研究中也占有很大比例。MathWorks公司于1993年購(gòu)買了主要針對(duì)符號(hào)計(jì)算、具有強(qiáng)大符號(hào)運(yùn)算能力的MAPLE V軟件的使用權(quán),隨后以MAPLE的內(nèi)核為符號(hào)計(jì)算的“引擎”,依靠MAPLE已有的庫(kù)函數(shù)(1ibrary)開發(fā)

2、了在MATLAB環(huán)境下的實(shí)現(xiàn)符號(hào)計(jì)算的工具箱,即符號(hào)數(shù)學(xué)工具葙(Symbolic Math Toolbox),成功地將MAPLE的符號(hào)運(yùn)算合成到MATLAB的數(shù)值計(jì)算環(huán)境中去。 MATLAB的符號(hào)數(shù)學(xué)工具箱包括基本符號(hào)數(shù)學(xué)工具箱和擴(kuò)展符號(hào)數(shù)學(xué)工具箱兩個(gè)子工具箱。其中基本符號(hào)數(shù)學(xué)工具箱是MATLAB語(yǔ)言的自然擴(kuò)展,它集中了大約100多個(gè)MATLAB函數(shù),這些是一些基本的函數(shù)命令,為調(diào)用MAPLE的“內(nèi)核”提供了相應(yīng)的命令,同時(shí)可以在這個(gè)工具箱內(nèi)調(diào)用MAPLE的線性代數(shù)工具包。而在擴(kuò)展符號(hào)數(shù)學(xué)工具箱內(nèi)可以調(diào)用所有非圖形類的屬于MAPLE的工具包,并且運(yùn)用MAPLE的編程特征完成自設(shè)的運(yùn)算。MATL

3、AB有了這兩個(gè)子工具箱,用戶便可以使用符號(hào)對(duì)象編寫自己的M文件和函數(shù),繼續(xù)擴(kuò)展MATLAB的強(qiáng)大功能。 符號(hào)數(shù)學(xué)工具箱一共有三個(gè)通道與MAPLE交換信息: 1、通過(guò)基本符號(hào)數(shù)學(xué)工具箱。即在用MATLAB語(yǔ)言編寫的多個(gè)函數(shù)中,通過(guò)若干個(gè)專用函數(shù)進(jìn)行符號(hào)運(yùn)算。用于符號(hào)運(yùn)算的專用函數(shù)按照內(nèi)容可分為: (1)函數(shù)體(Funcfion Body)符號(hào)表達(dá)式和符號(hào)矩陣的操作; (2)線性代數(shù); (3)微積分; (4)符號(hào)方程的求解; (5)多項(xiàng)式的化簡(jiǎn)、展開和代入; (6)特殊的數(shù)學(xué)函數(shù)。 2、通過(guò)maple.m、mpa.m兩個(gè)專門設(shè)計(jì)的M文件進(jìn)行符號(hào)運(yùn)算。這種符號(hào)運(yùn)算的運(yùn)算方式要求掌握一些MAPLE的基

4、本語(yǔ)句。 3、通過(guò)MATLAB中的函數(shù)計(jì)算器(Function Caculator)也可以進(jìn)行較為簡(jiǎn)單的符號(hào)運(yùn)算,這是MATLAB最方便、最直觀的符號(hào)運(yùn)算方法。1 / 21 在數(shù)值計(jì)算參與輸入、輸出和中間計(jì)算的過(guò)程中,所有運(yùn)作的變量都是被賦了值的數(shù)值變量;而在符號(hào)計(jì)算的過(guò)程中,參與運(yùn)作的變量都是符號(hào)變量(Symbolic Variable)(包括符號(hào)表達(dá)式中出現(xiàn)的數(shù)字也當(dāng)作符號(hào)處理)。使用字符串進(jìn)行符號(hào)分析而不是基于數(shù)組的數(shù)值分析,是符號(hào)數(shù)學(xué)工具箱區(qū)別于其他工具箱的重要特征。 同樣,可以在符號(hào)數(shù)學(xué)工具箱中使用【Help】命令或者使用網(wǎng)絡(luò)瀏覽器查閱HTML幫助文件獲得關(guān)于符號(hào)運(yùn)算命令和函數(shù)的幫助

5、信息。需要說(shuō)明的是,由于【Help】命令查找的范圍只限于MATLAB的內(nèi)部函數(shù)和命令,因此限制了它的使用范圍。當(dāng)查找的命令不是MATLAB的函數(shù),而是僅由它使用的屬于MAPLE V的函數(shù)時(shí),【Help】命令將無(wú)法得出結(jié)果。此時(shí)便要使用MAPLE V的幫助命令【Mhelp】進(jìn)行查找,其使用格式與【Help】命令完全相同,但得到的結(jié)果是MAPLE V中函數(shù)命令的幫助信息。§7.2 符號(hào)變量 在進(jìn)行符號(hào)計(jì)算時(shí),首先要定義基本的符號(hào)對(duì)象(可以是常數(shù)、變量以及表達(dá)式等),然后利用這些基本符號(hào)對(duì)象去構(gòu)成新的表達(dá)式,從而進(jìn)行所需的符號(hào)運(yùn)算。在運(yùn)算中,凡是由包含符號(hào)對(duì)象的表達(dá)式所生成的新對(duì)象也都是符

6、號(hào)對(duì)象??梢允褂胹ym和syms這兩個(gè)函數(shù)命令來(lái)創(chuàng)建和定義基本的符號(hào)對(duì)象。一、用sym函數(shù)定義符號(hào)變量 sym函數(shù)的調(diào)用格式: 1、S=sym(arg) 從表達(dá)式arg創(chuàng)建一個(gè)sym對(duì)象S,如果arg是一個(gè)字符串(string),則S是符號(hào)變量或符號(hào)數(shù);如arg是數(shù)值標(biāo)量或矩陣,則S是這些給定數(shù)值的符號(hào)形式。以下是sym函數(shù)調(diào)用形式的具體實(shí)現(xiàn)方式: (1)x=sym('x') 建立符號(hào)變量x,變量的值為單引號(hào)內(nèi)的字符或字符串,這里是和變量名相同的字符'x'; (2)x=sym('x','real') 設(shè)定符號(hào)變量為實(shí)型變量(Rea

7、l),此時(shí)conj(x)和x相等; (3)x=sym('x', 'unreal') 使x為純粹的形式變量,沒(méi)有附加屬性。一般用來(lái)清除x的實(shí)型屬性; (4)類似pi=sym('pi')和delta=sym('l/10') 建立符號(hào)數(shù),這種方式避免了浮點(diǎn)數(shù)本身的近似,建立的符號(hào)數(shù)是數(shù)值的精確表示。這種方式建立的符號(hào)數(shù)pi可以臨時(shí)代替內(nèi)置的同名數(shù)值函數(shù)pi。 2、S=sym(A, flag) 可以將數(shù)值或矩陣轉(zhuǎn)化為符號(hào)形式,其中flag選項(xiàng)有四項(xiàng)參數(shù),即'f','r','e'和'd

8、',它們對(duì)應(yīng)于不同的符號(hào)形式,'r'為缺省項(xiàng)。各項(xiàng)的含義如下: (1)選項(xiàng)'f' 代表十六進(jìn)制浮點(diǎn)形式。格式為:'1.F'*2(e)or'-1.F'*2(e),其中F是由13位十六進(jìn)制數(shù)組成的字符串,e是整數(shù)(但F前面的“1”是十進(jìn)制數(shù))。例如: sym(1/10,'f') ans= '1.999999999999a'*2(-4) 因?yàn)?/10不能用浮點(diǎn)精確地表示。 (2)選項(xiàng)'r' 代表有理數(shù)形式。像p/q、p*pi/q,sqrt(p)、2q和l0q之類的有理數(shù)形式,有效地

9、補(bǔ)償了舍入誤差,但是也有可能表示的浮點(diǎn)值和原值不相等。如果找不到簡(jiǎn)單的有理數(shù)形式近似,則可采用形式p*2q產(chǎn)生正確的浮點(diǎn)數(shù),其中p是很大的整數(shù)。例如: sym(4/3, 'r') ans= '4/3' 而 sym(1+sqrt(5), 'r') ans= 7286977268806824*2(-51) (3)選項(xiàng)'e' 估計(jì)誤差。根據(jù)eps(浮點(diǎn)運(yùn)算的相對(duì)精度)給出理論表達(dá)式和實(shí)際計(jì)算的誤差。例如: sym(3*pi/4, 'e') ans= 3*pi/4-103*eps/249 (4)選項(xiàng)'d'

10、表示十進(jìn)制小數(shù)。其有效數(shù)字位數(shù)由digits函數(shù)定義,缺省的有效位數(shù)是32位。如果有效位數(shù)小于16位,則會(huì)損失一些精度。例如: digits(10), sym(4/3, 'd') ans= 1.333333333 digits(20), sym(4/3, 'd') ans= 1.3333333333333332593 可以看出,當(dāng)有效位數(shù)超過(guò)16位時(shí),結(jié)果不再以3的循環(huán)結(jié)尾,而是以最接近4/3的浮點(diǎn)數(shù)的精確十進(jìn)制形式結(jié)尾。二、用syms函數(shù)定義符號(hào)變量 在符號(hào)變量和變量值相同時(shí),可以用sym的簡(jiǎn)捷方式來(lái)建立符號(hào)變量,即用函數(shù)sym來(lái)表達(dá)。該函數(shù)的用法及其與sym

11、函數(shù)的關(guān)系如下: (1)syms argl arg2 等價(jià)于argl=sym('argl'); arg2=sym('arg2); (2)syms argl arg2 real等價(jià)于argl=sym('argl','real'); arg2=sym('arg2', 'real'); (3)syms argl arg2 positive等價(jià)于argl=sym('arg1', 'positive'); arg2=sym('arg2', 'positive&#

12、39;); (4)syms argl arg2 unreal等價(jià)于argl=sym('argl', 'unreal); arg2=sym('arg2', 'unreal'); 例7-1example7_1.m 創(chuàng)建一個(gè)字符型數(shù)據(jù)變量和一個(gè)符號(hào)型數(shù)據(jù)變量,并比較它們的不同。 f=sym('a') 創(chuàng)建一個(gè)符號(hào)變量f f= a f1='a' 創(chuàng)建一個(gè)字符變量f1 f1= a size(f) 求符號(hào)變量f的大小 ans= 1 結(jié)果為一個(gè)l×l的矩陣 size(f1) 求符號(hào)變量f1的大小ans= 1 結(jié)

13、果同樣為一個(gè)l×l的矩陣 f=fl 對(duì)變量f和f1進(jìn)行邏輯運(yùn)算,看兩變量是否相等ans= 1 返回結(jié)果為1,表示“真”,二者內(nèi)容是相等的 abs(f1) 求字符型變量f1的ASIIC碼值ans= 97 abs(f) 求符號(hào)型變量f的ASIIC碼值ans= abs(a) 可見f和f1的ASCII碼值是不相同的,因此兩個(gè)變量是不同的 由本例題可以清楚地看出字符型變量和符號(hào)型變量的區(qū)別。鑒于符號(hào)型數(shù)據(jù)是符號(hào)運(yùn)算的主要數(shù)據(jù)類型,本講將主要采用符號(hào)型數(shù)據(jù)作為介紹命令的參數(shù)。§7.3 符號(hào)表達(dá)式和符號(hào)方程一、符號(hào)表達(dá)式和符號(hào)方程的概念 符號(hào)表達(dá)式(Symbolic Expression

14、)和符號(hào)方程(Symbolic Equation)是將表達(dá)式和方程賦給一個(gè)符號(hào)變量,通過(guò)引用該符號(hào)變量來(lái)引用相應(yīng)的表達(dá)式或方程。它們是兩個(gè)不同的符號(hào)對(duì)象。符號(hào)表達(dá)式是代表數(shù)字、函數(shù)、算子和變量的字符串和字符串?dāng)?shù)組,不要求變量有預(yù)先確定的值,而符號(hào)方程是含有等號(hào)的表達(dá)式。它們的區(qū)別在于表達(dá)式不含等號(hào),而方程必須帶等號(hào)。 1、符號(hào)表達(dá)式symbolic Expression>>f=sym('a*x2+b*x2+c') %表達(dá)式 2、符號(hào)方程 symbolic Equation>>f=sym(a*x2+b*x2+c=0) %方程二、符號(hào)表達(dá)式和符號(hào)方程的建立

15、1、采用sym命令 采用sym命令來(lái)創(chuàng)建符號(hào)表達(dá)式和符號(hào)方程的調(diào)用格式為: f=sym('arg') arg代表一個(gè)表達(dá)式或方程,注意,不要遺忘單引號(hào)。 (1)創(chuàng)建一個(gè)表達(dá)式 f=sym('a*x2+b*x+c') f= a*x2+b*x+c (2)創(chuàng)建一個(gè)方程 f=sym('a*x2+b*x+c=0') f= a*x2+b*x+c=0 2、直接建立法 符號(hào)表達(dá)式和符號(hào)方程也可以直接采用與MATLAB中字符串變量的創(chuàng)建方法一樣來(lái)建立。如: (1)建立一個(gè)表達(dá)式 f='a*x2+b*x+c' f= a*x2+b*x+c (2)創(chuàng)建一

16、個(gè)方程 f='a*x2+b*x+c=0' f= a*x2+b*x+c=0 【注意】: 符號(hào)表達(dá)式和符號(hào)方程對(duì)空格很敏感。因此,在創(chuàng)建符號(hào)表達(dá)式或符號(hào)方程時(shí),不要在字符間任意加空格符;在符號(hào)計(jì)算中出現(xiàn)的數(shù)字也是當(dāng)作符號(hào)處理的;符號(hào)矩陣是數(shù)組,其元素是符號(hào)表達(dá)式。§7.4 符號(hào)矩陣一、符號(hào)矩陣的建立 符號(hào)矩陣的創(chuàng)建有兩種方法,即由sym命令創(chuàng)建和由字符串直接輸入創(chuàng)建。 1、由sym命令建立符號(hào)矩陣 矩陣元素是不帶等號(hào)的符號(hào)表達(dá)式,各矩陣元素的長(zhǎng)度可以不同,矩陣行之間用分號(hào)隔開,各元素間用逗號(hào)或空格隔開。例如:>>A=sym('4+x x2 x; x3

17、5x-3 x*a') A= 4+x, x2, x x3,5*x-3, x*a 或利用簡(jiǎn)捷方式,命令如下:>>syms x a>>A=4+x x2 x;x3 5*x-3 x*a A= 4+x, x2, x x3, 5*x-3, x*a 2、由字符串直接輸入創(chuàng)建矩陣 此種輸入法與MATLAB字符串矩陣的輸入相似。它不需要調(diào)用sym函數(shù),但要保證在同一列中各元素字符串有同樣的長(zhǎng)度,在較短的字符串前后用空格符填充。上面的矩陣也可以用下列命令來(lái)實(shí)現(xiàn):>>A='4+x x2 x ' 'x3 5*x-3 x*a' A= 4+x x2

18、 x x3 5'x-3 x*a 【注意】: 此種方法在建立時(shí)要求符號(hào)矩陣每一行的兩端都有方括號(hào),而MATLAB字符串矩陣僅在首尾有方括號(hào)。二、數(shù)字矩陣和符號(hào)矩陣的轉(zhuǎn)換 由于MATLAB的數(shù)值型和符號(hào)型是兩種不同的數(shù)據(jù)類型,因此在MATLAB中,這兩個(gè)數(shù)據(jù)類型的變量之間不能直接進(jìn)行符號(hào)運(yùn)算,必須在MATLAB的工作空間內(nèi)將數(shù)值型轉(zhuǎn)換為符號(hào)型后才能進(jìn)行符號(hào)運(yùn)算。不管數(shù)值矩陣的元素是以分?jǐn)?shù)或是浮點(diǎn)數(shù)表示,轉(zhuǎn)換后的符號(hào)矩陣都將以最接近有理式的形式給出。 1、數(shù)字矩陣轉(zhuǎn)換為符號(hào)矩陣 數(shù)字矩陣轉(zhuǎn)換成符號(hào)矩陣是通過(guò)sym函數(shù)命令來(lái)實(shí)現(xiàn)的,起調(diào)用格式是:>>sym(A) 例7-3examp

19、le7_3.m 數(shù)值矩陣轉(zhuǎn)化為符號(hào)矩陣 A=2/5 4/0.78 sqrt(23)/3; 0.33 0.3333 log(4) 輸入數(shù)值矩陣A A= 0.4000 5.1282 1.5986 0.3300 0.3333 1.3863 FA=sym(A) 將數(shù)值矩陣A轉(zhuǎn)化為符號(hào)矩陣FA FA= 2/5 200/39 sqrt(23/9) 33/100 3333/10000 6243314768165359*2(-52)三、符號(hào)矩陣的引用和修改 在數(shù)值計(jì)算中,可以用一個(gè)指令來(lái)實(shí)現(xiàn)對(duì)矩陣中的任何一個(gè)子矩陣進(jìn)行引用和修改,但在符號(hào)計(jì)算中,引用(Quote)和修改(Modify)只能對(duì)符號(hào)矩陣中具體的元

20、素一個(gè)一個(gè)地進(jìn)行。 例7-5example7_5.m 用函數(shù)sym和syms建立符號(hào)變量、表達(dá)式和矩陣。 (1)用命令建立符號(hào)變量x和beta,并設(shè)置附加屬性為實(shí)型變量,命令為: x=sym('x', 'real'); x= x beta=sym('beta', 'real'); %采用簡(jiǎn)捷方式:syms x beta real beta= beta (2)建立復(fù)數(shù)變量z z=x+beta*i; conj(x) %用下面的命令計(jì)算相應(yīng)變量的共軛復(fù)數(shù): ans= x conj(z) ans= x-i*beta expand(z*co

21、nj(z) ans= x2+beta2 (3)建立三次函數(shù)y=ax3+bx2+cx+d的符號(hào)表達(dá)式,其命令為: y=sym('a*x3+b*x2+c*x+d') y= a*x3+b*x2+c*x+d 這個(gè)命令將符號(hào)表達(dá)式ax3+bx2+cx+d賦值給變量y,由于沒(méi)有建立對(duì)應(yīng)于表達(dá)式中d、b、c、d和x的變量,y中的內(nèi)容只是一個(gè)簡(jiǎn)單的字符串。為了使y成為一個(gè)真正的符號(hào)表達(dá)式,可以執(zhí)行符號(hào)數(shù)學(xué)運(yùn)算(微積分等),必須顯式地建立這些變量。其命令如下: a=sym('a') b=sym('b') c=sym('c') d=sym('

22、d') x=sym('x') %用簡(jiǎn)捷方式: syms a b c d x 如果用上述兩個(gè)命令建立符號(hào)矩陣,命令為: syms a b c d A=a a+c d+b;c d a+c;a+c+d c c+d*a A= a a+c d+b c d a+c a+c+d c c+d*a syms eee ddd A(1,3)=eee; %用“eee”代替矩陣A中的A(1,3)位置的元素 A(3,2)=ddd; %用“ddd'代替矩陣A中的A(3,2)位置上的元素 A 結(jié)果為: A= a a+c eee c d a+c a+c+d ddd c+d*a§7.5

23、符號(hào)數(shù)學(xué)函數(shù) MATLAB的符號(hào)數(shù)學(xué)工具箱具有創(chuàng)建數(shù)學(xué)函數(shù)的功能,既可以建立一般的數(shù)學(xué)函數(shù),如y=ax2+bx+c,又可以建立抽象的數(shù)學(xué)函數(shù),如y=f(x)等。一、一般數(shù)學(xué)函數(shù) MATLAB的符號(hào)數(shù)學(xué)工具箱有兩種方式建立一般的數(shù)學(xué)函數(shù),即利用符號(hào)表達(dá)式和利用建立M文件的方法。 1、利用符號(hào)表達(dá)式 先定義符號(hào)變量,再建立符號(hào)表達(dá)式,例如: syms x y z f=sin(x+y)/(x-y) g=sqrt(x2+y2+z2) 可以使用符號(hào)數(shù)學(xué)工具箱的函數(shù)對(duì)函數(shù)f,g進(jìn)行操作。 2、建立M文件 M文件可以更方便地使用函數(shù)。MATLAB的許多內(nèi)置式和函數(shù)便是用M文件建立的。例如,要建立一個(gè)名為si

24、nx的函數(shù)用于求sin(x)/x的值,只要建立一個(gè)求sin(x)/x值的M文件,然后放入設(shè)置的當(dāng)前工作目錄中即可(本文以MATLAB的缺省設(shè)置d:matlabRl2work為當(dāng)前工作路徑)。 function y=sinx(x) SINX the symbolic sinc function to comput sin(x)/x if isequal(x, sym(0) y=l; else y=sin(x)/x; end 同樣,可以將此函數(shù)擴(kuò)展到多變量的情況,用戶可以用此種方法方便地建立自己的函庫(kù)。二、抽象數(shù)學(xué)函數(shù)(隱函數(shù)) 在實(shí)際工程應(yīng)用和科學(xué)計(jì)算中,經(jīng)常用f(x)、g(x,y,z)或f、g

25、之類的符號(hào)來(lái)代表個(gè)己知或未知的抽象函數(shù)進(jìn)行運(yùn)算,此類運(yùn)算同樣可用MATLAB的sym命令完成。 用sym命令創(chuàng)建一個(gè)變量為varl、var2,var3、varn的f函數(shù),格式為: syms varl var2 var3 varn f=sym('f(varl var2 var3 varn)') 可以采用工具箱中的命令對(duì)抽象函數(shù)f進(jìn)行操作。 例7-7example7_7.m 建立一階差分函數(shù)f=f(dx+h)-f(x)/h syms x h 建立符號(hào)變量 f=sym('f(x)') 建立抽象函數(shù)f f= f(x) df=(subs(f,x,x+h)-f)/f 建立一

26、階差分公式 df= (f(x+h)-f(x)/h 在進(jìn)行符號(hào)積分變換時(shí),使用sym的此項(xiàng)功能使運(yùn)算變得十分方便。三、數(shù)據(jù)類型之間的相互轉(zhuǎn)換 MATLAB中的數(shù)值型、字符型和符號(hào)型三種數(shù)據(jù)類型的等級(jí)不同,其中數(shù)值變量級(jí)別最低,字符變量級(jí)別居中,符號(hào)變量級(jí)別撮高。如果有這三種變量參與的混合運(yùn)算,系統(tǒng)將會(huì)把所有參與運(yùn)算的變量自動(dòng)統(tǒng)一轉(zhuǎn)換為變量等級(jí)最高的類型,然后進(jìn)行計(jì)算,也可以通過(guò)命令來(lái)完成對(duì)不同數(shù)據(jù)類型之間的轉(zhuǎn)換,大致可以分為三種情況: 1、轉(zhuǎn)化為數(shù)值變量 (1)x=double(S)u S為符號(hào)變量時(shí),將S轉(zhuǎn)化為數(shù)值變量x,若S中有非數(shù)字的符號(hào),則系統(tǒng)給出出錯(cuò)提示;u S為字符變量時(shí),將S轉(zhuǎn)化為

27、數(shù)值矩陣,矩陣中的元素為S中相應(yīng)字符的ASCII碼值。 (2)x=str2num(S) 專門用于將字符型變量轉(zhuǎn)換為數(shù)值變量。當(dāng)S中含有非字符型變量時(shí),該命令返回一個(gè)空矩陣。 (3)x=numeric(S) 將S轉(zhuǎn)換為數(shù)值型,不管S是字符變量還是符號(hào)變量。但S不能是矩陣,否則給出錯(cuò)誤信息。 2、轉(zhuǎn)化為符號(hào)變量 S=sym(f) %對(duì)變量f沒(méi)有任何限制,只要不是非法的表達(dá)式或字符矩陣即可。 3、轉(zhuǎn)化為字符變量 (1)S=int2str(x) 將整數(shù)x轉(zhuǎn)化為字符變量S,當(dāng)x為昔通有理數(shù)時(shí),將對(duì)x四舍五入之后進(jìn)行轉(zhuǎn)化;當(dāng)x為虛數(shù)時(shí),sym(f)僅對(duì)實(shí)部進(jìn)行轉(zhuǎn)化。 (2)S=num2str(x) 將普通

28、數(shù)值變量轉(zhuǎn)化為字符變量S。此命令對(duì)x的限制全部取消。§7.6 符號(hào)矩陣的運(yùn)算 幾乎所有的符號(hào)函數(shù)都涉及到符號(hào)表達(dá)式和符號(hào)矩陣,并返回一個(gè)符號(hào)表達(dá)式或符號(hào)數(shù)組(即便是看起來(lái)像數(shù)字的數(shù)據(jù),也是一個(gè)內(nèi)部用字符串表達(dá)的符號(hào)表達(dá)式,這可以運(yùn)用MATLAB的isstr函數(shù)檢驗(yàn)之)。一、四則運(yùn)算 1、使用運(yùn)算符號(hào) 符號(hào)矩陣的四則運(yùn)算可以使用數(shù)學(xué)運(yùn)算符號(hào)+、-、*、.*、/、./、.即可代表通常的加、減、乘、點(diǎn)乘、左除、左點(diǎn)除、右除以及右點(diǎn)除四則運(yùn)算。同時(shí)也可以通過(guò)單個(gè)運(yùn)算符號(hào)的復(fù)合使用來(lái)完成較為復(fù)雜的符號(hào)矩陣運(yùn)算。 例7-9example7_9.m 對(duì)兩個(gè)符號(hào)矩陣作基本四則運(yùn)算 syms a b

29、c d A=sym('a b;c d') 創(chuàng)建符號(hào)矩陣A A= a , b c , d B=sym('a+b, a-b; c+d, c-d') 創(chuàng)建符號(hào)矩陣B A+B ans= 2*a+b a 2*c+d c A-B ans= -b 2*b-a -d 2*d-c A*B ans= a*(a+b)+b*(c+d) a*(a-b)+b*(c-d) c*(a+b)+d*(c+d) c*(a-b)+d*(c-d) A.*B ans= a*(a+b) b*(a-b) c*(c+d) d*(c-d) A/B ans= 1/2*(-a*c+a*d+b*d+b*c)/(a*d-

30、b*c) l/2*(-b2-2*a*b+a2)/(a*d-b*c) 1/2*(-c2+d2+2*c*d)/(a*d-b*c) 1/2*(-a*c+a*d+b*d+b*c)/(a*d-b*c) A./B ans= a/(a+b) b/(a-b) c/(c+d) d/(c-d) A.B ans= (a+b)/a (a-b)/b (c+d)/c (c-d)/d A2 對(duì)矩陣A進(jìn)行乘方運(yùn)算 ans= a2+b*c a*b+b*d a*c+c*d b*c+d2 A.2 對(duì)符號(hào)矩陣A中的每個(gè)符號(hào)元素進(jìn)行乘方運(yùn)算 ans= a2 b2 c2 d2 A+B+A2 ans= 2*a+b+a2+b*c a+a*b

31、+b*d 2*c+d+a*c+c*d c+b*c+d2 從例7-9可看出,符號(hào)矩陣的運(yùn)算與數(shù)值矩陣一樣方便和簡(jiǎn)單,并且與通常的書寫規(guī)則相一致。 2、使用符號(hào)運(yùn)算函數(shù) (1)兩個(gè)符號(hào)矩陣的和:symadd(A,B)>>C=symadd(A,B) (2)兩個(gè)符號(hào)矩陣的差:symsub(A,B)>>C=symsub(A,B) (3)兩個(gè)符號(hào)矩陣的積:symmul(A,B)>>C=symmul(A,B) (4)兩個(gè)符號(hào)矩陣的除:symdiv(A,B)>>C=symdiv(A,B) (5)符號(hào)矩陣的求逆:inverse(A)>>C=invers

32、e(A) 【說(shuō)明】 (1)符號(hào)對(duì)象的加法和減法需要滿足:兩個(gè)符號(hào)矩陣的大小相等方可進(jìn)行加減運(yùn)算;符號(hào)矩陣可以和符號(hào)標(biāo)量進(jìn)行加減運(yùn)算,運(yùn)算按照數(shù)組運(yùn)算規(guī)則進(jìn)行; (2)兩個(gè)符號(hào)矩陣只有在內(nèi)積相等時(shí)才可以進(jìn)行乘法運(yùn)算; (3)符號(hào)的乘方運(yùn)算Sp,若S為符號(hào)表達(dá)式,p可以為符號(hào)表達(dá)式或數(shù)值表達(dá)式;若S為符號(hào)矩陣,則p必須是整數(shù)。二、符號(hào)矩陣的線性代數(shù)運(yùn)算 和數(shù)值矩陣一樣,符號(hào)矩陣也可以進(jìn)行矩陣的線性代數(shù)運(yùn)算,例如,求一個(gè)符號(hào)矩陣行列式的值、求逆、求方陣的特征值和特征向量等。 例7-10example7_10 對(duì)一個(gè)符號(hào)矩陣作線性代數(shù)運(yùn)算 format short H=hilb(2) 采用短格式輸出方

33、式,創(chuàng)建一個(gè)2×2的hilbert矩陣 H= 1.0000 0.5000 0.5000 0.3333 H=sym(H) 將數(shù)值矩陣H轉(zhuǎn)化為符號(hào)矩陣 H= 1 1/2 l/2 1/3 inv(H) 求符號(hào)矩陣H的逆矩陣 ans= 4 -6 ·-6 12 det(H) 求符號(hào)矩陣H的行列式值 ans= 1/12§7.7 可視化的符號(hào)函數(shù)分析界面 圖形化的函數(shù)計(jì)算器是MATLAB符號(hào)數(shù)學(xué)sym('arg2', unreal);工具箱所提供的第三種符號(hào)計(jì)算方法,為符號(hào)函數(shù)可視化提供更為簡(jiǎn)便易用的命令。本節(jié)著重介紹兩個(gè)進(jìn)行數(shù)學(xué)分析的可視化界面:?jiǎn)巫兞亢瘮?shù)分析

34、界面和泰勒級(jí)數(shù)逼近分析界面。圖7-5單變量函數(shù)分析窗口一、單變量函數(shù)分析界面 單變量函數(shù)分析界面用于考察兩個(gè)一元函數(shù)各自性質(zhì)及其相關(guān)關(guān)系。該函數(shù)計(jì)算器由funtool.m文件生成。在MATLAB命令窗口中鍵入下面命令即可:>>funtool表7-1 單變量函數(shù)分析窗口按鍵名稱及含義 該命令運(yùn)行后,系統(tǒng)將產(chǎn)生三個(gè)如圖7-5所示的新窗口。其中1號(hào)和2號(hào)窗口(Figure No.1,F(xiàn)igure No.2)是函數(shù)曲線窗口,3號(hào)窗口(Figure No.3)是函數(shù)運(yùn)算控制器。三個(gè)窗口中只有一個(gè)處于激活狀態(tài),可以用鼠標(biāo)單擊窗口,激活該視窗。 函數(shù)運(yùn)算控制器窗口(Figure No.3)上半部

35、分的f、g、x、a分別是Figure No.1和Figure No.2中所示曲線的一元函數(shù)f(x)、g(x)的定義式、自變量x的取值范圍和常數(shù)a的值。用戶可以自行設(shè)定這些量的值??刂拼翱诘南掳氩糠质沁\(yùn)算命令和輔助操作部分,共有四行,分別為單函數(shù)運(yùn)算、函數(shù)和常數(shù)a的運(yùn)算、兩個(gè)函數(shù)之間的運(yùn)算和輔助操作部分。各個(gè)部分的詳細(xì)含義如表7-1所示。二、泰勒級(jí)數(shù)逼近分析界面圖7-2 泰勒級(jí)數(shù)分析窗口 泰勒級(jí)數(shù)逼近分析界面,用于觀察函數(shù)f(x)在給定區(qū)間位置上的被N階泰勒多項(xiàng)式TN(x)逼近的情況。在MATLAB工作窗口中輸入命令:>>taylortool 即可產(chǎn)生如圖7-2所示泰勒級(jí)數(shù)分析窗口。

36、 函數(shù)f(x)有兩種輸入方式: (1)一開始直接由命令taylortool(fx)引入,此處fx必須足字符串表達(dá)式; (2)在泰勒級(jí)數(shù)分析窗口的f(x)欄中直接由鍵盤輸入表達(dá)式,按Enter健確認(rèn)。 N表示泰勒級(jí)數(shù)的階次,系統(tǒng)的缺省值為7,可以通過(guò)右側(cè)的按鍵改變階次,也可以通過(guò)鍵盤直接輸入。a欄表示泰勒級(jí)數(shù)的展開點(diǎn)(即在x0=a處展開),系統(tǒng)缺省設(shè)置為0?!?lt;x<”兩側(cè)為自變量x的取值范圍,缺省設(shè)置為(-2,2),用戶可以自行改變。 【注意】: 在窗口的各欄中進(jìn)行修改后,必須按Enter鍵進(jìn)行確認(rèn),方可生效。§7.9 使用MAPLE的符號(hào)資源一、MAPLE與MATLAB的

37、連接 MAPLE具有強(qiáng)大的符號(hào)計(jì)算功能和豐富的經(jīng)典應(yīng)用數(shù)學(xué)函數(shù),MATLAB的符號(hào)數(shù)學(xué)工具箱(Symbolic Math Toolbox)就是以MAPLE的內(nèi)核為“引擎”,依靠MAPLE已有的庫(kù)函數(shù)(Library)開發(fā)的。由于MAPLE資源是以庫(kù)的形式而不是以M文件的形式提供給MATLAB,因此無(wú)法在MATLAB中直接使用。為了能夠在MATLAB的工作環(huán)境中進(jìn)一步利用MAPLE的符號(hào)計(jì)算能力,MATLAB提供有專門的指令用于MATLAB和MAPLE的連接。 1、mfun 對(duì)MAPLE中的若干重要的特殊函數(shù)實(shí)施數(shù)值計(jì)算。對(duì)于MAPLE中的“完全橢圓積分”、“正弦積分”及“誤差函數(shù)”等一些重要的

38、特殊函數(shù),由于在許多的工程應(yīng)用中經(jīng)常需要計(jì)算此類函數(shù)的值,并且在符號(hào)求積和微分方程符號(hào)解中也常常要計(jì)算此類函數(shù)的值,MATLAB便將這些重要的特殊函數(shù)引入符號(hào)數(shù)學(xué)工具箱,用命令mfun實(shí)現(xiàn)。使用格式為:>>mfun('function', part1, part2, part3, part4) 該函數(shù)以數(shù)值方式計(jì)算MAPLE中特殊函數(shù)'function'的值,函數(shù)的參數(shù)由parl、par2、par3和par4指定,最多可以指定四個(gè)參數(shù)。 2、mfunlist 采用MATLAB注釋語(yǔ)句列出能被mfun計(jì)算的一些重要MAPLE函數(shù)列表; 3、mhelp

39、查閱MAPLE庫(kù)函數(shù)的聯(lián)機(jī)幫助文件,以獲取MAPLE庫(kù)函數(shù)及其調(diào)用方法; 4、maple 進(jìn)入MAPLE的工作空間,直接對(duì)訪問(wèn)MAPLE的任意函數(shù)進(jìn)行計(jì)算,并將結(jié)果返回至MATLAB工作空間。它有三種調(diào)用格式,分別為: (1)R=maple(MapleStatement) 直接運(yùn)行MAPLE格式的語(yǔ)句MapleStatement,輸出R為字符串類型; (2)R=maple(fun,arg1,arg2,) 運(yùn)行以argl等為輸入的MAPLE的fun函數(shù); (3)R,S=maple() 將MAPLE運(yùn)行結(jié)果由輸出總量返回。 5、procread 把按照MAPLE格式寫的源程序讀入MAPLE工作空間

40、。對(duì)于需要運(yùn)行由多個(gè)MAPLE指令構(gòu)成的程序時(shí),必須由proclead和maple相結(jié)合方可解決。先用maple格式寫好源程序,再用procread命令將此程序讀入MAPLE工作空間。 例7-7example7_7.m 調(diào)用MAPLE函數(shù),求解sin(x2+y2)在x=0,y=0處展開的截?cái)喟穗A小量的泰勒級(jí)數(shù)近似式。 (1)調(diào)用格式1: tl1=maple('mtaylor(sin(x2+y2), x=0,y=0,8)') tl1= mtaylor(sin(x+y), x=0,y=0,8) 直接用maple調(diào)用mtaylor函數(shù),輸出結(jié)果是輸入指令本身,說(shuō)明該調(diào)用函數(shù)還沒(méi)有被讀

41、入。此外,用戶可以從Mhelp mtaylor在線幫助中看到,運(yùn)行mtaylor之前必須先用maple('readlib(function)')命令讀入MAPLE的庫(kù)函數(shù)。 maple('readlib(mtaylor)'); tl1=maple('mtaylor(sin(x2+y2),x=0,y=0,8)') tl1= x2+y2-1/6*x6-1/2*y2*x4-1/2*y4*x2-1/6*y6 (2)調(diào)用格式2: maple('readlib(mtaylor)'); t12=maple('mtaylor',

42、'sin(x2+y2)', 'x=0,y=0', '8') tl2= x2+y2-1/6*x6-1/2*y2*x4-1/2*y4*x2-1/6*y6二、MAPLE特殊函數(shù)及其調(diào)用 為了方便用戶查閱函數(shù),MATLAB編制了一個(gè)純說(shuō)明文件mfunilst.m,用于列出MAPLE的幾十條常用的重要函數(shù)名以及簡(jiǎn)單的說(shuō)明。用戶可直接在MATLAB工作窗口中鍵入mfunlist,即可顯示出這些特殊函數(shù)及其所需參數(shù)。>> mfunlist 在屏幕上將顯示: MFUNLIST Special functions for MFUN. The follo

43、wing special functions are listed in alphabetical order according to the third column. n denotes an integer argument, x denotes a real argument, and z denotes a complex argument. For more detailed descriptions of the functions, including any argument restrictions, see the Reference Manual, or use MH

44、ELP. bernoulli n Bernoulli Numbers bernoulli n,z Bernoulli Polynomials BesselI x1,x Bessel Function of the First Kind BesselJ x1,x Bessel Function of the First Kind BesselK x1,x Bessel Function of the Second Kind BesselY x1,x Bessel Function of the Second Kind Beta z1,z2 Beta Function binomial x1,x2

45、 Binomial Coefficients LegendreKc x Complete Elliptic Integral of First Kind LegendreEc x Complete Elliptic Integral of Second Kind LegendrePic x1,x Complete Elliptic Integral of Third Kind LegendreKc1 x LegendreKc using Complementary Modulus LegendreEc1 x LegendreEc using Complementary Modulus Lege

46、ndrePic1 x1,x LegendrePic using Complementary Modulus erfc z Complementary Error Function erfc n,z Complementary Error Function's Iterated Integrals Ci z Cosine Integral dawson x Dawson's Integral Psi z Digamma Function dilog x Dilogarithm Integral erf z Error Function euler n Euler Numbers

47、euler n,z Euler Polynomials Ei x Exponential Integral Ei n,z Exponential Integral FresnelC x Fresnel Cosine Integral FresnelS x Fresnel Sine Integral GAMMA z Gamma Function harmonic n Harmonic Function Chi z Hyperbolic Cosine Integral Shi z Hyperbolic Sine Integral hypergeom X1,X2 (Generalized) Hypergeometric Function LegendreF x,x1 Incomplete Elliptic Integral of First Kind LegendreE x,x1 Incomplete Elliptic Integral of Second Kind LegendrePi x,x2,x1 Incomplete Elliptic Integral of Third Kind GAMMA z1,z2 I

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論