三講MATLAB的符號運算ppt課件_第1頁
三講MATLAB的符號運算ppt課件_第2頁
三講MATLAB的符號運算ppt課件_第3頁
三講MATLAB的符號運算ppt課件_第4頁
三講MATLAB的符號運算ppt課件_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三講 MATLAB的符號運算科學(xué)與工程技術(shù)中的數(shù)值運算固然重要,但自然科學(xué)理論分析中各種各樣的公式、關(guān)系式及其推導(dǎo)就是符號運算要解決的問題。在Matlab7.0中,符號計算雖以數(shù)值運算的補充身份出現(xiàn),但它們都是科學(xué)計算研究的重要內(nèi)容。Matlab開發(fā)了實現(xiàn)符號計算的工具包Symbolic Math Toolbox 。符號數(shù)學(xué)工具箱中的工具是建立在功能強(qiáng)大的Maple的基礎(chǔ)上。它最初是由加拿大的滑鐵盧(Waterloo)大學(xué)開發(fā)出來的。如果要求Matlab7.0進(jìn)行符號運算,那么首先由Maple計算并將結(jié)果返回到Matlab7.0命令窗口。兩個數(shù)學(xué)分析的可視化界面圖示化符號計算器 (由命令fu

2、ntool引出)泰勒級數(shù)逼近分析界面 (由命令taylortool引出)圖示化符號計算器由三個獨立的窗口構(gòu)成,通過函數(shù)運算控制窗口來演示另外兩個圖形窗口,任何時候,只有一個窗口屬于激活狀態(tài)。而被激活的函數(shù)圖像可隨運算控制窗口的操作而做相應(yīng)的變化。下面給出運算控制窗口的鍵位功能。前兩行是函數(shù) f 和 g 的具體解析式,第三行是自變量 x 的取值范圍和常數(shù) a 的值。第四行只對 f 起作用,如求導(dǎo)、積分、簡化、提取分子和分母、倒數(shù)、反函數(shù)。第五行是處理 f 和 a 的加減乘除等運算。第六行前四個進(jìn)行 f 和 g 之間的運算,后三個分別是:求復(fù)合函數(shù);把 f 傳遞給 ;swap是實現(xiàn) f 和 g 功

3、能的交換。最后一行是對計算器自身進(jìn)行操作。Funtool計算器存有一張函數(shù)列表fxlist 這7個功能鍵分別是:Insert:把當(dāng)前激活窗的函數(shù)寫入列表Cycle:依次循環(huán)顯示fxlist中的函數(shù)Delete:從fxlist列表中刪除激活窗的函數(shù)Reset:使計算器恢復(fù)到初始調(diào)用狀態(tài)Help:獲得關(guān)于界面的在線提示說明Demo:自動演示Close:關(guān)閉整個計算器泰勒級數(shù)逼近分析該界面用于觀察函數(shù)f(x)在給定區(qū)間被N階泰勒多項式Tn(x)逼近的情況。f(x)的輸入可由命令taylortool(fx)引入,或者在欄中直接輸入表達(dá)式,回車確定。N默認(rèn)值為7,a是級數(shù)的展開點。函數(shù)的觀察區(qū)間默認(rèn)為(

4、-2pi,2pi)。符號運算的功能符號表達(dá)式、符號矩陣的創(chuàng)建符號線性代數(shù)因式分解、展開和簡化符號代數(shù)方程求解符號微積分符號微分方程一、符號運算的基本操作什么是符號運算與數(shù)值運算的區(qū)別 數(shù)值運算中必須先對變量賦值,然后才能參與運算。 符號運算無須事先對獨立變量賦值,運算結(jié)果以標(biāo)準(zhǔn)的符號形式表達(dá)。特點: 運算對象可以是沒賦值的符號變量,以推理解析的方式進(jìn)行,因此不受計算誤差累積所帶來的困擾。 可以給出完全正確的封閉解或任意精度的數(shù)值解(當(dāng)封閉解不存在時)。符號計算指令的調(diào)用簡單,和經(jīng)典教科書公式相近。計算所需的時間較長。Symbolic Math Toolbox符號運算工具包通過調(diào)用Maple軟件

