版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章MATLAB符號(hào)計(jì)算——符號(hào)表達(dá)式的建立01創(chuàng)建符號(hào)常量創(chuàng)建符號(hào)常量符號(hào)常量是不含變量的符號(hào)表達(dá)式,用sym函數(shù)創(chuàng)建符號(hào)常量。語法:
sym('常量') %創(chuàng)建符號(hào)常量例如,創(chuàng)建符號(hào)常量,這種用sym函數(shù)的方式可以表示絕對準(zhǔn)確的符號(hào)數(shù)值:>>a=sym('sin(2)')a=sin(2)sym函數(shù)也可以把數(shù)值轉(zhuǎn)換成為某種格式的符號(hào)常量。語法:
sym(常量,參數(shù)) %把常量按某種格式轉(zhuǎn)換為符號(hào)常量創(chuàng)建符號(hào)常量說明:參數(shù)可以選擇為'd'、'f'、'e'或'r'等格式,也可省略,其作用如表。參
數(shù)作
用d返回最接近的十進(jìn)制數(shù)(默認(rèn)位數(shù)為32位)f返回該符號(hào)值最接近的浮點(diǎn)表示r返回該符號(hào)值最接近的有理數(shù)型(為系統(tǒng)默認(rèn)方式),可表示為p/q、p*q、10^q、pi/q、2^q和sqrt(p)形式之一e返回最接近的帶有機(jī)器浮點(diǎn)誤差的有理值real限定為實(shí)型符號(hào)變量,conj(s)與s相同rational限定為有理數(shù)型integral限定為整型clear清除限定positive限定為正實(shí)型符號(hào)變量創(chuàng)建符號(hào)常量【例3.1】創(chuàng)建數(shù)值常量和符號(hào)常量。>>a1=2*sqrt(5)+pi %創(chuàng)建數(shù)值常量a1=7.6137>>a2=str2sym('2*sqrt(5)+pi') %創(chuàng)建符號(hào)常量a2=pi+2*5^(1/2)>>a3=sym(2*sqrt(5)+pi) %按最接近的有理數(shù)型表示符號(hào)常量a3=2143074082783949/281474976710656>>a4=sym(2*sqrt(5)+pi,'d') %按最接近的十進(jìn)制浮點(diǎn)數(shù)表示符號(hào)常量a4=7.613728608589372726100918953307>>a31=a3-a1 %數(shù)值常量和符號(hào)常量的計(jì)算a31=0>>a5='2*sqrt(5)+pi' %字符串常量a5='2*sqrt(5)+pi'創(chuàng)建符號(hào)常量可以通過工作區(qū)查看各變量的數(shù)據(jù)類型和存儲(chǔ)空間,工作區(qū)窗口如圖。02創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式
使用sym函數(shù)創(chuàng)建符號(hào)變量和表達(dá)式使用syms函數(shù)創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式
1.使用sym函數(shù)創(chuàng)建符號(hào)變量和表達(dá)式語法:
sym('變量',參數(shù)) %把變量定義為符號(hào)對象說明:參數(shù)用來設(shè)置限定符號(hào)變量的數(shù)學(xué)特性,可以選擇為'positive'、'real'和'clear’?!纠?.2_1】創(chuàng)建符號(hào)變量,用參數(shù)設(shè)置其特性。>>symsxyreal %創(chuàng)建實(shí)數(shù)符號(hào)變量>>z=x+i*y; %創(chuàng)建z為復(fù)數(shù)符號(hào)變量>>real(z) %復(fù)數(shù)z的實(shí)部是實(shí)數(shù)xans=x>>sym('x','clear'); %清除符號(hào)變量的實(shí)數(shù)特性>>real(z) %復(fù)數(shù)z的實(shí)部
ans=real(x)程序分析:設(shè)置x、y為實(shí)數(shù)型變量,可以確定z的實(shí)部和虛部。語法:str2sym('表達(dá)式') %創(chuàng)建符號(hào)表達(dá)式【例3.2_2】創(chuàng)建符號(hào)表達(dá)式。>>f1=str2sym('a*x^2+b*x+c')f1=a*x^2+b*x+c創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式
2.使用syms函數(shù)創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式語法:syms('arg1','arg2',…,參數(shù)) %把字符變量定義為符號(hào)變量symsarg1arg2…參數(shù) %把字符變量定義為符號(hào)變量的簡潔形式說明:syms函數(shù)用來創(chuàng)建多個(gè)符號(hào)變量,以上兩種方式創(chuàng)建的符號(hào)對象是相同的?!纠?.2_3】使用syms函數(shù)創(chuàng)建符號(hào)變量和符號(hào)表達(dá)式。>>symsabcx %創(chuàng)建多個(gè)符號(hào)變量>>f2=a*x^2+b*x+c %創(chuàng)建符號(hào)表達(dá)式
f2=a*x^2+b*x+c>>syms('a','b','c','x')>>f3=a*x^2+b*x+c; %創(chuàng)建符號(hào)表達(dá)式程序分析:程序既創(chuàng)建了符號(hào)變量a、b、c、x,又創(chuàng)建了符號(hào)表達(dá)式,f2、f3和f1符號(hào)表達(dá)式相同。03符號(hào)矩陣
符號(hào)矩陣
用sym和syms函數(shù)也可以創(chuàng)建符號(hào)矩陣。例如,使用sym函數(shù)創(chuàng)建的符號(hào)矩陣:>>A=sym('[a,b;c,d]')A=[a,b][c,d]例如,使用syms函數(shù)創(chuàng)建相同的符號(hào)矩陣:>>symsabcd>>A=[ab;cd]A=[a,b][c,d]符號(hào)矩陣
【例3.3_1】比較符號(hào)矩陣與字符串矩陣的不同。>>A=str2sym('[a,b;c,d]') %創(chuàng)建符號(hào)矩陣A=[a,b][c,d]>>B='[a,b;c,d]' %創(chuàng)建字符串矩陣B='[a,b;c,d]'>>C=[a,b;c,d] %創(chuàng)建數(shù)值矩陣函數(shù)或變量'd'無法識(shí)別。程序分析:由于數(shù)值變量a、b、c、d未事先賦值,MATLAB給出錯(cuò)誤信息。>>C=str2sym(B) %轉(zhuǎn)換為符號(hào)矩陣C=[a,b][c,d]>>whosNameSizeBytesClassAttributesA2x28symB1x918charC2x28sym符號(hào)矩陣
【例3.3_2】符號(hào)矩陣運(yùn)算。>>B1=[12;34];>>C1=A+B1C1=[a+1,b+2][c+3,d+4]>>D=A+B1*i;>>D1=conj(D) %計(jì)算共軛復(fù)數(shù)
D1=[conj(a)-1i,conj(b)-2i][conj(c)-3i,conj(d)-4i]>>b1=det(B1) %計(jì)算行列式b1=-2>>E=A==B1 %比較符號(hào)矩陣是否相等
E=[a==1,b==2][c==3,d==4]>>logical(E) %轉(zhuǎn)換成邏輯型ans=2×2logical
數(shù)組0000第3章MATLAB符號(hào)計(jì)算——符號(hào)表達(dá)式的代數(shù)運(yùn)算01符號(hào)表達(dá)式的運(yùn)算符和函數(shù)符號(hào)運(yùn)算中的運(yùn)算符函數(shù)運(yùn)算符號(hào)表達(dá)式的運(yùn)算符和函數(shù)1.符號(hào)運(yùn)算中的運(yùn)算符符號(hào)運(yùn)算中的運(yùn)算符有以下2種。(1)基本運(yùn)算符①運(yùn)算符“
”“
”“*”“\”“/”“^”分別實(shí)現(xiàn)符號(hào)矩陣的加、減、乘、左除、右除、求冪運(yùn)算。②運(yùn)算符“.*”“./”“.\”“.^”分別實(shí)現(xiàn)符號(hào)數(shù)組的乘、左除、右除、求冪,即數(shù)組間元素與元素的運(yùn)算。③運(yùn)算符“'”“.'”分別實(shí)現(xiàn)符號(hào)矩陣的共軛轉(zhuǎn)置、非共軛轉(zhuǎn)置。(2)關(guān)系運(yùn)算符①在符號(hào)對象的比較中,沒有“大于”“大于等于”“小于”“小于等于”的概念,只有是否“等于”的概念。②運(yùn)算符“==”“~=”分別對運(yùn)算符兩邊的符號(hào)對象進(jìn)行“相等”“不等”的比較。當(dāng)為“真”時(shí),比較結(jié)果用1表示;當(dāng)為“假”時(shí),比較結(jié)果則用0表示。符號(hào)表達(dá)式的運(yùn)算符和函數(shù)2.函數(shù)運(yùn)算函數(shù)運(yùn)算有以下幾種:(1)三角函數(shù)和雙曲函數(shù)。三角函數(shù)包括sin、cos、tan;雙曲函數(shù)包括sinh、cosh、tanh;三角反函數(shù)除了atan2函數(shù)僅能用于數(shù)值計(jì)算外,其余的asin、acos、atan函數(shù)在符號(hào)運(yùn)算中與數(shù)值計(jì)算的使用方法相同。(2)指數(shù)和對數(shù)函數(shù)。在符號(hào)計(jì)算中,指數(shù)函數(shù)sqrt、exp、expm的使用方法與數(shù)值計(jì)算的使用方法完全相同;對數(shù)函數(shù)在符號(hào)計(jì)算中只有自然對數(shù)log(表示ln),而沒有數(shù)值計(jì)算中的log2和log10。(3)復(fù)數(shù)函數(shù)。在符號(hào)計(jì)算中,復(fù)數(shù)的共軛conj、求實(shí)部real、求虛部imag和求模abs函數(shù)與數(shù)值計(jì)算中的使用方法相同。但要注意,在符號(hào)計(jì)算中,MATLAB沒有提供求相角的命令。(4)矩陣代數(shù)命令。在符號(hào)計(jì)算中,MATLAB提供的常用矩陣代數(shù)命令有diag、triu、tril、inv、det、rank、poly、expm和eig等,它們的用法幾乎與數(shù)值計(jì)算中的情況完全一樣。符號(hào)表達(dá)式的運(yùn)算符和函數(shù)【例3.4】求矩陣
的行列式值、非共軛轉(zhuǎn)置和特征值。>>symsa11a12a21a22>>A=[a11a12;a21a22] %創(chuàng)建符號(hào)矩陣
A=[a11,a12][a21,a22]>>det(A) %計(jì)算行列式
ans=a11*a22-a12*a21>>A.' %計(jì)算非共軛轉(zhuǎn)置
ans=[a11,a21][a12,a22]>>eig(A) %計(jì)算特征值ans=a11/2+a22/2-(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2a11/2+a22/2+(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)/2符號(hào)表達(dá)式的運(yùn)算符和函數(shù)【例3.5】符號(hào)表達(dá)式f=2x2+3x+4與g=5x+6的代數(shù)運(yùn)算。>>f=str2sym('2*x^2+3*x+4')f=2*x^2+3*x+4>>g=str2sym('5*x+6')g=5*x+6>>f+g %符號(hào)表達(dá)式相加ans=2*x^2+8*x+10 >>f*g %符號(hào)表達(dá)式相乘ans=(5*x+6)*(2*x^2+3*x+4)02符號(hào)數(shù)值任意精度控制和運(yùn)算SymbolicMathToolbox中的算術(shù)運(yùn)算方式任意精度控制SymbolicMathToolbox中的3種運(yùn)算方式的比較符號(hào)數(shù)值任意精度控制和運(yùn)算1.SymbolicMathToolbox中的算術(shù)運(yùn)算方式在SymbolicMathToolbox中有以下3種不同的算術(shù)運(yùn)算。(1)數(shù)值型:MATLAB的浮點(diǎn)運(yùn)算。(2)有理數(shù)型:精確符號(hào)運(yùn)算。(3)VPA型:任意精度運(yùn)算。2.任意精度控制任意精度的VPA型運(yùn)算可以使用digits和vpa函數(shù)來實(shí)現(xiàn)。語法:digits(n) %設(shè)定默認(rèn)的精度說明:n為所期望的有效位數(shù)。digits函數(shù)可以通過改變默認(rèn)的有效位數(shù)來改變精度,隨后,每次進(jìn)行Maple函數(shù)計(jì)算時(shí)都以新精度為準(zhǔn)。當(dāng)有效位數(shù)增加時(shí),計(jì)算時(shí)間和占用的內(nèi)存也相應(yīng)增加。Digits函數(shù)用來顯示默認(rèn)的有效位數(shù),默認(rèn)為32位。語法:S=vpa(s,n) %將s表示為n位有效位數(shù)的符號(hào)對象說明:s可以是數(shù)值對象或符號(hào)對象,但計(jì)算的結(jié)果S一定是符號(hào)對象;當(dāng)參數(shù)n省略時(shí)則以給定的digits指定精度。符號(hào)數(shù)值任意精度控制和運(yùn)算【例3.6_1】對表達(dá)式進(jìn)行任意精度控制的比較。>>a=str2sym('2*sqrt(5)+pi')a=pi+2*5^(1/2)>>digits %顯示默認(rèn)的有效位數(shù)Digits=32>>vpa(a) %用默認(rèn)的位數(shù)計(jì)算并顯示ans=7.6137286085893726312809907207421>>vpa(a,20) %按指定的精度計(jì)算并顯示ans=7.6137286085893726313>>digits(15) %改變默認(rèn)的有效位數(shù)>>vpa(a) %按digits指定的精度計(jì)算并顯示ans=7.61372860858937符號(hào)數(shù)值任意精度控制和運(yùn)算3.SymbolicMathToolbox中的3種運(yùn)算方式的比較【例3.6_2】用3種運(yùn)算方式表達(dá)式比較2/3的結(jié)果。>>a1=2/3 %數(shù)值型a1=0.6667>>a2=sym(2/3) %有理數(shù)型a2=2/3>>digitsDigits=15>>a3=vpa('2/3',32) %VPA型a3=0.66666666666666666666666666666667符號(hào)數(shù)值任意精度控制和運(yùn)算程序分析:(1)3種運(yùn)算方式中,數(shù)值型運(yùn)算的速度最快。(2)有理數(shù)型符號(hào)運(yùn)算的計(jì)算時(shí)間最長和占用內(nèi)存最大,產(chǎn)生的結(jié)果非常準(zhǔn)確。(3)VPA型的任意精度符號(hào)運(yùn)算比較靈活,可以設(shè)置任意有效精度,當(dāng)保留的有效位數(shù)增加時(shí),每次運(yùn)算的時(shí)間和使用的內(nèi)存也會(huì)相應(yīng)增加。(4)數(shù)值型變量a1結(jié)果顯示的有效位數(shù)并不是存儲(chǔ)的有效位數(shù),在本書第1章中曾介紹顯示的有效位數(shù)由“format”命令控制,如下面修改的“format”命令就改變了顯示的有效位數(shù):>>formatlong>>a1a1=0.6666666666666703符號(hào)對象與數(shù)值對象的轉(zhuǎn)換
將數(shù)值對象轉(zhuǎn)換為符號(hào)對象將符號(hào)對象轉(zhuǎn)換為數(shù)值對象符號(hào)對象與數(shù)值對象的轉(zhuǎn)換
1.將數(shù)值對象轉(zhuǎn)換為符號(hào)對象前面已經(jīng)介紹了“sym”命令可以把數(shù)值型對象轉(zhuǎn)換成有理數(shù)型符號(hào)對象,vpa函數(shù)可以將數(shù)值型對象轉(zhuǎn)換為任意精度的VPA型符號(hào)對象。2.將符號(hào)對象轉(zhuǎn)換為數(shù)值對象使用double函數(shù)可以將有理數(shù)型和VPA型符號(hào)對象轉(zhuǎn)換成數(shù)值對象。語法:
N=double(S) %將符號(hào)變量S轉(zhuǎn)換為數(shù)值變量N符號(hào)對象與數(shù)值對象的轉(zhuǎn)換
【例3.7_1】將符號(hào)變量
與數(shù)值變量進(jìn)行轉(zhuǎn)換。>>a1=str2sym('2*sqrt(5)+pi')a=pi+2*5^(1/2)>>b1=double(a1) %轉(zhuǎn)換為數(shù)值變量b1=7.6137>>a2=vpa(str2sym('2*sqrt(5)+pi'),32)a2=7.6137286085893726312809907207421>>b2=double(a2) %轉(zhuǎn)換為數(shù)值變量b2=7.6137符號(hào)對象與數(shù)值對象的轉(zhuǎn)換
【例3.7_2】由符號(hào)變量得出數(shù)值結(jié)果。>>b3=eval(a1)b3=7.6137用“whos”命令查看變量的類型,可以看到b1、b2、b3都可以轉(zhuǎn)換為雙精度型。>>whosNameSizeBytesClassAttributesa11x18syma21x18symb11x18doubleb21x18doubleb31x18double第3章MATLAB符號(hào)計(jì)算——符號(hào)表達(dá)式的操作和轉(zhuǎn)換01符號(hào)表達(dá)式中自由變量的確定
自由變量的確定原則symvar函數(shù)findsym函數(shù)符號(hào)表達(dá)式中自由變量的確定
1.自由變量的確定原則當(dāng)符號(hào)表達(dá)式中含有多于1個(gè)的符號(hào)變量時(shí),如f=ax2+bx+c和f=x2+y2,則只有1個(gè)變量是獨(dú)立變量,其余的符號(hào)變量當(dāng)作常量處理。如果不指定哪一個(gè)變量是自由變量,MATLAB將基于以下幾個(gè)原則選擇一個(gè)自由變量:(1)小寫字母i和j不能作為自由變量。(2)符號(hào)表達(dá)式中如果有多個(gè)符號(hào)變量,則按照以下順序選擇自由變量:首先選擇x作為自由變量;如果沒有x,則選擇在字母順序中最接近x的字符變量;如果與x相同距離,則在x后面的優(yōu)先。(3)大寫字母比所有小寫字母都靠后。例如:x^2+a*x+b的自由符號(hào)變量是x;a*(sin(t)+b*cos(w*t))的自由符號(hào)變量是w;a*theta的自由符號(hào)變量是theta;i+a*j的自由符號(hào)變量是a。符號(hào)表達(dá)式中自由變量的確定
2.symvar函數(shù)symvar函數(shù)用來決定表達(dá)式中的符號(hào)變量。語法:
symvar(EXPR) %確定自由符號(hào)變量symvar函數(shù)列出表達(dá)式中除i、j、pi、inf、nan、eps和函數(shù)名之外的符號(hào)變量,返回值是元胞數(shù)組?!纠?.8】得出符號(hào)表達(dá)式中的符號(hào)變量。>>f=str2sym('a*x^2+b*x+c')f=a*x^2+b*x+c>>s=symvar(f) %得出所有的符號(hào)變量s=[a,b,c,x]>>s1=symvar(f,1) %得出第1個(gè)符號(hào)變量s1=x>>symvar'cos(pi*x-beta1)'ans=2×1cell
數(shù)組{'beta1'}{'x'}符號(hào)表達(dá)式中自由變量的確定
3.findsym函數(shù)如果不確定符號(hào)表達(dá)式中的自由符號(hào)變量,則可以用findsym函數(shù)自動(dòng)確定。語法:findsym(EXPR,n)說明:EXPR可以是符號(hào)表達(dá)式或符號(hào)矩陣;n為按順序得出符號(hào)變量的個(gè)數(shù),當(dāng)n省略時(shí)則不按順序得出EXPR中所有的符號(hào)變量。>>g=str2sym('sin(z)+cos(v)');>>findsym(g,1) %得出第1個(gè)符號(hào)變量ans=z02符號(hào)表達(dá)式的化簡
符號(hào)表達(dá)式的化簡
同一個(gè)數(shù)學(xué)函數(shù)的符號(hào)表達(dá)式可以表示為3種形式,如以下的f(x)可以分別表示如下:(1)多項(xiàng)式形式的表達(dá)方式:f(x)=x3+6x2+11x
6(2)因式形式的表達(dá)方式:f(x)=(x
1)(x
2)(x
3)(3)嵌套形式的表達(dá)方式:f(x)=x(x(x
6)+11)
6【例3.9】3種形式的符號(hào)表達(dá)式的表示方式。>>f=str2sym('x^3-6*x^2+11*x-6') %多項(xiàng)式形式f=x^3-6*x^2+11*x-6>>g=str2sym('(x-1)*(x-2)*(x-3)') %因式形式g=(x-1)*(x-2)*(x-3)>>h=str2sym('x*(x*(x-6)+11)-6') %嵌套形式h=x*(x*(x-6)+11)-6符號(hào)表達(dá)式的化簡
MATLAB提供了pretty、collect、expand、horner和factor函數(shù),可以對符號(hào)表達(dá)式進(jìn)行變換,如表。函
數(shù)
名變
換
前變
換
后備
注prettyx^3
6*x^2+11*x
632x+6x+11x
6給出排版形式的輸出結(jié)果collect(x
1)*(x
2)*(x
3)x^3
6*x^2+11*x
6表示為合并同類項(xiàng)多項(xiàng)式expand(x
1)*(x
2)*(x
3)x^3
6*x^2+11*x
6表示為多項(xiàng)式形式hornerx^3
6*x^2+11*x
6x*(x*(x
6)+11)
6表示為嵌套的形式factorx^3
6*x^2+11*x
6(x
1)*(x
2)*(x
3)表示為因式的形式另外,還有對符號(hào)表達(dá)式進(jìn)行化簡的函數(shù)simplify和simple。符號(hào)表達(dá)式的化簡
simplify函數(shù)功能強(qiáng)大,利用各種形式的代數(shù)恒等式對符號(hào)表達(dá)式進(jìn)行化簡,包括求和、分解、積分、冪、三角、指數(shù)和對數(shù)函數(shù)等。【例3.10】利用三角函數(shù)簡化符號(hào)表達(dá)式cos2x
sin2x。>>y=str2sym('cos(x)^2-sin(x)^2')y=cos(x)^2-sin(x)^2>>simplify(y)ans=cos(2*x)03符號(hào)表達(dá)式的替換subexpr函數(shù)subs函數(shù)符號(hào)表達(dá)式的替換1.subexpr函數(shù)符號(hào)表達(dá)式有時(shí)因?yàn)樽颖磉_(dá)式多次出現(xiàn)而顯得煩冗,可以通過使用subexpr函數(shù)替換子表達(dá)式的方法來化簡。語法:subexpr(s,s1) %用符號(hào)變量s1置換s中的子表達(dá)式subexpr函數(shù)對子表達(dá)式是自動(dòng)尋找的,只有比較長的子表達(dá)式才被置換,比較短的子表達(dá)式,即使重復(fù)出現(xiàn)多次,也不被置換。2.subs函數(shù)subs函數(shù)可用來進(jìn)行對符號(hào)表達(dá)式中符號(hà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變量符號(hào)表達(dá)式的替換【例3.11】用subs函數(shù)對符號(hào)表達(dá)式(x+y)2+3(x+y)+5進(jìn)行替換。>>symsabcdx>>f=str2sym('(x+y)^2+3*(x+y)+5') %創(chuàng)建符號(hào)表達(dá)式f=3*x+3*y+(x+y)^2+5>>x=5;>>f1=subs(f) %用5替換xf1=3*y+(y+5)^2+20>>f2=subs(f,str2sym('x+y'),'s’) %用s替換x+yf2=s^2+3*s+5>>f3=subs(f,str2sym('x+y'),5) %用常數(shù)5替換x+yf3=45>>f4=subs(f,'x','z') %用z替換xf4=3*y+3*z+(y+z)^2+504求反函數(shù)和復(fù)合函數(shù)求反函數(shù)求復(fù)合函數(shù)求反函數(shù)和復(fù)合函數(shù)1.求反函數(shù)對于函數(shù)f(x),若存在另一個(gè)函數(shù)g(.),使得g(f(x))=x成立,則函數(shù)g(.)稱為函數(shù)f(x)的反函數(shù)。在MATLAB中,finverse函數(shù)可以求得符號(hào)函數(shù)的反函數(shù)。語法:
finverse(f,v) %對指定自變量v的函數(shù)f(v)求反函數(shù)說明:若v省略,則對默認(rèn)的自由符號(hào)變量求反函數(shù)。【例3.12_1】求tex的反函數(shù)。>>f=str2sym('t*e^x') %原函數(shù)f=e^x*t>>g=finverse(f) %對默認(rèn)自由變量求反函數(shù)g=log(x/t)/log(e)>>g=finverse(f,sym('t')) %對t求反函數(shù)g=t/e^x程序分析:如果先定義t為符號(hào)變量,則參數(shù)'t'的單引號(hào)可去掉。>>symst>>g=finverse(f,t)求反函數(shù)和復(fù)合函數(shù)2.求復(fù)合函數(shù)運(yùn)用函數(shù)compose可以求符號(hào)函數(shù)f(x)和g(y)的復(fù)合函數(shù)。語法: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))【例3.12_2】計(jì)算tex與ay2+by+c的復(fù)合函數(shù)。>>f=str2sym('t*e^x'); %創(chuàng)建符號(hào)表達(dá)式>>g=str2sym('a*y^2+b*y+c'); %創(chuàng)建符號(hào)表達(dá)式>>h1=compose(f,g) %計(jì)算f(g(x))h1=e^(a*y^2+b*y+c)*t>>h2=compose(g,f) %計(jì)算g(f(x))h2=c+a*e^(2*x)*t^2+b*e^x*t>>h3=compose(f,g,sym('z')) %計(jì)算f(g(z))h3=e^(a*z^2+b*z+c)*t語法:compose(f,g,x,z) %以x為自變量構(gòu)成復(fù)合函數(shù)f(g(z))compose(f,g,x,y,z) %以x為自變量構(gòu)成復(fù)合函數(shù)f(g(z)),并用z替換y求反函數(shù)和復(fù)合函數(shù)【例3.12_3】計(jì)算得出tex與y2的復(fù)合函數(shù)。>>f1=str2sym('t*e^x');>>g1=str2sym('y^2');>>h1=compose(f1,g1)h1=e^(y^2)*t>>h2=compose(f1,g1,sym('z')) %計(jì)算f(g(z))h2=e^(z^2)*t>>h3=compose(f1,g1,'t','y') %以t為自變量計(jì)算f(g(z))h3=e^x*y^2>>h4=compose(f1,g1,'t','y','z') %以t為自變量計(jì)算f(g(z)),并用z替換yh4=e^x*z^2>>h5=subs(h3,'y','z') %用替換的方法實(shí)現(xiàn)h5與h4有相同結(jié)果
h5=e^x*z^205符號(hào)表達(dá)式的轉(zhuǎn)換
符號(hào)表達(dá)式與多項(xiàng)式的轉(zhuǎn)換提取分子和分母符號(hào)表達(dá)式的轉(zhuǎn)換
1.符號(hào)表達(dá)式與多項(xiàng)式的轉(zhuǎn)換構(gòu)成多項(xiàng)式的符號(hào)表達(dá)式f(x)可以與多項(xiàng)式系數(shù)構(gòu)成的行向量進(jìn)行相互轉(zhuǎn)換,MATLAB提供了函數(shù)sym2poly和poly2sym用于實(shí)現(xiàn)相互轉(zhuǎn)換。(1)sym2poly函數(shù)sym2poly函數(shù)用來將構(gòu)成多項(xiàng)式的符號(hào)表達(dá)式轉(zhuǎn)換為按降冪排列的行向量?!纠?.13_1】將符號(hào)表達(dá)式2x+3x2+1轉(zhuǎn)換為行向量。>>f=str2sym('2*x+3*x^2+1')f=3*x^2+2*x+1>>sym2poly(f) %轉(zhuǎn)換為按降冪排列的行向量ans=321>>f1=str2sym('a*x^2+b*x+c')f1=a*x^2+b*x+c>>sym2poly(f1)錯(cuò)誤使用sym/sym2poly(第32行)Polynomialhasmorethanonesymbolicvariable.符號(hào)表達(dá)式的轉(zhuǎn)換
(2)poly2sym函數(shù)poly2sym函數(shù)與sym2poly函數(shù)相反,用來將按降冪排列的行向量轉(zhuǎn)換為符號(hào)表達(dá)式?!纠?.13_2】將行向量轉(zhuǎn)換為符號(hào)表達(dá)式。>>g=poly2sym([132]) %默認(rèn)x為符號(hào)變量的符號(hào)表達(dá)式g=x^2+3*x+2>>g=poly2sym([132],sym('y')) %y為符號(hào)變量的符號(hào)表達(dá)式g=y^2+3*y+2符號(hào)表達(dá)式的轉(zhuǎn)換
2.提取分子和分母如果符號(hào)表達(dá)式是1個(gè)有理分式(兩個(gè)多項(xiàng)式之比),可以利用numden函數(shù)提取分子或分母,還可以進(jìn)行通分。語法:[n,d]=numden(f)說明:n為分子;d為分母;f為有理分式。符號(hào)表達(dá)式的轉(zhuǎn)換
【例3.14】用numden函數(shù)提取符號(hào)表達(dá)式
和
的分子、分母。>>f1=str2sym('1/(s^2+3*s+2)')f1=1/(s^2+3*s+2)>>f2=str2sym('1/s^2+3*s+2')f2=3*s+1/s^2+2>>[n1,d1]=numden(f1)n1=1d1=s^2+3*s+2>>[n2,d2]=numden(f2)n2=3*s^3+2*s^2+1d2=s^2第3章MATLAB符號(hào)計(jì)算——符號(hào)極限、微積分和級(jí)數(shù)求和01符號(hào)極限符號(hào)極限假定符號(hào)表達(dá)式的極限存在,SymbolicMathToolbox提供了直接求表達(dá)式極限的函數(shù)limit。函數(shù)limit的基本用法如表。表
達(dá)
式函數(shù)格式說
明limt(f)對x求趨近于0的極限
limt(f,x,a)對x求趨近于a的極限,當(dāng)左、右極限不相等時(shí)極限不存在limt(f,x,a,‘left’)對x求左趨近于a的極限
limt(f,x,a,‘right’)對x求右趨近于a的極限符號(hào)極限【例3.15_1】分別求1/x在0處從兩邊趨近、從左邊趨近和從右邊趨近的3個(gè)極限值。>>f=str2sym('1/x')f=1/x>>limit(f) %對x求趨近于0的極限ans=NaN>>limit(f,'x',0) %對x求趨近于0的極限ans=NaN>>limit(f,'x',0,'left') %左趨近于0ans=
Inf>>limit(f,'x',0,'right') %右趨近于0ans=Inf符號(hào)極限程序分析:當(dāng)左、右極限不相等時(shí),表達(dá)式的極限不存在,為NaN。采用極限方法也可以求函數(shù)的導(dǎo)數(shù):
?!纠?.15_2】求函數(shù)cos(x)的導(dǎo)數(shù)。>>symstx>>limit((cos(x+t)-cos(x))/t,t,0)ans=
sin(x)02符號(hào)微分
符號(hào)微分
函數(shù)diff用來求符號(hào)表達(dá)式的微分。語法:diff(f) %求f對自由變量的一階微分diff(f,t) %求f對符號(hào)變量t的一階微分diff(f,n) %求f對自由變量的n階微分diff(f,t,n) %求f對符號(hào)變量t的n階微分【例3.16_1】已知f(x)=ax2+bx+c,求f(x)的微分。>>f=str2sym('a*x^2+b*x+c')f=a*x^2+b*x+c>>diff(f)
%對默認(rèn)自由變量x求一階微分ans=b+2*a*x>>diff(f,'a') %對符號(hào)變量a求一階微分ans=x^2>>diff(f,'x',2) %對符號(hào)變量x求二階微分ans=2*a>>diff(f,3)
%對默認(rèn)自由變量x求三階微分ans=0符號(hào)微分
【例3.16_2】對符號(hào)矩陣
求微分。>>symstx>>g=[2*xt^2;t*sin(x)exp(x)] %創(chuàng)建符號(hào)矩陣g=[2*x,t^2][t*sin(x),exp(x)]>>diff(g) %對默認(rèn)自由變量x求一階微分ans=[2,0][t*cos(x),exp(x)]>>diff(g,'t') %對符號(hào)變量t求一階微分ans=[0,2*t][sin(x),0]>>diff(g,2) %對默認(rèn)自由變量x求二階微分ans=[0,0][
t*sin(x),exp(x)]符號(hào)微分
【例3.16_3】使用diff計(jì)算向量間元素的差值。>>x1=0:0.5:2;>>y1=sin(x1)y1=00.47940.84150.99750.9093>>diff(y1) %計(jì)算元素差ans=0.47940.36200.1560
0.0882程序分析:計(jì)算出的差值比原來的向量少1列。03符號(hào)積分
符號(hào)積分
積分分為定積分和不定積分。運(yùn)用函數(shù)int可以求得符號(hào)表達(dá)式的積分,即找出一個(gè)符號(hào)表達(dá)式F,使得diff(F)=f,也可以說是求微分的逆運(yùn)算。語法: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)變量,若t省略則為默認(rèn)自由變量;a和b為數(shù)值,[a,b]為積分區(qū)間;m和n為符號(hào)對象,[m,n]為積分區(qū)間。與符號(hào)微分相比,符號(hào)積分復(fù)雜得多。函數(shù)的積分有時(shí)可能不存在,即使存在,也可能因?yàn)橄抻诤芏鄺l件,MATLAB無法順利得出。當(dāng)MATLAB不能找到積分時(shí),它將給出警告提示并返回該函數(shù)的原表達(dá)式。符號(hào)積分
【例3.17_1】求
和
的積分。>>f=str2sym('cos(x)');>>int(f) %求不定積分ans=sin(x)>>int(f,0,pi/3) %求定積分ans=3^(1/2)/2>>int(f,'a','b') %求定積分ans=sin(b)
sin(a)>>int(int(f)) %求多重積分ans=
cos(x)diff和int函數(shù)也可以直接對字符串f進(jìn)行運(yùn)算。>>f='cos(x)';和符號(hào)微分diff一樣,對符號(hào)矩陣的積分也是將各個(gè)元素逐個(gè)進(jìn)行積分。符號(hào)積分
【例3.17_2】求符號(hào)矩陣
的積分。>>symstx>>g=[2*xt^2;t*sin(x)exp(x)] %創(chuàng)建符號(hào)矩陣g=[2*x,t^2][t*sin(x),exp(x)]>>int(g) %對x求不定積分ans=[x^2,t^2*x][
t*cos(x),exp(x)]>>int(g,'t') %對t求不定積分ans=[2*t*x,t^3/3][(t^2*sin(x))/2,t*exp(x)]>>int(g,sym('a'),sym('b')) %對x求定積分ans=[b^2-a^2,-t^2*(a-b)][t*(cos(a)-cos(b)),exp(b)-exp(a)]04符號(hào)級(jí)數(shù)
symsum函數(shù)taylor函數(shù)符號(hào)級(jí)數(shù)
1.symsum函數(shù)語法:symsum(s,x,a,b) %計(jì)算表達(dá)式s的級(jí)數(shù)和說明:x為自變量,若x省略則默認(rèn)為對自由變量求和;s為符號(hào)表達(dá)式;[a,b]為參數(shù)x的取值范圍?!纠?.18_1】求級(jí)數(shù)
和1+x+x2+…+xk+…的和。>>symsxk>>s1=symsum(1/k^2,1,10) %計(jì)算級(jí)數(shù)的前10項(xiàng)和s1=1968329/1270080>>s2=symsum(1/k^2,1,inf) %計(jì)算級(jí)數(shù)和s2=pi^2/6>>s3=symsum(x^k,sym('k'),0,inf) %計(jì)算對k為自變量的級(jí)數(shù)和s3=piecewise(1<=x,Inf,abs(x)<1,-1/(x-1))符號(hào)級(jí)數(shù)
2.taylor函數(shù)泰勒級(jí)數(shù)的計(jì)算使用taylor函數(shù)。語法:taylor(f,x,x0) %求泰勒級(jí)數(shù)以符號(hào)變量x在x0點(diǎn)展開taylor(f,x,’Order’,n) %求泰勒級(jí)數(shù)以符號(hào)變量x展開n階說明:f為符號(hào)表達(dá)式;x為符號(hào)變量,可省略,省略時(shí)使用默認(rèn)自由變量;n是指f進(jìn)行泰勒級(jí)數(shù)展開的階次,默認(rèn)展開前5項(xiàng);x0是泰勒級(jí)數(shù)的展開點(diǎn)?!纠?.18_2】求ex的泰勒展開式為:
。>>symsx>>s1=taylor(exp(x),x,0,'Order',8) %展開前8項(xiàng)s1=x^7/5040+x^6/720+x^5/120+x^4/24+x^3/6+x^2/2+x+1>>s2=taylor(exp(x),x,0) %默認(rèn)展開前5項(xiàng)s2=x^5/120+x^4/24+x^3/6+x^2/2+x+1符號(hào)級(jí)數(shù)
泰勒級(jí)數(shù)還可以使用可視化的泰勒級(jí)數(shù)計(jì)算器,在命令窗口中輸入命令“taylortool”,就會(huì)出現(xiàn)泰勒級(jí)數(shù)計(jì)算器窗口,如圖。第3章MATLAB符號(hào)計(jì)算——符號(hào)積分變換01傅里葉變換及其反變換
傅里葉變換傅里葉反變換傅里葉變換及其反變換
時(shí)域中的f(t)與頻域中的傅里葉變換F(
)之間的關(guān)系如下:1.傅里葉變換語法:
F=fourier(f,t,
) %求時(shí)域函數(shù)f(t)的傅里葉變換F說明:返回結(jié)果F是符號(hào)變量
的函數(shù),若參數(shù)
省略,則默認(rèn)返回結(jié)果為
的函數(shù);f為t的函數(shù),若參數(shù)t省略,則默認(rèn)自由變量為x。傅里葉變換及其反變換
2.傅里葉反變換語法:f=ifourier(F,
,t) %求頻域函數(shù)F的傅里葉反變換f(t)說明:ifourier函數(shù)的用法與fourier函數(shù)相同?!纠?.19_1】計(jì)算f(t)=的傅里葉變換F及F的傅里葉反變換。>>symstw>>F=fourier(1/t,t,w) %傅里葉變換
F=-pi*sign(w)*1i>>f=ifourier(F,t) %傅里葉反變換
f=1/t>>f=ifourier(F) %傅里葉反變換默認(rèn)x為自變量
f=1/x【例3.19_2】單位階躍函數(shù)的傅里葉變換。>>fourier(sym('1'))ans=2*pi*dirac(w)02拉普拉斯變換及其反變換
拉普拉斯變換拉普拉斯反變換拉普拉斯變換及其反變換
拉普拉斯變換和反變換的定義為:與傅里葉變換相同,拉普拉斯變換和反變換可以利用積分函數(shù)int實(shí)現(xiàn),也可以直接使用laplace和ilaplace函數(shù)實(shí)現(xiàn)。拉普拉斯變換及其反變換
1.拉普拉斯變換語法:F=laplace(f,t,s) %求時(shí)域函數(shù)f的拉普拉斯變換F說明:返回結(jié)果F為s的函數(shù),若參數(shù)s省略,則返回結(jié)果F默認(rèn)為s的函數(shù);f為t的函數(shù),若參數(shù)t省略,則默認(rèn)自由變量為t。【例3.20】求sin(at)和階躍函數(shù)的拉普拉斯變換。>>symsats>>F1=laplace(sin(a*t),t,s) %求sin(at)的拉普拉斯變換
F1=a/(a^2+s^2)>>F2=laplace(sym(1)) %求階躍函數(shù)的拉普拉斯變換
F2=1/s拉普拉斯變換及其反變換
2.拉普拉斯反變換語法:f=ilaplace(F,s,t) %求F的拉普拉斯反變換f【例3.21】輸入信號(hào)r(t)=1,系統(tǒng)傳遞函數(shù)
,C(s)=R(s)*G(s),求輸出波形c(t),輸出波形如圖。拉普拉斯變換及其反變換
首先計(jì)算C(s),然后經(jīng)過拉普拉斯反變換得出輸出c(t)。>>symstsyGRc;>>R=laplace(sym(1)) %寫出r(t)拉普拉斯變換
R=1/s>>G=1/(s+1)+2/(s+3);>>C=R*G;>>c=ilaplace(C) %拉普拉斯反變換得出c(t)的表達(dá)式
c=5/3-(2*exp(-3*t))/3-exp(-t)>>t=1:0.1:10;>>y=subs(c,t); %得出t對應(yīng)的y值>>plot(t,y)03Z變換及其反變換
ztrans函數(shù)iztrans函數(shù)Z變換及其反變換
一個(gè)離散信號(hào)的Z變換和Z反變換的定義為:1.ztrans函數(shù)語法:F=ztrans(f,n,z) %求時(shí)域序列f的Z變換F說明:返回結(jié)果F以符號(hào)變量z為自變量;若參數(shù)n省略,則默認(rèn)自變量為n;若參數(shù)z省略,則返回結(jié)果默認(rèn)為z的函數(shù)?!纠?.22_1】求階躍函數(shù)、脈沖函數(shù)和e
at的Z變換。>>symsanzt>>Fz1=ztrans(sym('1'),n,z) %求階躍函數(shù)的Z變換Fz1=z/(z-1)>>Fz2=ztrans(str2sym('a^n'),n,z)Fz2=-z/(a-z)>>Fz3=ztrans(exp(-a*t),n,z) %求e
at的Z變換Fz3=(z*exp(-a*t))/(z-1)Z變換及其反變換
2.iztrans函數(shù)語法:f=iztrans(F,z,n) %求F的Z反變換f【例3.22_2】用Z反變換驗(yàn)算階躍函數(shù)、和e-at的Z變換。>>symsnzt>>f1=iztrans(Fz1,z,n)f1=1>>f2=iztrans(2*z/(z-2)^2)f2=2^n+2^n*(n-1)>>f3=iztrans(Fz3,z,n)f3=exp(-a*t)*kroneckerDelta(n,0)-exp(-a*t)*(kroneckerDelta(n,0)-1)第3章MATLAB符號(hào)計(jì)算——符號(hào)方程的求解01代數(shù)方程
代數(shù)方程
代數(shù)方程包括線性(Linear)方程、非線性(Nonlinear)方程和超越方程(Transcedentalequation)。當(dāng)方程不存在解析解又無其他自由參數(shù)時(shí),MATLAB可以用solve函數(shù)給出方程的數(shù)值解。語法:solve('eq','v') %求方程關(guān)于指定變量的解solve('eq1','eq2','v1','v2',…) %求方程組關(guān)于指定變量的解說明:eq可以是含等號(hào)的符號(hào)表達(dá)式的方程,也可以是不含等號(hào)的符號(hào)表達(dá)式,但所指的仍是令eq=0的方程;若參數(shù)v省略,則默認(rèn)為方程中的自由變量;輸出結(jié)果為結(jié)構(gòu)數(shù)組類型。代數(shù)方程【例3.23】求方程ax2+bx+c=0和sinx=0的解。>>f1=str2sym('a*x^2+b*x+c') %無等號(hào)f1=a*x^2+b*x+c>>solve(f1) %求方程的解xans=-(b+(b^2-4*a*c)^(1/2))/(2*a)-(b-(b^2-4*a*c)^(1/2))/(2*a)>>f2=str2sym('sin(x)')f2=sin(x)>>solve(f2,sym('x'))ans=0程序分析:當(dāng)sin(x)=0有多個(gè)解時(shí),只能得出0附近的有限幾個(gè)解。代數(shù)方程【例3.24】求三元非線性方程組
的解。>>eq1=str2sym('x^2+2*x+1');>>eq2=str2sym('x+3*z=4');>>eq3=str2sym('y*z=-1');>>[x,y,z]=solve(eq1,eq2,eq3) %解方程組并賦值給x、y、zx=-1y=
3/5z=5/3程序分析:輸出結(jié)果為結(jié)構(gòu)對象。如果最后一句為“S=solve(eq1,eq2,eq3)”,則結(jié)果如下。S=x:[1x1sym]y:[1x1sym]z:[1x1sym]02符號(hào)常微分方程
符號(hào)常微分方程
MATLAB提供了dsolve函數(shù),可以用于對符號(hào)常微分方程進(jìn)行求解。語法:dsolve('eq','con','v') %求解微分方程dsolve('eq1,eq2,…','con1,con2,…','v1,v2…') %求解微分方程組說明:eq為微分方程;con是微分初始條件,可省略;v為指定自由變量,若省略則默認(rèn)為x或t為自由變量;輸出結(jié)果為結(jié)構(gòu)數(shù)組類型。(1)當(dāng)y是因變量時(shí),微分方程eq的表述規(guī)定為:y的一階導(dǎo)數(shù)或表示為Dy;y的n階導(dǎo)數(shù)或表示為Dny。符號(hào)常微分方程
(2)微分初始條件con應(yīng)寫成'y(a)=b,Dy(c)=d'的格式;當(dāng)初始條件少于微分方程數(shù)時(shí),在所得解中將出現(xiàn)任意常數(shù)符C1、C2……解中任意常數(shù)符的數(shù)目等于所缺少的初始條件數(shù)?!纠?.25】求微分方程
,y(1)=0,y(0)=0的解。>>y=dsolve('x*D2y-3*Dy=x^2','x') %求微分方程的通解y=C2*x^4-x^3/3+C1>>y=dsolve('x*D2y-3*Dy=x^2','y(1)=0,y(0)=0','x') %求微分方程的特解y=x^4/3-x^3/3符號(hào)常微分方程
【例3.26】求微分方程組
的解。>>[x,y]=dsolve('Dx=y,Dy=-x')x=C1*cos(t)+C2*sin(t)y=程序分析:默認(rèn)的自由變量是t,C1、C2為任意常數(shù),程序也可指定自由變量,結(jié)果相同。>>[x,y]=dsolve('Dx=y,Dy=-x','t')第3章MATLAB符號(hào)計(jì)算——符號(hào)函數(shù)的可視化01符號(hào)函數(shù)的繪圖命令
ezplot和ezplot3命令其他繪圖命令符號(hào)函數(shù)的繪圖命令
符號(hào)函數(shù)的繪圖命令
>>symsx;>>x1=dsolve('D2x+0.25*x=0','x(0)=1','Dx(0)=0') %初始值為1x1=cos(t/2)>>dx1=diff(x1)dx1=-sin(t/2)/2>>ezplot(x1,dx1,[-100,100]);holdon %繪制相平面圖>>x2=dsolve('D2x+0.25*x=0','x(0)=2','Dx(0)=0'); %初始值為2>>dx2=diff(x2);>>ezplot(x2,dx2,[-100,100]);>>x3=dsolve('D2x+0.25*x=0','x(0)=3','Dx(0)=0'); %初始值為3>>dx3=diff(x3);>>ezplot(x3,dx3,[-100,100]);語法:ezplot3(x,y,z,[tmin,tmax],'animate') %繪制三維曲線說明:x、y、z分別為符號(hào)表達(dá)式x(t)、y(t)和z(t);[tmin,tmax]為t的范圍,可省略;animate用來設(shè)置動(dòng)畫的繪制曲線過程,可省略。符號(hào)函數(shù)的繪圖命令
【例3.28】用ezplot3繪制三維符號(hào)表達(dá)式曲線。>>x=str2sym('sin(t)');>>z=sym('t');>>y=str2sym('cos(t)');>>ezplot3(x,y,z,[0,10*pi],'animate')%繪制t在[0,10*pi]范圍的三維曲線繪制的曲線如圖。符號(hào)函數(shù)的繪圖命令
2.其他繪圖命令MATLAB提供的較常用繪圖命令如表。命
令
名含
義舉
例ezcontour畫等高線ezcontour('x*sin(t)',[
4,4])ezcontourf畫帶填充顏色的等高線ezcontourf('x*sin(t)',[
4,4])ezmesh畫三維網(wǎng)線圖ezmesh('sin(x)*exp(
t)','cos(x)*exp(
t)','x',[0,2*pi])ezmeshc畫帶等高線的三維網(wǎng)線圖ezmeshc('sin(x)*t',[
pi,pi])ezpolar畫極坐標(biāo)圖ezpolar('sin(t)',[0,pi/2])ezsurf畫三維曲面圖ezsurf('x*sin(t)','x*cos(t)','t',[0,10*pi])ezsurfc畫帶等高線的三維曲面圖ezsurfc('x*sin(t)','x*cos(t)','t',[0,pi,0,2*pi])02圖形化的符號(hào)函數(shù)計(jì)算器
圖形化的符號(hào)函數(shù)計(jì)算器
SymbolicMathToolbox還提供了另一種符號(hào)計(jì)算方式,即圖形化的符號(hào)函數(shù)計(jì)算器,由funtool.m文件生成。在MATLAB命令窗口輸入命令“funtool”,就會(huì)出現(xiàn)該圖形化函數(shù)計(jì)算器,如圖。第4章MATLAB計(jì)算的可視化和GUI設(shè)計(jì)——二維曲線的繪制二維曲線的繪制MATLAB的二維曲線功能非常強(qiáng)大,在MATLAB的主界面中專門有“繪圖”面板,主要包括線型圖、柱狀圖、面積圖、方向圖、極坐標(biāo)圖和散點(diǎn)圖等,單擊下拉箭頭可見到如圖所示的二維圖類型。01基本繪圖函數(shù)用plot(x)繪制x向量曲線用plot(x,y)函數(shù)繪制向量x和y的曲線用plot(x)函數(shù)繪制矩陣x的曲線用plot(x,y)函數(shù)繪制混合式曲線用plot(z)函數(shù)繪制復(fù)向量曲線用plot(x1,y1,x2,y2,…)函數(shù)繪制多條曲線基本繪圖函數(shù)plot是MATLAB中最簡單而且使用最廣泛的1個(gè)繪圖函數(shù),用來繪制二維曲線。
語法:plot(x) %繪制以x為縱坐標(biāo)的二維曲線plot(x,y) %繪制以x為橫坐標(biāo),y為縱坐標(biāo)的二維曲線說明:x和y可以是向量或矩陣。1.用plot(x)繪制x向量曲線若x是長度為n的數(shù)值向量,則坐標(biāo)系的縱坐標(biāo)為向量x,橫坐標(biāo)為MATLAB系統(tǒng)根據(jù)x向量的元素序號(hào)自動(dòng)生成的從1開始的向量。plot(x)函數(shù)用于坐標(biāo)系中順序地用直線段連接各點(diǎn),生成1條折線,當(dāng)向量的元素充分多時(shí),可以得到1條光滑的曲線?!纠?.1】
用plot(x)函數(shù)畫直線。>>x1=[123]x1=123>>plot(x1)>>x2=[010]x2=010>>plot(x2)基本繪圖函數(shù)畫出的直線如圖。
(a)x1曲線
(b)x2曲線基本繪圖函數(shù)2.用plot(x,y)函數(shù)繪制向量x和y的曲線若參數(shù)x和y都是長度為n的向量,則x、y的長度必須相等,用plot(x,y)函數(shù)繪制縱坐標(biāo)為向量y、橫坐標(biāo)為向量x的曲線?!纠?.2】
繪制正弦曲線y=sin(x)和方波曲線。>>x1=0:0.1:2*pi;>>y1=sin(x1); %y1為x1的正弦函數(shù)>>plot(x1,y1)>>x2=[011223];>>y2=[110011];>>plot(x2,y2)>>axis([0402]) %將坐標(biāo)軸范圍設(shè)定為0~4和0~2基本繪圖函數(shù)繪制效果如圖。
(a)正弦曲線
(b)方波曲線基本繪圖函數(shù)3.用plot(x)函數(shù)繪制矩陣x的曲線若x是1個(gè)m
n的矩陣,則plot(x)函數(shù)為矩陣的每一列畫出1條線,共n條曲線,各曲線自動(dòng)地用不同顏色表示;每條線的橫坐標(biāo)為向量1:m,m是矩陣的行數(shù),繪制方法與向量相同?!纠?.3】
矩陣圖形的繪制。>>x1=[123;456];>>plot(x1)>>x2=peaks; %產(chǎn)生1個(gè)49×49的矩陣>>plot(x2)基本繪圖函數(shù)繪制效果如圖。
(a)x1曲線
(b)x2曲線基本繪圖函數(shù)4.用plot(x,y)函數(shù)繪制混合式曲線當(dāng)plot(x,y)函數(shù)中的參數(shù)x和y是向量或矩陣時(shí),分別有以下幾種情況:(1)如果x是向量,而y是矩陣,則x的長度與矩陣y的行數(shù)或列數(shù)必須相等。如果x的長度與y的行數(shù)相等,則向量x與矩陣y的每列向量對應(yīng)畫1條曲線;如果x的長度與y的列數(shù)相等,向量x與y的每行向量畫1條曲線;如果y是方陣,則x和y的行數(shù)和列數(shù)都相等,將向量x與矩陣y的每列向量畫1條曲線。(2)如果x是矩陣,而y是向量,則y的長度必須等于x的行數(shù)或列數(shù),繪制的方法與前一種相似。(3)如果x和y都是矩陣,則大小必須相同,將矩陣x的每列和y的每列畫1條曲線?;纠L圖函數(shù)【例4.4_1】
混合式圖形的繪制,如圖。
(a)(x1,y1)曲線
(b)(y2,x1)曲線(c)(x2,y1)曲線基本繪圖函數(shù)>>x1=[123];>>y1=[123;456]y1=123456>>plot(x1,y1) %x1和y1的列數(shù)個(gè)數(shù)相同,x1為橫坐標(biāo),y1每行為縱坐標(biāo)>>y2=y1'y2=142536>>plot(y2,x1) %y2是矩陣,x1是向量,y2每列為橫坐標(biāo),x1為縱坐標(biāo)>>x2=[111;222]x2=111222>>plot(x2,y1) %x2和y1都是矩陣,x2每列為橫坐標(biāo),y1每列為縱坐標(biāo)基本繪圖函數(shù)5.用plot(z)函數(shù)繪制復(fù)向量曲線plot(z)中的參數(shù)z為復(fù)向量時(shí),plot(z)和plot(real(z),imag(z))是等效的,以實(shí)部作為橫坐標(biāo),以虛部作為縱坐標(biāo)。【例4.4_2】
以下程序畫出如圖所示的曲線。>>z1=x2+i*y1z1=1.0000+1.0000i1.0000+2.0000i1.0000+3.0000i2.0000+4.0000i2.0000+5.0000i2.0000+6.0000i>>plot(z1) %以實(shí)部作為橫坐標(biāo),以虛部作為縱坐標(biāo)基本繪圖函數(shù)6.用plot(x1,y1,x2,y2,…)函數(shù)繪制多條曲線plot函數(shù)還可以同時(shí)繪制多條曲線,用多個(gè)矩陣對作為參數(shù),MATLAB自動(dòng)以不同的顏色繪制不同曲線。每一對矩陣(xi,yi)均按照前面的方式解釋,不同的矩陣對之間,其維數(shù)可以不同?!纠?.5】
繪制3條曲線,如圖。>>x=0:pi/100:2*pi;>>y1=sin(x);>>y2=sin(x+.5);>>y3=sin(x+1);>>plot(x,y1,x,y2,x,y3); %畫3條曲線02繪制曲線的一般步驟繪制曲線的一般步驟在MATLAB中,無論是繪制二維還是三維圖形,如果要畫出相當(dāng)滿意的彩色圖形,就要對圖形進(jìn)行各種修飾,如表所示為繪制二維、三維圖形一般步驟的歸納。步
驟內(nèi)
容1曲線數(shù)據(jù)準(zhǔn)備:對于二維曲線,準(zhǔn)備橫坐標(biāo)和縱坐標(biāo)數(shù)據(jù)變量;對于三維曲面,準(zhǔn)備矩陣參變量和對應(yīng)的函數(shù)值2指定圖形窗口和子圖位置:默認(rèn)時(shí),打開Figure1窗口或當(dāng)前窗口、當(dāng)前子圖;也可以打開指定的圖形窗口和子圖3設(shè)置曲線的繪制方式:線型、色彩、數(shù)據(jù)點(diǎn)形4設(shè)置坐標(biāo)軸:坐標(biāo)的范圍、刻度和坐標(biāo)分格5圖形注釋:圖名、坐標(biāo)名、圖例、文字說明6著色、明暗、燈光、材質(zhì)處理(僅對三維圖形使用)7視點(diǎn)、三度(橫、縱、高)比(僅對三維圖形使用)8圖形的精細(xì)修飾(圖形句柄操作):利用對象屬性值進(jìn)行設(shè)置;利用圖形窗口工具條進(jìn)行設(shè)置03多個(gè)圖形繪制的方法
指定圖形窗口同一窗口多個(gè)子圖同一窗口多次疊繪雙縱坐標(biāo)圖多個(gè)圖形繪制的方法
1.指定圖形窗口本書4.1.1小節(jié)中介紹的plot函數(shù)都是在默認(rèn)的“Figure1”窗口中繪制圖形的,當(dāng)?shù)?次使用plot函數(shù)時(shí),就將第1次繪制的圖形覆蓋了。因此,如果需要同時(shí)打開多個(gè)圖形窗口時(shí),可以使用figure語句。語法:figure(n) %產(chǎn)生新圖形窗口說明:如果該窗口不存在,則產(chǎn)生新圖形窗口并設(shè)置為當(dāng)前圖形窗口,該窗口名為“Figuren”,而不關(guān)閉其他窗口。例如,可以使用“figure(1)”“figure(2)”等語句同時(shí)打開多個(gè)圖形窗口。2.同一窗口多個(gè)子圖如果需要在同一圖形窗口中布置幾幅獨(dú)立的子圖,則可以在plot函數(shù)前加上subplot函數(shù),以便將1個(gè)圖形窗口劃分為多個(gè)區(qū)域,每個(gè)區(qū)域1幅子圖。語法:subplot(m,n,k) %使m
n幅子圖中的第k幅成為當(dāng)前圖說明:將圖形窗口劃分為m
n幅子圖,k是當(dāng)前子圖的編號(hào),“,”可以省略。子圖的序號(hào)編排原則是:左上方為第1幅,先向右、后向下依次排列,子圖彼此之間獨(dú)立。多個(gè)圖形繪制的方法
【例4.6】
用subplot函數(shù)畫4個(gè)子圖,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代科技在中藥植物油提取中的綠色環(huán)保策略
- 生活用紙?jiān)O(shè)計(jì)新趨勢創(chuàng)新驅(qū)動(dòng)的消費(fèi)者體驗(yàn)升級(jí)
- 生態(tài)保護(hù)與零碳公園規(guī)劃的融合實(shí)踐
- 國慶節(jié)活動(dòng)方案活動(dòng)內(nèi)容
- 現(xiàn)代服務(wù)業(yè)的綠色發(fā)展路徑探索
- 小學(xué)勞動(dòng)教育考核方案
- 2024年五年級(jí)英語下冊 Unit 7 Chinese festivals第6課時(shí)說課稿 譯林牛津版
- 2024年秋七年級(jí)歷史上冊 第14課 溝通中外文明的“絲綢之路”說課稿 新人教版
- Unit 3 My friends Read and write(說課稿)-2024-2025學(xué)年人教PEP版英語四年級(jí)上冊
- 3 我不拖拉 第一課時(shí)(說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治一年級(jí)下冊
- 房地產(chǎn)工程管理 -中建八局機(jī)電工程質(zhì)量通病治理辦法
- GB/T 6403.4-2008零件倒圓與倒角
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 企業(yè)合規(guī)管理-課件
- 火電廠安全工作規(guī)程
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 電力業(yè)務(wù)許可證豁免證明
- 特發(fā)性肺纖維化IPF
- FIDIC國際合同條款中英文對照.doc
- 建筑工程資料歸檔立卷分類表(全)
- 個(gè)人勞動(dòng)仲裁申請書
評(píng)論
0/150
提交評(píng)論