第4章Matlab的其他函數(shù)庫課件_第1頁
第4章Matlab的其他函數(shù)庫課件_第2頁
第4章Matlab的其他函數(shù)庫課件_第3頁
第4章Matlab的其他函數(shù)庫課件_第4頁
第4章Matlab的其他函數(shù)庫課件_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1節(jié)數(shù)據(jù)分析數(shù)據(jù)庫

4.1.1基本的數(shù)據(jù)分析基本數(shù)據(jù)處理功能是按列進(jìn)行,行向則表示數(shù)據(jù)的不同的樣本。P63表例data=[154498367;158998175;1551006886;145637596;145637596;...141556575;155566485;147898777;1479654100;145607667]std(標(biāo)準(zhǔn)差)指各列中N個元素與該列平均值的平方和開方trapz(求積分)梯形法求積分近似求元素和4.1.2用于場論的數(shù)據(jù)分析cradient求二維場和三維場的近似梯度del2求二維場和三維場的拉普拉斯算子cross兩個相量的矢量積(叉乘)cot兩個相量的數(shù)量積(點(diǎn)乘)4.1.3用于隨機(jī)數(shù)據(jù)分析的函數(shù)rand(m,n)產(chǎn)生在0和1之間的m行n列的隨機(jī)數(shù)矩陣randn(m,n)產(chǎn)生正態(tài)分布的m行n列隨機(jī)數(shù)矩陣x=rand(1,1000);hist(x)y=randn(1,1000);hist(y,50)4.1.4用于相關(guān)分析和傅立葉分析的函數(shù)用于信號的時域分析和頻域處理。corrcoef給出兩個同長信號的相關(guān)系數(shù)cov(x,y)給出協(xié)方差矩陣conv(x,y)給出x,y的卷積Filter(b,a,y)根據(jù)輸入信號x和線性系統(tǒng)求輸出信號的函數(shù)X=fft(x,N)求出時域信號x的離散傅立葉變換Xt=0:.001:3;u=sin(300*t)+2*cos(200*t);U=fft(u);plot(abs(U))第2節(jié)矩陣的分解與變換(matfun函數(shù)庫)

4.2.1線性方程組的系數(shù)矩陣det(a)求方陣a的行列式rank(a)秩trace(a)矩陣主對角線上元素的和(跡)inv(a)逆陣pinv(a)4.2.2矩陣的分解p68正交分解(qr分解)[q,r]=qr(b)奇異值分解(svd分解)[u,s,v]=svd(b)4.2.3矩陣的特征值分析[e,r]=eig(a)4.2.4特殊矩陣庫specmat常用的矩陣函數(shù)函數(shù)功能det計(jì)算矩陣所對應(yīng)的行列式值inv求矩陣的逆矩陣rank求矩陣的秩eig求特征值和特征向量orth正交化poly求特征多項(xiàng)式lu用高斯消元法所得的系數(shù)矩陣qr正交三角矩陣分解第3節(jié)多項(xiàng)式函數(shù)庫(polyfun)一元高次代數(shù)多項(xiàng)式Matlab中的表示方法a=[a(1),a(2),…,a(n),a(n+1)]冪次隱含在系數(shù)元素離向量右端的元素間隔中例:a(x)=3x3+2x+1則a=[3,0,2,1]4.3.1多項(xiàng)式簡介多項(xiàng)式是形如下式的式子:P(x)=a0xn+a1xn-1+…+an-1x+an在MATLAB中,多項(xiàng)式用行向量表示:P=[a0a1a2…an-1an]多項(xiàng)式行向量的構(gòu)造直接鍵入,無該次冪則取零用poly(A)命令來生成矩陣A的特征多項(xiàng)式。*如果A是形如[a0a1…an-1an]的向量,由命令poly(A)可生成(x-a0)(x-a1)…(x-an-1)(x-an)所對應(yīng)的多項(xiàng)式。例:已知向量A=[1–34–80],用此向量構(gòu)造一多項(xiàng)式并顯示結(jié)果。A=[1-34-80];PA=poly(A)PA=11132606-2720PAX=poly2sym(PA,'X')PAX=X^3+113*X^2+2606*X-27204.3.2多項(xiàng)式運(yùn)算多項(xiàng)式的加減運(yùn)算運(yùn)算符+-進(jìn)行加減運(yùn)算的多項(xiàng)式應(yīng)該具有相同的階次,如果階次不同,低階的多項(xiàng)式必須用零添補(bǔ)至高階多項(xiàng)式的階次。例:求兩個多項(xiàng)式a(x)=5x4+4x3+3x2+2x+1和b(x)=3x2+0x+1的和。a=[54321];b=[301];c=a+[00b]c=54622多項(xiàng)式乘法多項(xiàng)式乘法采用conv函數(shù)。據(jù)上例求積:d=conv(a,b)d項(xiàng)式除法由deconv函數(shù)完成,結(jié)果包括商和余數(shù)兩部分。[div,rest]=deconv(d,a)div=301rest=0000000微分提供了微分函數(shù)polyder例:求多項(xiàng)式p(x)=2x4-6x3+3x2+0x+7的微分。p=[2-6307];q=polyder(p)q=8-1860pd=poly2sym(q,'x')pd=8*x^3-18*x^2+6*x求根多項(xiàng)式求根可用roots函數(shù)。例:求多項(xiàng)式p(x)=2x4-6x3+3x2+0x+7的根。p=[2-6307];x=roots(p)x=1.9322+0.4714i1.9322-0.4714i-0.4322+0.8355i-0.4322-0.8355i求值采用polyval函數(shù)可以求出當(dāng)多項(xiàng)式中的未知數(shù)為某個特定值時該多項(xiàng)式的值。例:求上例中x=1時的值。p=[2-6307];polyval(p,1)ans=6常用的多項(xiàng)式函數(shù)函數(shù)功能roots求多項(xiàng)式的根poly用根構(gòu)造多項(xiàng)式polyval計(jì)算多項(xiàng)式的值polyvalm計(jì)算參數(shù)為矩陣的多項(xiàng)式的值residue部分分式展開polyfit多項(xiàng)式數(shù)據(jù)擬合polyder微分conv乘法deconv除法應(yīng)用舉例例1:將式(x-4)(x+5)(x2-6x+9)展開為多項(xiàng)式形式,并求其對應(yīng)的一元n次方程的根。p=conv([1,-4],conv([15],[1,-6,9]))p=1-5-17129-180px=poly2sym(p,'x')px=x^4-5*x^3-17*x^2+129*x-180x=roots(p)x=-5.00004.00003.00003.0000例2:已知一元四次方程所對應(yīng)的四個根為-5.00004.00003.00003.0000求這個方程所對應(yīng)的表達(dá)式原型。x=[-5433];p=poly(x);px=poly2sym(p,'x')px=x^4-5*x^3-17*x^2+129*x-180