5、實現(xiàn)符號計算的。Maple軟件主要功能是符號運算,它占據(jù)符號軟件的主導(dǎo)地位。 2. 字符串與符號變量、符號常量字符串對象 f = sin(x)+5xf 字符串名sin(x)+5x 函數(shù)表達(dá)式 字符串標(biāo)識字符串表達(dá)式一定要用 單引號括起來Matlab才能識別。用class( )來返回對象的數(shù)據(jù)類型。 里的內(nèi)容可以是函數(shù)表達(dá)式,也可以是方程。例: f1=a*x2+b*x+c 二次三項式 f2= a*x2+b*x+c=0 方程 f3=Dy+y2=1 微分方程函數(shù)表達(dá)式或方程可以賦給字符串或符號變量,以后方便調(diào)用。符號變量符號變量是內(nèi)容可變的符號對象。符號變量通常是指一個或幾個特定的字符,不是指符號表

6、達(dá)式,甚至可以將一個符號表達(dá)式賦值給一個符號變量。符號變量有時也稱自由變量,它的命名規(guī)則和數(shù)值變量的命名規(guī)則相同。相關(guān)指令為: sym( ) 和 syms( ) (symbolic的縮寫)例:用函數(shù)命令sym( )和syms( )來創(chuàng)建符號對象并檢測數(shù)據(jù)類型。a=sym(a) 注意兩個 a的區(qū)別b=sym(c)classa=class(a)classb=class(b) 可看出兩個變量均為符號對象syms a b c d e f g hwhos 也可以查看所有變量類型從上述比較來看:當(dāng)需要同時定義多個符號變量時,使用syms( )更簡潔一些。符號常量當(dāng)數(shù)值常量作為sym( )的輸入?yún)⒘繒r,就建

7、立了一個符號對象符號常量。雖然看上去是一個數(shù)值量,但已經(jīng)是一個符號對象了。例:a=3/4; b=3/4; c=sym(3/4); d=sym(3/4); whos 查看變量類型a為實雙精度浮點數(shù)值類型;b為實字符類型;c和d都是符號對象類型。 由符號變量構(gòu)成的符號函數(shù)和符號方程符號表達(dá)式是由符號常量、符號變量、符號函數(shù)運算符以及專用函數(shù)連接起來的符號對象。包括:符號函數(shù)和符號方程。判斷看帶不帶等號。例:syms x y z; f1=x*y/z; f2=x2+y2+z2; f3=f1/f2; e1=sym(a*x2+b*x+c) e2=sym(sin(x)2+2*cos(x)=1) e3=sym

8、(Dy-y=x)3.符號矩陣的創(chuàng)建 數(shù)值矩陣 clear clc A=1,2;3,4 A=a,b;c,d 不識別用Matlab函數(shù)sym創(chuàng)建矩陣命令格式:A=sym( ) 符號矩陣內(nèi)容同數(shù)值矩陣 需用sym指令定義,需用 標(biāo)識 注意與a,b;c,d的區(qū)別例如:A = sym(a , 2*b ; 3*a , 0) A = a, 2*b 3*a, 0 這就完成了一個符號矩陣的創(chuàng)建。注意:符號矩陣的每一行的兩端都有方 括號,這是與 Matlab數(shù)值矩陣的 一個重要區(qū)別。用字符串直接創(chuàng)建矩陣v 模仿Matlab數(shù)值矩陣的創(chuàng)建方法v 需保證同一列中各元素字符串有相v 同的長度。例:A = a,2*b;

9、3*a, 0 A = a, 2*b 3*a, 0 符號矩陣的修改 a.直接修改 可用、 鍵找到所要修改的矩陣,直接修改 b.指令修改 用A1=subs(A, new, old)來修改例如:例如:A = a, 2*b 3*a, 0A(2,2)=4*bA1 = a, 2*b 3*a, 4*bA2=subs(A1, c, b) A2 = a, 2*c 3*a, 4*c v將數(shù)值矩陣轉(zhuǎn)化為符號矩陣v 函數(shù)調(diào)用格式:sym(A)vclear A=1/3,2.5;1/0.7,2/5vA =v 0.3333 2.5000v 1.4286 0.4000vsym(A)vans =v 1/3, 5/2v10/7,

10、 2/5 符號矩陣與數(shù)值矩陣的轉(zhuǎn)換v將符號矩陣轉(zhuǎn)化為數(shù)值矩陣v函數(shù)調(diào)用格式: numeric(A)?vA =v 1/3, 5/2v10/7, 2/5vnumeric(A)vans =v 0.3333 2.5000v 1.4286 0.4000由于Matlab7.0采用了重載技術(shù),使得符號計算表達(dá)式的運算符和基本函數(shù),無論在形狀、名稱上,還是在使用方法上,都與數(shù)值計算中的運算符和基本函數(shù)幾乎完全相同。這無疑給用戶帶來了極大的方便。例外:在符號對象的比較中,沒有大于”、 ”大于等于”、 ”小于”、 ”小于等于的概念,而只有是否“等于的概念。二、符號運算1.符號矩陣運算數(shù)值運算中,所有矩陣運算操作指