習(xí)題習(xí)題6:求解一元六次方程3x6+12x5+4x4+7x3+8x+1=0的根。習(xí)題7:求多項(xiàng)式3x6+12x5+4x4+7x3+8x+1=0被(x-3)(x3+5x)除后的結(jié)果。習(xí)題6:求解一元六次方程3x6+12x5+4x4+7x3+8x+1=0的根。習(xí)題7:求多項(xiàng)式3x6+12x5+4x4+7x3+8x+1=0被(x-3)(x3+5x)除后的結(jié)果。4.3.3多項(xiàng)式擬合P=polyfit(x,y,n)x,y為是已知的N個數(shù)據(jù)點(diǎn)坐標(biāo)的變量,其長度為N,n是用來擬合的多項(xiàng)式的次數(shù),p是求出的多項(xiàng)式的系數(shù),n+1個系數(shù)x=0:0.1:1;y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2];a1=ployfit(x,y,1);xi=linspace(0,1);yi1=polyval(a1,xi);plot(x,y,'o',xi,yi1,'b'),holdona2=polyfit(x,y,2);yi2=polyval(a2,xi);plot(x,y,'o',xi,yi2,'m');holdona3=polyfit(x,y,3);yi3=polyval(a3,xi);plot(x,y,'o',xi,yi3,'r');holdona9=polyfit(x,y,9);yi9=polyval(a9,xi);plot(x,y,'o',xi,yi9,'c');holdona10=polyfit(x,y,10);yi10=polyval(a10,xi);plot(x,y,'o',xi,yi10,'g');holdon4.3.4多項(xiàng)式插值

如果在有限個數(shù)據(jù)點(diǎn)內(nèi)給出函數(shù),那么利用插值的方法就可以找到中間點(diǎn)的近似值。最簡單的插值就是對兩個相鄰數(shù)據(jù)點(diǎn)進(jìn)行線性插值。插值函數(shù)分段,進(jìn)行等距離數(shù)據(jù)點(diǎn)的快速插值。結(jié)果為插值后的數(shù)據(jù)點(diǎn),插值數(shù)據(jù)應(yīng)通過給定的數(shù)據(jù)點(diǎn)插值方法method為

linear線性cubic三次cubicspline三次樣條一維線性插值函數(shù)interp1(x,y,xi,’method’)yit1=interp1(x,y,xi);plot(x,y,'o',xi,yit1)yit2=interp1(x,y,xi,'spline');plot(x,y,'o',xi,yit2,'g')spline(x,y,xx)

等同于interp1(x,y,xx,’spline’),但是參數(shù)必須是向量。spline(x,y)

返回三次樣條插值向量的pp形式,它是函數(shù)y=f(x)的近似值。pp是’piecewisepolynomial’的縮寫,得到的向量元素包含計(jì)算的三次樣條系數(shù)。這個命令可以被ppval函數(shù)使用。二維線性插值函數(shù)interp2(x,y,z,xi,yi,’method’)width=1:15;depth=1:3;temps=[8281808284;7963616581;8484828586];di=1:0.2:3;wi=1:0.2:5;tc=onterp2(width,depth,temps,wi,di','cubic');mesh(wi,di,tc)4.3.5線性微分方程的解Y(s)=B(s)/A(s)分解成多個s的一次分式之和(1)由[r,p,k]=residue(b,a)求出極點(diǎn)數(shù)組p和留數(shù)數(shù)組r求反變換第4節(jié)函數(shù)功能和數(shù)值積分函數(shù)庫(funfun)P4.6表分析繪制函數(shù)曲線fplot(’函數(shù)名’,[初值x0,終值xf])求函數(shù)極值fmin(’函數(shù)名’,初值x0,終值xf)求函數(shù)過零點(diǎn)fzero(’函數(shù)名’,初值x0,終值xf)定積分子程序quad(’函數(shù)名’,初值x0,終值xf)S=quad(‘humps’,1,2)求不定積分可以采用循環(huán)fori=1:20x(i)=0.1*i;y(i)=quad('humps',0,x(i));endplot(x,y),gridMATLAB中一元函數(shù)的積分可以用兩個函數(shù)來實(shí)現(xiàn):quad

和quadl。函數(shù)quad采用低階的自適應(yīng)遞歸Simpson方法,函數(shù)quadl采用高階自適應(yīng)Lobatto方法,該函數(shù)是quad8函數(shù)的替代。函數(shù)quad的調(diào)用格式如下:q=quad(fun,a,b),采用遞歸自適應(yīng)方法計(jì)算函數(shù)fun在區(qū)間 上的積分,其精確度為1e-6。q=quad(fun,a,b,tol),指定允許誤差,指定的誤差tol需大于1e-6。該命令運(yùn)行更快,但是得到的結(jié)果精確度降低。q=quad(fun,a,b,tol,trace),跟蹤迭代過程,輸出[fcntab-aQ]的值,分別為計(jì)算函數(shù)值的次數(shù)、當(dāng)前積分區(qū)間的左邊界、步長和該區(qū)間內(nèi)的積分值。[q,fcnt]=quadl(fun,a,b,...),輸出函數(shù)值的同時輸出計(jì)算函數(shù)值的次數(shù)。任意函數(shù)的數(shù)值積分MATLAB中提供了用于積分的函數(shù),包括:一元函數(shù)的自適應(yīng)數(shù)值積分一元函數(shù)的矢量積分二重積分和三重積分這些函數(shù)如表所示。函數(shù)功能quad一元函數(shù)的數(shù)值積分,采用自適應(yīng)的Simpson方法quadl一元函數(shù)的數(shù)值積分,采用自適應(yīng)的Lobatto方法quadv一元函數(shù)的向量數(shù)值積分dblquad二重積分triplequad三重積分二重積分和三重積分MATLAB中二重積分和三重積分分別由函數(shù)dblquad()和函數(shù)triplequad()來實(shí)現(xiàn)。首先介紹函數(shù)dblquad(),該函數(shù)的基本格式如下:q=dblquad(fun,xmin,xmax,ymin,ymax),函數(shù)的參數(shù)分別為函數(shù)句柄、兩個自變量的積分限,返回積分結(jié)果。q=dblquad(fun,xmin,xmax,ymin,ymax,tol),指定積分結(jié)果的精度。q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method),指定結(jié)果精度和積分方法,method的取值可以是@quadl,也可以是用戶自定義的積分函數(shù)句柄,該函數(shù)的調(diào)用格式必須與quad的調(diào)用格式相同。triplequad()函數(shù)的調(diào)用格式和dblquad()基本相同,在調(diào)用triplequad()函數(shù)時,需要六個參數(shù)指定積分限。

任意函數(shù)的數(shù)值微分對于非剛性方程,可以選擇的算法如下:ode45:基于顯式Runge-Kutta(4,5)規(guī)則求解ode23:基于顯式Runge-Kutta(2,3)規(guī)則求解ode113:利用變階Adams-Bashforth-Moulton算法求解微分方程數(shù)字解剛性方程的求解方法如下:ode15s:基于數(shù)值積分公式的變階求解算法ode23s:采用二階改進(jìn)Rosenbrock公式的算法ode23t:采用自由內(nèi)插的梯形規(guī)則ode23tb:采用TR-BDF2算法,該算法為隱式Runge-Kutta公式,包含兩個部分,第一個部分為梯形規(guī)則,第二個部分為二階后向差分。例globalr,r=input('輸入r,在0到10間選擇2??=')x0=input('x0=0??=');xf=input('xf=30??=');y0=input('y0=[y10;y20]=[1;2]??=')[x,y]=ode45('vdp1',x0,xf,y0);plot(x,y)functionyprime=vdp1(x,y)globalr%r為全局變量,由主程序傳送yprime=[y(2);r*(1-y(1).^2).*y(2)-y(1)];%得到一階方程組第5節(jié)字符串函數(shù)庫

表4.8字符串賦值size(s);abs(s)Setstr(abs(s));dec2hex(abs(s))字符串語句的執(zhí)行eval