11、令都比較直觀、簡單。例如:a=b+c; a=a*b ;A=2*a2+3*a-5等。符號運算中,很多方面在形式上同數(shù)值計算都是相同的,沒必要重新學(xué)習(xí)新的規(guī)則。 2. 任意精度的數(shù)學(xué)運算 在symbolic中有三種不同的算術(shù)運算:數(shù)值類型 matlab的浮點算術(shù)運算有理數(shù)類型 maple的精確符號運算vpa類型 maple的任意精度算術(shù) 運算 浮點算術(shù)運算format long (定義輸出格式) 1/2+1/3 ans =0.83333333333333符號運算sym(1/2)+(1/3)或sym(1/2+1/3)ans = 5/6 精確解任意精度算術(shù)運算digits(n) 設(shè)置近似解的精讀為n位

12、有效數(shù)字,默認(rèn)32位有效數(shù)字。vpa(x,n) 求符號解的近似解,該近似解的有效位數(shù)由n來決定。digits(25)vpa(1/2+1/3)ans =.8333333333333333333333333vpa(5/6,40) ans =.8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3/7)a = 1/4,exp(1)log(3), 3/7vpa(a,10)ans =.2500000000, 2.7182818281.098612289, .42857142863.符號表達(dá)式的化簡可以對符號計算結(jié)果進(jìn)行簡化,諸

13、如因式分解、同類項合并、符號表達(dá)式的展開、符號表達(dá)式的化簡和通分等等。合并同類項 collect(v) -將表達(dá)式v的相同次冪的項合并。例:syms x t % 定義基本變量 f=(x-1)*(x-2)*(x-3) 定義符號表達(dá)式 collect(f) 合并f中x的同類項expand(s) 將s中的各項進(jìn)行展開,用于多項式,三角函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)。 例:syms x y; f=(x+y)3; f1=expand(f) f1 = x3+3*x2*y+3*x*y2+y3例:h=cos(x-y) expand(h)factor(S) 將系數(shù)為有理數(shù)的多項式(矩陣)S,表示成低階多項式相乘的形式

14、,如果不能分解,則返回S本身。例:syms x y factor(x3-y3)simplify( ) 該函數(shù)是一個強(qiáng)有力的具有普遍意義的工具,它利用Maple化簡規(guī)則對表達(dá)式進(jìn)行簡化。例:S=sym(x2+5*x+6)/(x+2);sqrt(16) simplify(S)simple( ) 用幾種不同的算術(shù)簡化規(guī)則對符號表達(dá)式進(jìn)行簡化,使其用最少的字符來表示。雖然并非表達(dá)式中的字符越少,表達(dá)式就越簡單,但采用這個標(biāo)準(zhǔn)往往能夠得到滿意的結(jié)果,尤其是對于包含三角函數(shù)的表達(dá)式。例:sym x simple(cos(x)2+sin(x)2)從結(jié)果看出,simple比較這些不同函數(shù)的結(jié)果,最終把最少字符

15、作為標(biāo)準(zhǔn)。diff(f) 對缺省變量求f的微分diff(f,v) 對指定變量v求微分diff(f,n) 對默認(rèn)變量求n階微分diff(f,v,n) 對指定變量v求f的n階微分例:syms a x f=sin(a*x) df=diff(f) dfa=diff(f,a,2)4. 符號微積分與積分變換符號表達(dá)式的極限limit(F,x,a) 求當(dāng)xa時,表達(dá)式F的極限limit(F, a) 默認(rèn)自變量時,趨于a的極限limit(F) 默認(rèn)自變量,默認(rèn)a=0 limit(F,x,a, left) 取F的左極限limit(F,x,a, right) 取F的右極限例:syms h n x dc=limit

16、(sin(x+h)-sin(x)/h,h,0) %按照導(dǎo)數(shù)的定義求sin的導(dǎo)數(shù)注意:對于極限不存在,返回NaN例: limit(1/x,x,0) limit(1/x,x,0, left) limit(1/x,x,0, right)結(jié)果分別為:ans = NaNans = -Infans = Infint(f) 對f表達(dá)式的缺省變量求不定積分int(f,v) 對f表達(dá)式的v變量求不定積分int(f,v,a,b) 對f表達(dá)式的v變量在a,b) 區(qū)間求定積分 findsym(f) 可以找出f中的每個變量 注意:當(dāng)函數(shù)的積分不存在時,Matlab7.0將簡單地返回原來的積分表達(dá)式。符號表達(dá)式的積分in