字符串輸入輸出disp()第6,7,8節(jié)字符串處理MATLAB真正強(qiáng)有力的地方在于它的數(shù)值處理能力。然而,經(jīng)常希望操作文本,例如把標(biāo)號和標(biāo)題放在圖上。在MATLAB里,文本當(dāng)作特征字符串或簡單地當(dāng)作字符串。字符串內(nèi)的單引號是由兩個連續(xù)的單引號來表示。字符串連接可以直接從數(shù)組連接中得到。字符串函數(shù)eval(string)作為一個MATLAB命令求字符串的值eval(try,catch)blanks(n)返回一個n個零或空格的字符串deblank去掉字符串中后拖的空格feval求由字符串給定的函數(shù)值findstr從一個字符串內(nèi)找出字符串isletter字母存在時返回真值isspace空格字符存在時返回真值isstr輸入是一個字符串,返回真值lasterr返回上一個所產(chǎn)生MATLAB錯誤的字符串strcmp字符串相同,返回真值strrep用一個字符串替換另一個字符串strtok在一個字符串里找出第一個標(biāo)記類型轉(zhuǎn)換charx=[776584766566];char(x)int2str四舍五入為整數(shù)轉(zhuǎn)換為字符串num2str將數(shù)字轉(zhuǎn)換為字符串mat2str將矩陣的數(shù)據(jù)轉(zhuǎn)換為字符串str2num單元結(jié)構(gòu)單元結(jié)構(gòu):cell把不同屬性的數(shù)據(jù)納入一個變量中類似于具有下標(biāo)的矩陣和多維數(shù)組,但這些下標(biāo)不是用圓括號,而是用大括號括起來的。pp=cellstr({'asd''testetet''sfsdfsdfdfgsdgsg''sfdfgfdfgf'})顯示內(nèi)容:pp(1)和pp{1}的區(qū)別清空一個單元數(shù)據(jù):pp(3)=[]和pp{3}=[]的區(qū)別第9節(jié)MATLAB的符號計(jì)算(p299)數(shù)值運(yùn)算具有簡單方便、面向?qū)嵱玫奶攸c(diǎn),適用于工程實(shí)踐及科學(xué)研究等各個方面,但同時出有一些缺點(diǎn),比如數(shù)值運(yùn)算所得的解都是工程實(shí)際中用到的近似解,它無法得到無誤差的最終解,而且在日常生活中,也存在著一些無法用數(shù)值運(yùn)算進(jìn)行描述的問題,即存在非數(shù)值運(yùn)算問題。引入符號運(yùn)算就能解決這方面的問題,就像我們平時進(jìn)行數(shù)學(xué)公式的推導(dǎo)一樣,它允許運(yùn)算對象和運(yùn)算過程中出現(xiàn)非數(shù)值的符號變量,這為我們進(jìn)行數(shù)據(jù)分析提供了有力工具。MATLAB所具有的符號數(shù)學(xué)工具箱與其它所有工具不同,它適用于廣泛的用途,而不是針對一些特殊專業(yè)或?qū)I(yè)分支。另外,MATLAB符號數(shù)學(xué)工具箱與其它的工具箱區(qū)別還因?yàn)樗褂米址畞磉M(jìn)行符號分析,而不是基于數(shù)組的數(shù)值分析。符號數(shù)學(xué)工具箱是操作和解決符號表達(dá)式的符號數(shù)學(xué)工具箱(函數(shù))集合,有復(fù)合、簡化、微分、積分以及求解代數(shù)方程和微分方程的工具。另外還有一些用于線性代數(shù)的工具,求解逆、行列式、正則型式的精確結(jié)果,找出符號矩陣的特征值而無由數(shù)值計(jì)算引入的誤差。工具箱還支持可變精度運(yùn)算,即支持符號計(jì)算并能以指定的精度返回結(jié)果。符號數(shù)學(xué)工具箱中的工具是建立在功能強(qiáng)大的稱作Maple軟件的基礎(chǔ)上。它最初是由加拿大的滑鐵盧(Waterloo)大學(xué)開發(fā)的。當(dāng)要求MATLAB進(jìn)行符號運(yùn)算時,它就請求Maple去計(jì)算并將結(jié)果返回到MATLAB命令窗口。因此,在MATLAB中的符號運(yùn)算是MATLAB處理數(shù)字的自然擴(kuò)展。5.9.1符號變量和符號表達(dá)式符號變量的創(chuàng)建利用單引號創(chuàng)建f=‘字符串’例:f=‘sin(w*t)‘

%定義一個正弦函數(shù)f=sin(w*t)G=‘(s+1)/(s+2)/(s+3)’

%定義傳遞函數(shù)G=(s+1)/(s+2)/(s+3)E=‘Dy+5*y=t’

%定義微分方程利用sym指令定義例:x=sym('x')x=xa=sym('a')b=sym('b')c=sym('c')符號變量x,a,b,c,分別表示字母x,a,b,c。symsabcx%符號變量x,a,b,c。在定義了符號變量的基礎(chǔ)上就可以定義符號表達(dá)式了。符號表達(dá)式的建立符號表達(dá)式是代表數(shù)字、函數(shù)、算子和變量的MATLAB字符串,或字符串?dāng)?shù)組。不要求變量有預(yù)先確定的值,符號方程式是含有等號的符號表達(dá)式。符號算術(shù)是使用已知的規(guī)則和給定符號恒等式求解這些符號方程的實(shí)踐,它與代數(shù)和微積分所學(xué)到的求解方法完全一樣。符號矩陣是數(shù)組,其元素是符號表達(dá)式。MATLAB在內(nèi)部把符號表達(dá)式表示成字符串,以與數(shù)字變量或運(yùn)算相區(qū)別;否則,這些符號表達(dá)式幾乎完全象基本的MATLAB命令表中列有幾則符號表達(dá)式例子以及MATLAB等效表達(dá)式。符號表達(dá)式MATLAB表達(dá)式'1/(2*x^n)'y='1/sqrt(2*x)''cos(x^2)-sin(2*x)'M=sym('[a,b;c,d]')f=int('x^3/sqrt(1-x)','a','b')利用sym指令創(chuàng)建表達(dá)式f=sym('a*x^2+b*x+c')f=a*x^2+b*x+c定義了符號表達(dá)式,就可以對表達(dá)式進(jìn)行諸如積分、微分、替換等符號工作。df=diff(f)df=2*a*x+b

nf=int(f)

nf=

1/3*a*x^3+1/2*b*x^2+c*x符號表達(dá)式中自變量的確定確定原則①在符號表達(dá)式中缺省的獨(dú)立變量是唯一的,除去i和j的小寫字母,不是單詞的一部分。②如果沒有這種字母,就選擇x作為獨(dú)立變量。③如字符不是唯一的,就選擇在字母順序中最接近x的字母。④如果有相連的字母,就選擇在字母表中離x最近的那一個。

實(shí)例符號表達(dá)式默認(rèn)自變量a*x^2+b*x+cx1/(4+cos(t))t4*x/yx2*a+bb2*i+4*jx

sin(pi/4)-cos(3/5)

xa*t+s/(u+3)usin(omega)x5.9.2微積分運(yùn)算極限求極限是微積分的基礎(chǔ),在MATLAB中提供了求表達(dá)式極限的函數(shù)limit,其基本用法見表。表達(dá)式函數(shù)格式備注limit(f,x,a)若a=0,且是對x求極限,可簡寫為limit(f)。limit(f,x,a,’left’)左趨近于alimit(f,x,a,’right’)右趨近于a例:求1/x在0處的三個極限。symsxlimit(1/x,x,0)

%兩邊趨近ans=NaNlimit(1/x,x,0,‘left’)

%左邊趨近ans=-inflimit(1/x,x,0,‘right’)%右邊趨近ans=inf可利用極限方法求取函數(shù)的導(dǎo)數(shù)。其原理公式如下所示:求函數(shù)cos(x)的導(dǎo)數(shù)。symstxlimit((cos(x+t)-cos(x))/t,t,0)ans=-sin(x)

微分MATLAB提供了函數(shù)diff,專用于符號表達(dá)式的微分計(jì)算。其使用方法如下所示:①diff(f),求f對預(yù)設(shè)獨(dú)立變量的一次微分值。②diff(f,t),求f對獨(dú)立變量t的一次微分值。③diff(f,n),求f對預(yù)設(shè)獨(dú)立變量的n次微分值④diff(f,t,n),求f對獨(dú)立變量t的n次微分值。例:已知求f(x)的微分。symsabcxf=sym('a*x^2+b*x+c');diff(f)

%對默認(rèn)自變量x求微分。ans=2*a*x+bdiff(f,2)

%對x求二次微分。ans=2*adiff(f,a)

%對a求微分。ans=x^2diff(f,a,2)

%對a求二次微分。ans=0diff(diff(f),a)

%對x和a求微分。ans=2*x微分函數(shù)diff也可用于符號矩陣,其結(jié)果是對矩陣的每一個元素進(jìn)行微分運(yùn)算。例:symsabxD=[a*x,cos(x);b*a,sin(b*x)]D=[a*x,cos(x)][b*a,sin(b*x)]diff(D)ans=[a,-sin(x)][0,cos(b*x)*b]積分運(yùn)用函數(shù)可以求得符號表達(dá)式的積分,該函數(shù)用以演算函數(shù)的積分項(xiàng),這個函數(shù)要找出一符號表達(dá)式F使得diff(F)=f。相關(guān)的用法如下:①int(f)返回f對預(yù)設(shè)獨(dú)立變量的積分值。②int(f,’t’)返回f對獨(dú)立變量t的積分值。③int(f,a,b)返回f對預(yù)設(shè)獨(dú)立變量的積分值,積分區(qū)間為[a,b],a和b為數(shù)值表達(dá)式。④int(f,’t’,a,b)返回f對獨(dú)立變量t的積分值,積分區(qū)間為[a,b],a和b為數(shù)值表達(dá)式。⑤int(f,’m’,’n’)返回f對預(yù)設(shè)獨(dú)立變量的積分值,積分區(qū)間為[m,n],m和n為符號表達(dá)式。例:已知求f(x)的積分。symsabcxint(f)%表達(dá)式f的不定積分,自變量是x。ans=1/3*a*x^3+1/2*b*x^2+c*xint(f,x,0,2)%表達(dá)式f在[0,2]的定積分,自變量是x。ans=8/3*a+2*b+2*cint(f,a)

%表達(dá)式f的不定積分,自變量是a。ans=1/2*a^2*x^2+b*x*a+c*aint(int(f,a),x)ans=1/6*a^2*x^3+1/2*b*x^2*a+c*a*x與微分函數(shù)相似,積分函數(shù)int對符號矩陣的運(yùn)算是對矩陣中的每一個元素進(jìn)行的。symsabxD=[a*x,cos(x);b*a,sin(b*x)]D=[a*x,cos(x)][b*a,sin(b*x)]int(D)ans=[1/2*a*x^2,sin(x)][b*x*a,-1/b*cos(b*x)]級數(shù)求和symsum函數(shù)用于級數(shù)的求和。該函數(shù)的調(diào)用格式為:r=symsum(s),自變量為findsym函數(shù)所確定的符號變量,設(shè)其為k,則該表達(dá)式計(jì)算s從0到k-1的和;r=symsum(s,v),計(jì)算表達(dá)式s從0到v-1的和;r=symsum(s,a,b),計(jì)算自變量從a到b之間s的和;r=symsum(s,v,a,b),計(jì)算v從a到b之間的s的和。例:分別求級數(shù)的和。和symsksymsum(1/k,k,1,inf)ans=infsymsum(1/(k*(k+1)),k,1,inf)ans=1Taylor級數(shù)函數(shù)taylor用于實(shí)現(xiàn)Taylor級數(shù)的計(jì)算。該函數(shù)的調(diào)用格式為:r=taylor(f),計(jì)算表達(dá)式f的Taylor級數(shù),自變量由findsym函數(shù)確定,計(jì)算f的在0的6階Taylor級數(shù);r=taylor(f,n,v),指定自變量v和階數(shù)n;r=taylor(f,n,v,a),指定自變量v、結(jié)束n,計(jì)算f在a的級數(shù)。例:求sin(x)的前8項(xiàng)展開式。symsxtaylor(sin(x),8)ans=x-1/6*x^3+1/120*x^5-1/5040*x^75.9.3方程求解代數(shù)方程MATLAB提供了利用符號表達(dá)式求解代數(shù)方程的函數(shù):solve(f)