17、t(被積表達(dá)式,積分變量,積分上限, 積分下限) 定積分缺省時為不定積分例:int(-2*x/(1+x2)2) ans = 1/(1+x2) int(log(x) int(log10(x) int(sin(x),x,-pi,pi) taylor(f,n,v) n階泰勒級數(shù)展開例:syms x f=1/(2+cos(x) r=taylor(f,8)symsum(f,v,a,b) 表達(dá)式f中變量 v從a變到b時的有限和例:syms x k s1=symsum(1/k2,1,inf) s2=symsum(xk,k,0,inf) 上述都是求無窮級數(shù)的和符號積分變換ztrans(f) Z變換Invztr

18、ans(f) 反Z變換Laplace(f) 拉氏變換Invlaplace(f) 反拉氏變換fourier(f) 付氏變換Invfourier(f) 反付氏變換 注意 :上述函數(shù)均缺省了部分參數(shù) 例1.計算二重不定積分dxdyxexyF=int(int(x*exp(-x*y),x),y)例例2.計算計算 f=x*exp(-x*10)的的Z變換變換 F=ztrans(f) F= z*exp(-10)/(z-exp(-10)2符號積分的例子 syms x y F=int(int(x*exp(-x*y),x),y)F =1/y*exp(-x*y) syms x f=x*exp(-x*10); F=zt

19、rans(f) F=ztrans(x*exp(-x*10);F =z*exp(-10)/(z-exp(-10)2 例3. 計算指數(shù)函數(shù)eAt。用拉氏反變換法計算eAt的公式為: eAt = L-1(SI-A)-1系統(tǒng)矩陣A= 3210tttttttteeeeeeee22222222eAt =結(jié)果: a=0 1;-2 -3; syms s b=(s*eye(2)-a)b = s, -1 2, s+3 B=inv(b) (s+3)/(s2+3*s+2), 1/(s2+3*s+2) -2/(s2+3*s+2), s/(s2+3*s+2) b11=ilaplace(sym(b,1,1);b(1,1)=

20、b11; b12=ilaplace(sym(b,1,2);b(1,2)=b12; b21=ilaplace(sym(b,2,1);b(2,1)=b21; b22=ilaplace(sym(b,2,2);b(2,2)=b22; bb = -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t) -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t) 5.符號代數(shù)方程求解 Matlab符號運算能夠解一般的線性方程、非線性方程、超越方程。當(dāng)方程組不存在符號解時,又無其他自由參數(shù),則給出數(shù)值解。命令格式:solve(f,v) 求一個方程f=0的解S

21、olve(f1,f2, fn) 求n個方程的解 例1. f = ax2+bx+c 求解f=a*x2+b*x+c; solve(f) 對缺省變量x求解ans =1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)計算機(jī)格式aacbb242一般格式例2. 符號方程cos(x)=sin(x) tan(2*x)=sin(x)求解f1=solve(cos(x)=sin(x),f1 =1/4*pi f2=solve(tan(2*x)=sin(x) solve(f , b ) 對指定變量b求解 加與不加效果一樣 例3. 解方程組 x+y+z=1 x-y+z=2

22、 2x-y-z=1g1=x+y+z=1,g2=x-y+z=2,g3=2*x-y-z=1f=solve(g1,g2,g3)f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)f =z = 5/6, y = -1/2, x = 2/3f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)f = x: 1x1 sym f.x ans =2/3 y: 1x1 sym f.y ans =-1/2 z: 1x1 sym f.z ans =5/6 x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1) x = 2/3 y =-1/2 z =5/66. 符號

23、微分方程求解 用一個函數(shù)可以方便地得到微 分方程的符號解符號微分方程求解指令:dsolve命令格式:dsolve(f,g)f 微分方程,可多至12個微分方程的求 解;g為初始條件默認(rèn)自變量為 x,可任意指定自變量t, u等微分方程的各階導(dǎo)數(shù)項以大寫字母D表示 dtdydxdy22dtydnndtyd22dxydnndxyd或或或y的一階導(dǎo)數(shù) Dyy的二階導(dǎo)數(shù) D2yy的 n 階導(dǎo)數(shù) Dnyy1,y2=dsolve(x1,x2,xn) 返回 微分方程的解一階微分方程dsolve(Dx=y,Dy=x,x(0)=0,y(0)=1)ans =x(t) = sin(t), y(t) = cos(t)二階

24、微分方程dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)ans =cos(a*x)例.y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)ans =exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y) 方程解y(t)的時間曲線圖22dxyddxdy202y00 )(dxdy,1)0(y求該方程的解-6-4-2024050100150200250300 xexp(-x)*cos(x)+exp(-x)*sin(x)-6-4-2024050100150200250texp(-t) sin(t)+exp(-t) cos(t)三、m

25、aple函數(shù)符號運算的擴(kuò)展maple是專門進(jìn)行數(shù)學(xué)運算的軟件工具, 具有超強(qiáng)的符號運算能力,提供了 幾乎包括所有數(shù)學(xué)領(lǐng)域的專用函數(shù)matlab依賴于maple的內(nèi)核與函數(shù)庫,擴(kuò) 展了自己的符號運算功能。 matlab還設(shè)計了對maple庫函數(shù)的調(diào)用功能使得已有的maple數(shù)學(xué)功能,可以擴(kuò)充matlab中,作為自身符號運算能力的擴(kuò)展。1. maple內(nèi)核訪問函數(shù)可以訪問maple內(nèi)核的matlab函數(shù): maple 訪問maple內(nèi)核函數(shù) mapleinit maple函數(shù)初始化 mpa maple函數(shù)定義 mhelp maple函數(shù)幫助命令 procread maple函數(shù)程序安裝. mapl

26、e 的調(diào)用格式maple(表達(dá)式) 將表達(dá)式送至maple內(nèi)核, 返回符號表達(dá)式結(jié)果。maple (函數(shù),變量1,變量2) 調(diào)用maple函數(shù),傳遞給定 變量。 例1. 展開5階 bernoulli 多項式,計算 x=3 時bernoulli 數(shù)。a=maple(bernoulli(5,x)a =-1/6*x+5/3*x3+x5-5/2*x4a=maple(bernoulli(5,3)a =85例2. 化簡三角函數(shù)式sin2x+cos2xa=maple(simplify(sin(x)2+cos(x)2);)a =1例4. 求f(t)=e-3tsint的拉式變換f=maple(laplace(e

27、xp(-3*t)*sin(t),t,s);)f =1/(s+3)2+1)例4. 尋找二次多項式的完全平方 f (x) = x2+2x+2a=maple(completesquare(x2+2*x+2)a =completesquare(x2+2*x+2) 將工具包裝入內(nèi)存maple(with(student);)a=maple(completesquare(x2+2*x+2)a =(x+1)2+1maple軟件中的所有函數(shù),在初始化時并沒有完全裝入內(nèi)存,可用readlib指令把庫函數(shù)讀入內(nèi)存,或用with指令將應(yīng)用工具包裝入內(nèi)存。調(diào)用格式maple(readlib(函數(shù)名);)maple(wi

28、th(工具包名);)例5.求sin(x2+y2)在x=0,y=0處泰勒級數(shù)展開式,8階截斷。maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans =mtaylor(sin(x2+y2),x = 0, y = 0,8)maple(readlib(mtaylor);)maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans =x2+y2-1/6*x6-1/2*y2*x4-1/2*y4*x2-1/6*y62. mpa maple變量定義任何一個matlab定義的函數(shù)f,可使用mpa語句直接調(diào)用,還可把 f 定義成maple變量v。maple的工作空間與ma

29、tlab工作空間是相互獨立的, 所以f 與v是屬于不同工作空間中的變量mpa的調(diào)用格式: mpa(v,f) mpa v ff為matlab工作空間中已存在的變量例. 電磁力計算公式為試I=0.5,x=0.1鄰域展開泰勒級數(shù),3階截斷,令常數(shù) ,1.直接調(diào)用maple(readlib(mtaylor);)maple(mtaylor(k*I2/x2,I=0.5,x=0.1,3);)2204)(),(xNISxIF420NSk22),(xkIxIF2.定義符號函數(shù)f(matlab6.1無map函數(shù))f=k*I2/x2;maple(mtaylor(f,I=0.5,x=0.1,3);)ans =mtaylor(f,I = .5, x = .1,3)mpa(u,f)maple(mtaylor(u,I=0.5,x=0.1,3)

溫馨提示

  • 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

提交評論