解符號方程式f。例:求一元二次方程的根。symsabcxf=sym('a*x^2+b*x+c')f=a*x^2+b*x+csolve(f)ans=[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)ans=-(b*x+c)/x^2例:對有等號的符號方程求解。solve('1+x=sin(x)')ans=-1.9345632107520242675632614537689例:solve('sin(x)=1/2')ans=1/6*pi對于含有周期函數(shù)方程求解時,雖然它本身可能有無窮多個解,但MATLAB只給出零附近的有限幾個解。函數(shù)solve也可用于求解代數(shù)方程組,其用法如下:solve(f1,…,fn)解由f1,….fn組成的代數(shù)方程組。例:求方程的解。eq1=sym('x+y+z=10');eq2=sym('x-y+z=0');eq3=sym('2*x-y-z=-4');[x,y,z]=solve(eq1,eq2,eq3)x=2y=5z=3常微分方程MATLAB提供了求解微分方程式的函數(shù):dsolve(‘equation’,’condition’)其中,equation代表常微分方程式,condition為初始條件;如果初始條件沒有給出,則給出通解。函數(shù)dsovle句法與大多數(shù)其它函數(shù)有一些不同,方程用字母D來表示求微分,D2,D3等等表示幾重微分,并以此來設(shè)定方程。任何D后所跟的字母為因變量。求解方程時默認(rèn)所有這些變量都是對自變量t求導(dǎo)。例:求微分方程的通解。dsolve('Dy=5')ans=5*t+C1dsolve(‘Dy=x’,‘x’)

%求微分方程y’=x的通解,ans=

x為自變量。1/2*x^2+C1dsolve(‘D2y=1+Dy’)

%求微分方程的通解。ans=-t+C1+C2*exp(t)dsolve('D2y=1+Dy','y(0)=1','Dy(0)=0')ans=

%求微分方程的解,加初-t+exp(t)

始條件。該函數(shù)還可以用于求解微分方程組。例:[x,y]=dsolve('Dx=y+x,Dy=2*x')x=1/3*C1*exp(-t)+2/3*C1*exp(2*t)+1/3*C2*exp(2*t)-1/3*C2*exp(-t)y=2/3*C1*exp(2*t)-2/3*C1*exp(-t)+2/3*C2*exp(-t)+1/3*C2*exp(2*t)[x,y]=dsolve('Dx=y+x,Dy=2*x','x(0)=0,y(0)=1')x=1/3*exp(2*t)-1/3*exp(-t)y=2/3*exp(-t)+1/3*exp(2*t)已知:兩個線性一階方程,求其通解。 =3f+4g =-4f+3g[f,g]=dsolve('Df=3*f+4*g,Dg=-4*f+3*g')f=exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)g=-exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0,g(0)=1')f=exp(3*t)*sin(4*t)g=exp(3*t)*cos(4*t)5.9.4符號表達(dá)式的運(yùn)算函數(shù)功能symadd(A,B)完成A+B的符號加法老版本symsub(A,B)完成A-B的符號減法老版本symmul(A,B)完成A與B的符號乘法老版本symdiv(A,B)完成A與B的符號乘法老版本sympow(F,n)完成F^n的符號n次方運(yùn)算老版本numden(F)將F從有理數(shù)形式轉(zhuǎn)換成分子分母形式。eval(F)將F以數(shù)值式表示numeric(F)2009淘汰sym2poly(F)提取F中的多項(xiàng)式系數(shù)并以向量形式表示。poly2sym(c)轉(zhuǎn)換多項(xiàng)式系數(shù)向量c為符號多項(xiàng)式例:symsabf1=sym('1/(a-b)');f2=sym('2*a/(a+b)');f3=sym('(a+1)*(b-1)*(a-b)');symmul(f1,f3)ans=(a+1)*(b-1)sympow(f1,2)ans=1/(a-b)^2symadd(f1,f2)ans=1/(a-b)+2*a/(a+b)[n,d]=numden(symadd(f1,f2))n=a+b+2*a^2-2*a*bd=(a-b)*(a+b)p='(1+sqrt(5))/2'p=(1+sqrt(5))/2numeric(p)ans=1.61805.9.5符號表達(dá)式的化簡一方面有時MATLAB返回的符號表達(dá)式難以理解,有許多工具可以使表達(dá)式變得更易讀懂。另一方面,符號表達(dá)式可用許多等價形式來提供。在不同的場合,某種形式可能勝于另一種。MATLAB提供了許多用來簡化或改變符號表達(dá)式的函數(shù)。函數(shù)說明參見下頁表格。函數(shù)功能collect(F)將表達(dá)式F中相同冪次的項(xiàng)合并expand(F)將表達(dá)式F展開factor(F)將表達(dá)式F因式分解simplify(F)利用代數(shù)上的函數(shù)規(guī)則對表達(dá)式F進(jìn)行化簡simple(F)盡可能的將F表達(dá)式再做簡化,目的是使表達(dá)式以最少的字表示出來例:symsabf1=sym('(a-1)^2+(b+1)^2+a+b');f2=sym('a^3-1');f3=sym('1/a^4+2/a^3+3/a^2+4/a+5');collect(f1)ans=b^2+3*b+(a-1)^2+1+aexpand(f1)ans=a^2-a+2+b^2+3*bfactor(f1)ans=a^2-a+2+b^2+3*bfactor(f2)ans=(a-1)*(a^2+a+1)simplify(f3)ans=(1+2*a+3*a^2+4*a^3+5*a^4)/a^4函數(shù)simple用來求符號表達(dá)式或矩陣的最簡形式,其格式為simple(F)。該函數(shù)會嘗試用多種不同化簡方法對F進(jìn)行化簡,并顯示所有能夠化簡F的方法,最后返回F的最簡形式。如果F是一個矩陣,則返回的結(jié)果是整個矩陣的最簡形式,而不一定是其中某一個元素的最簡形式。simple(f3)simplify:(1+2*a+3*a^2+4*a^3+5*a^4)/a^4radsimp:(1+2*a+3*a^2+4*a^3+5*a^4)/a^4combine(trig):(1+2*a+3*a^2+4*a^3+5*a^4)/a^4factor:(1+2*a+3*a^2+4*a^3+5*a^4)/a^4expand:1/a^4+2/a^3+3/a^2+4/a+5combine:1/a^4+2/a^3+3/a^2+4/a+5convert(exp):1/a^4+2/a^3+3/a^2+4/a+5convert(sincos):1/a^4+2/a^3+3/a^2+4/a+5convert(tan):1/a^4+2/a^3+3/a^2+4/a+5collect(a):1/a^4+2/a^3+3/a^2+4/a+5ans=1/a^4+2/a^3+3/a^2+4/a+5通過上述實(shí)例,比較simple(f3)和simplify(f3)可以看出simple使用了多種方法,能夠改善simplify的結(jié)果,而simplify返回的不一定是最簡結(jié)果。若只想得到最簡形式,則可以使用[r,how]=simple(s)其中,r是符號變量;how是字符串。接上例:f3=sym('1/a^4+2/a^3+3/a^2+4/a+5')f3=1/a^4+2/a^3+3/a^2+4/a+5[r,how]=simple(f3)r=1/a^4+2/a^3+3/a^2+4/a+5how=collect(a)5.5.6sym函數(shù)MATLAB提供了將符號表達(dá)式變換成數(shù)值的函數(shù)sym,該函數(shù)可獲取一個數(shù)字參量并將其轉(zhuǎn)換為符號表達(dá)式。函數(shù)eval(numeric)的功能正好相反,它把一個符號常數(shù)(無變量符號表達(dá)式)變換為一個數(shù)值。函數(shù)sym一般用四個參數(shù)來控制,它們分別是f,r,e,d,其具體使用下表所示。函數(shù)sym不但可以完成單個元素的轉(zhuǎn)換,還可以將數(shù)值矩陣轉(zhuǎn)換為符號值矩陣,采用的指令形式為sym(A),其中A為要轉(zhuǎn)化的矩陣,不管原來的元素是何種形式,它都以最接近的形式給出結(jié)果。參數(shù)作用f返回該符號值的浮點(diǎn)表示r返回該符號值的有理數(shù)形式(系統(tǒng)默認(rèn))e返回帶有機(jī)器浮點(diǎn)誤差的有理值d返回十進(jìn)制數(shù)值(默認(rèn)數(shù)位長度32位)例:sym(1/3,'f')ans='1.5555555555555'*2^(-2)sym(1/3,'r')ans=1/3sym(1/3,'e')ans=1/3-eps/12sym(1/3,'d')ans=.33333333333333331482961625624739例:A=[0.251/3;sqrt(2),sin(pi/3)]A=

0.25000.33331.41420.8660sym(A)ans=[1/4,1/3][sqrt(2),sqrt(3/4)]5.9.7表達(dá)式替換假設(shè)有一個以x為變量的符號表達(dá)式,并希望將變量轉(zhuǎn)換為y。MATLAB提供一個工具稱作subs,以便在符號表達(dá)式中進(jìn)行變量替換。相關(guān)的函數(shù)使用方法如下:①Subs(s)用賦值函數(shù)中的給定值替換符號表達(dá)式s中的所有變量。②Subs(s,new)用new替換s中的所有自由變量。③Subs(s,old,new)用符號或數(shù)值變量new替換s中的符號變量old。a=5;y=dsolve('Dy=-a*y')y=C1*exp(-a*t)subs(y)ans=C1*exp(-5*t)symsabsubs(a+b,a,4)ans=4+bsubs(cos(a)+sin(b),{a,b},{sym('alpha'),2})ans=cos(alpha)+sin(2)5.9.8符號積分變換符號傅立葉變換符號拉普拉斯變換符號Z變換傅立葉變換傅立葉變換由函數(shù)fourier實(shí)現(xiàn),該函數(shù)的調(diào)用格式為:F=fourier(f),實(shí)現(xiàn)函數(shù)f的傅立葉變換,如果f的默認(rèn)自變量為x,則返回f的傅立葉變換結(jié)果,默認(rèn)自變量為w;如果f的默認(rèn)自變量為w,則返回結(jié)果的默認(rèn)自變量為t;F=fourier(f,v),返回結(jié)果為v的函數(shù);fourier(f,v)F(t)=int(f(x)*exp(-i*v*x),x,-inf,inf)F=fourier(f,u,v),f的自變量為u,返回結(jié)果為v的函數(shù)。fourier(f,u,v)F(v)=int(f(u)*exp(-i*v*u),u,-inf,inf)傅立葉逆變換傅立葉逆變換由函數(shù)ifourier實(shí)現(xiàn),該函數(shù)的調(diào)用格式為:f=ifourier(F),實(shí)現(xiàn)函數(shù)F的傅立葉逆變換,如果F的默認(rèn)自變量為w,則返回結(jié)果f的默認(rèn)自變量為x,如果F的自變量為x,則返回結(jié)果f的自變量為t;f=ifourier(F,u),實(shí)現(xiàn)函數(shù)F的傅立葉逆變換,返回結(jié)果f為u的函數(shù);f=ifourier(F,v,u),實(shí)現(xiàn)函數(shù)F的傅立葉逆變換,F(xiàn)的自變量為v,返回結(jié)果f為u的函數(shù)。例:symstvwxfourier(1/t)ans=i*pi*(Heaviside(-w)-Heaviside(w))fourier(exp(-x^2),x,t)ans=pi^(1/2)*exp(-1/4*t^2)fourier(exp(-t)*sym('Heaviside(t)'),v)ans=1/(1+i*v)

fourier(diff(sym('F(x)')),x,w)ans=i*w*fourier(F(x),x,w)ifourier(w*exp(-3*w)*sym('Heaviside(w)'))ans=1/2/(-3+i*x)^2/piifourier(sym('fourier(f(x),x,w)'),w,x)ans=f(x)symsuifourier(1/(1+w^2),u)ans=1/2*exp(-u)*Heaviside(u)+1/2*exp(u)*Heaviside(-u)符號拉普拉斯變換laplace函數(shù)實(shí)現(xiàn)符號函數(shù)的拉普拉斯變換。該函數(shù)的調(diào)用格式為:laplace(F),實(shí)現(xiàn)函數(shù)F的拉普拉斯變換,如果F的默認(rèn)自變量為t,返回結(jié)果的默認(rèn)自變量為s;如果F的默認(rèn)自變量為s,則返回結(jié)果為t的函數(shù);laplace(F,t),返回函數(shù)的自變量為t;laplace(F,t)L(t)=int(F(x)*exp(-t*x),0,inf)laplace(F,w,z),指定F的自變量為w,返回結(jié)果為z的函數(shù);laplace(F,w,z)L(z)=int(F(w)*exp(-z*w),0,inf)拉普拉斯逆變換拉普拉斯逆變換由函數(shù)ilaplace實(shí)現(xiàn),該函數(shù)的調(diào)用格式為:F=ilaplace(L),實(shí)現(xiàn)函數(shù)L的拉普拉斯逆變換,如果L的自變量為s,則返回結(jié)果為t的函數(shù),如果L的自變量為t,則返回結(jié)果為x的函數(shù);F=ilaplace(L,y),返回結(jié)果為y的函數(shù);F=ilaplace(L,y,x),指定L的自變量為y,返回結(jié)果為x的函數(shù)。symsastwxlaplace(x^5)ans=120/s^6laplace(cos(x*w),w,t)ans=t/(t^2+x^2)laplace(diff(sym('F(x)')))ans=s*laplace(F(x),x,s)-F(0)f=sym('[1/(s-1)]')f=1/(s-1)ilaplace(f)ans=exp(t)符號Z變換Z變換由函數(shù)ztrans完成,該函數(shù)的用法為:F=ztrans(f),如果f的默認(rèn)自變量為n,則返回結(jié)果為z的函數(shù),如果f為函數(shù)z的函數(shù),則返回結(jié)果為w的函數(shù);F=ztrans(f,w),返回結(jié)果為w的函數(shù);ztrans(f,w)F(w)=symsum(f(n)/w^n,n,0,inf)F=ztrans(f,k,w),f的自變量為k,返回結(jié)果為w的函數(shù)。ztrans(f,k,w)F(w)=symsum(f(n)/w^k,k,0,inf)Z逆變換Z逆變換由函數(shù)iztrans完成,其調(diào)用格式為:f=iztrans(F),若F的默認(rèn)自變量為z,則返回結(jié)果為n的函數(shù),如果F是n的函數(shù),則返回結(jié)果為k的函數(shù);f=iztrans(F,k),指定返回結(jié)果為k的函數(shù);f=iztrans(F,w,k),指定F的自變量為w,返回結(jié)果為k的函數(shù)。例:symsknwza=ztrans(2^n)a=1/2*z/(1/2*z-1)simplify(a)ans=z/(z-2)b=ztrans(sin(k*n),w)b=-w*sin(k)/(-w^2+2*w*cos(k)-1)c=ztrans(cos(n*k),k,z)c=(z-cos(n))*z/(z^2-2*z*cos(n)+1)d=ztrans(cos(n*k),n,w)d=(cos(k)-w)*w/(-w^2+2*w*cos(k)-1)e=ztrans(sym('f(n+1)'))e=z*ztrans(f(n),n,z)-f(0)*zMAPLE函數(shù)的調(diào)用maple函數(shù)的使用mfun函數(shù)的使用maple函數(shù)的使用maple是符號工具箱中的一個通用命令,使用它可以實(shí)現(xiàn)對MAPLE中大部分函數(shù)的調(diào)用。其使用格式為:r=maple('statement'),其中statement為符合MAPLE語法的可執(zhí)行語句的字符串,該命令將sta

溫馨提示

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

評論

0/150

提交評論