MATLAB的符號運算.ppt_第1頁
MATLAB的符號運算.ppt_第2頁
MATLAB的符號運算.ppt_第3頁
MATLAB的符號運算.ppt_第4頁
MATLAB的符號運算.ppt_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三講 MATLAB的符號運算,科學與工程技術中的數(shù)值運算固然重要,但自然科學理論分析中各種各樣的公式、關系式及其推導就是符號運算要解決的問題。 在Matlab7.0中,符號計算雖以數(shù)值運算的補充身份出現(xiàn),但它們都是科學計算研究的重要內容。 Matlab開發(fā)了實現(xiàn)符號計算的工具包Symbolic Math Toolbox 。,符號數(shù)學工具箱中的工具是建立在功能強大的Maple的基礎上。 它最初是由加拿大的滑鐵盧(Waterloo)大學開發(fā)出來的。 如果要求Matlab7.0進行符號運算,那么首先由Maple計算并將結果返回到Matlab7.0命令窗口。,兩個數(shù)學分析的可視化界面,圖示化符號計算器 (由命令funtool引出) 泰勒級數(shù)逼近分析界面 (由命令taylortool引出),圖示化符號計算器,由三個獨立的窗口構成,通過函數(shù)運算控制窗口來演示另外兩個圖形窗口,任何時候,只有一個窗口屬于激活狀態(tài)。而被激活的函數(shù)圖像可隨運算控制窗口的操作而做相應的變化。 下面給出運算控制窗口的鍵位功能。,前兩行是函數(shù) f 和 g 的具體解析式,第三行是自變量 x 的取值范圍和常數(shù) a 的值。 第四行只對 f 起作用,如求導、積分、簡化、提取分子和分母、倒數(shù)、反函數(shù)。 第五行是處理 f 和 a 的加減乘除等運算。 第六行前四個進行 f 和 g 之間的運算,后三個分別是:求復合函數(shù);把 f 傳遞給 ;swap是實現(xiàn) f 和 g 功能的交換。 最后一行是對計算器自身進行操作。,Funtool計算器存有一張函數(shù)列表fxlist 這7個功能鍵分別是: Insert:把當前激活窗的函數(shù)寫入列表 Cycle:依次循環(huán)顯示fxlist中的函數(shù) Delete:從fxlist列表中刪除激活窗的函數(shù) Reset:使計算器恢復到初始調用狀態(tài) Help:獲得關于界面的在線提示說明 Demo:自動演示 Close:關閉整個計算器,泰勒級數(shù)逼近分析,該界面用于觀察函數(shù)f(x)在給定區(qū)間被N階泰勒多項式Tn(x)逼近的情況。 f(x)的輸入可由命令taylortool(fx)引入,或者在欄中直接輸入表達式,回車確定。 N默認值為7,a是級數(shù)的展開點。 函數(shù)的觀察區(qū)間默認為(-2pi,2pi)。,符號運算的功能,符號表達式、符號矩陣的創(chuàng)建 符號線性代數(shù) 因式分解、展開和簡化 符號代數(shù)方程求解 符號微積分 符號微分方程,一、符號運算的基本操作,什么是符號運算 與數(shù)值運算的區(qū)別 數(shù)值運算中必須先對變量賦值,然后才能參與運算。 符號運算無須事先對獨立變量賦值,運算結果以標準的符號形式表達。,特點: 運算對象可以是沒賦值的符號變量,以推理解析的方式進行,因此不受計算誤差累積所帶來的困擾。 可以給出完全正確的封閉解或任意精度的數(shù)值解(當封閉解不存在時)。 符號計算指令的調用簡單,和經(jīng)典教科書公式相近。 計算所需的時間較長。 Symbolic Math Toolbox符號運算工具包通過調用Maple軟件實現(xiàn)符號計算的。 Maple軟件主要功能是符號運算,它占據(jù)符號軟件的主導地位。,2. 字符串與符號變量、符號常量,字符串對象 f = sin(x)+5x f 字符串名 sin(x)+5x 函數(shù)表達式 字符串標識 字符串表達式一定要用 單引號括起來Matlab才能識別。 用class( )來返回對象的數(shù)據(jù)類型。, 里的內容可以是函數(shù)表達式,也可以是方程。 例: f1=a*x2+b*x+c 二次三項式 f2= a*x2+b*x+c=0 方程 f3=Dy+y2=1 微分方程 函數(shù)表達式或方程可以賦給字符串或符號變量,以后方便調用。,符號變量,符號變量是內容可變的符號對象。 符號變量通常是指一個或幾個特定的字符,不是指符號表達式,甚至可以將一個符號表達式賦值給一個符號變量。 符號變量有時也稱自由變量,它的命名規(guī)則和數(shù)值變量的命名規(guī)則相同。 相關指令為: 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 h whos 也可以查看所有變量類型 從上述比較來看:當需要同時定義多個符號變量時,使用syms( )更簡潔一些。,符號常量,當數(shù)值常量作為sym( )的輸入?yún)⒘繒r,就建立了一個符號對象符號常量。 雖然看上去是一個數(shù)值量,但已經(jīng)是一個符號對象了。 例:a=3/4; b=3/4; c=sym(3/4); d=sym(3/4); whos 查看變量類型 a為實雙精度浮點數(shù)值類型;b為實字符類型;c和d都是符號對象類型。,由符號變量構成的符號函數(shù)和符號方程,符號表達式是由符號常量、符號變量、符號函數(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(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( ) 符號矩陣內容同數(shù)值矩陣 需用sym指令定義,需用 標識 注意與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)建矩陣,模仿Matlab數(shù)值矩陣的創(chuàng)建方法 需保證同一列中各元素字符串有相 同的長度。,例:A = a,2*b; 3*a, 0 A = a, 2*b 3*a, 0, 符號矩陣的修改,a.直接修改 可用、 鍵找到所要修改的矩陣,直接修改 b.指令修改 用A1=subs(A, new, old)來修改,例如:A = a, 2*b 3*a, 0,A(2,2)=4*b A1 = a, 2*b 3*a, 4*b,A2=subs(A1, c, b) A2 = a, 2*c 3*a, 4*c,將數(shù)值矩陣轉化為符號矩陣 函數(shù)調用格式:sym(A) clear A=1/3,2.5;1/0.7,2/5 A = 0.3333 2.5000 1.4286 0.4000 sym(A) ans = 1/3, 5/2 10/7, 2/5, 符號矩陣與數(shù)值矩陣的轉換,將符號矩陣轉化為數(shù)值矩陣 函數(shù)調用格式: numeric(A)? A = 1/3, 5/2 10/7, 2/5 numeric(A) ans = 0.3333 2.5000 1.4286 0.4000,由于Matlab7.0采用了重載技術,使得符號計算表達式的運算符和基本函數(shù),無論在形狀、名稱上,還是在使用方法上,都與數(shù)值計算中的運算符和基本函數(shù)幾乎完全相同。這無疑給用戶帶來了極大的方便。 例外:在符號對象的比較中,沒有”大于”、 ”大于等于”、 ”小于”、 ”小于等于”的概念,而只有是否“等于”的概念。,二、符號運算,1.符號矩陣運算,數(shù)值運算中,所有矩陣運算操作指令都比較直觀、簡單。例如:a=b+c; a=a*b ;A=2*a2+3*a-5等。 符號運算中,很多方面在形式上同數(shù)值計算都是相同的,沒必要重新學習新的規(guī)則。,2. 任意精度的數(shù)學運算,在symbolic中有三種不同的算術運算: 數(shù)值類型 matlab的浮點算術運算 有理數(shù)類型 maple的精確符號運算 vpa類型 maple的任意精度算術 運算,浮點算術運算 format long (定義輸出格式) 1/2+1/3 ans = 0.83333333333333 符號運算 sym(1/2)+(1/3) 或sym(1/2+1/3) ans = 5/6 精確解,任意精度算術運算 digits(n) 設置近似解的精讀為n位有效數(shù)字,默認32位有效數(shù)字。 vpa(x,n) 求符號解的近似解,該近似解的有效位數(shù)由n來決定。 digits(25) vpa(1/2+1/3) ans = .8333333333333333333333333,vpa(5/6,40) ans = .8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3/7) a = 1/4,exp(1) log(3), 3/7 vpa(a,10) ans = .2500000000, 2.718281828 1.098612289, .4285714286,3.符號表達式的化簡,可以對符號計算結果進行簡化,諸如因式分解、同類項合并、符號表達式的展開、符號表達式的化簡和通分等等。,合并同類項 collect(v) -將表達式v的相同次冪的項合并。 例:syms x t % 定義基本變量 f=(x-1)*(x-2)*(x-3) 定義符號表達式 collect(f) 合并f中x的同類項,expand(s) 將s中的各項進行展開,用于多項式,三角函數(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,表示成低階多項式相乘的形式,如果不能分解,則返回S本身。 例:syms x y factor(x3-y3) simplify( ) 該函數(shù)是一個強有力的具有普遍意義的工具,它利用Maple化簡規(guī)則對表達式進行簡化。 例:S=sym(x2+5*x+6)/(x+2);sqrt(16) simplify(S),simple( ) 用幾種不同的算術簡化規(guī)則對符號表達式進行簡化,使其用最少的字符來表示。 雖然并非表達式中的字符越少,表達式就越簡單,但采用這個標準往往能夠得到滿意的結果,尤其是對于包含三角函數(shù)的表達式。 例:sym x simple(cos(x)2+sin(x)2) 從結果看出,simple比較這些不同函數(shù)的結果,最終把最少字符作為標準。,diff(f) 對缺省變量求f的微分 diff(f,v) 對指定變量v求微分 diff(f,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. 符號微積分與積分變換,符號表達式的極限,limit(F,x,a) 求當xa時,表達式F的極限 limit(F, a) 默認自變量時,趨于a的極限 limit(F) 默認自變量,默認a=0 limit(F,x,a, left) 取F的左極限 limit(F,x,a, right) 取F的右極限 例:syms h n x dc=limit(sin(x+h)-sin(x)/h,h,0) %按照導數(shù)的定義求sin的導數(shù),注意:對于極限不存在,返回NaN 例: limit(1/x,x,0) limit(1/x,x,0, left) limit(1/x,x,0, right) 結果分別為: ans = NaN ans = -Inf ans = Inf,int(f) 對f表達式的缺省變量求不定積分 int(f,v) 對f表達式的v變量求不定積分 int(f,v,a,b) 對f表達式的v變量在(a,b) 區(qū)間求定積分 findsym(f) 可以找出f中的每個變量 注意:當函數(shù)的積分不存在時,Matlab7.0將簡單地返回原來的積分表達式。,符號表達式的積分,int(被積表達式,積分變量,積分上限, 積分下限) 定積分,缺省時為不定積分,例: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) 表達式f中變量 v從a變到b時的有限和 例:syms x k s1=symsum(1/k2,1,inf) s2=symsum(xk,k,0,inf) 上述都是求無窮級數(shù)的和,符號積分變換,ztrans(f) Z變換 Invztrans(f) 反Z變換 Laplace(f) 拉氏變換 Invlaplace(f) 反拉氏變換 fourier(f) 付氏變換 Invfourier(f) 反付氏變換 注意 :上述函數(shù)均缺省了部分參數(shù),例1.計算二重不定積分,F=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=ztrans(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=,結果:, 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)=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; b b = -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符號運算能夠解一般的線性方程、非線性方程、超越方程。當方程組不存在符號解時,又無其他自由參數(shù),則給出數(shù)值解。 命令格式: solve(f,v) 求一個方程f=0的解 Solve(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),計算機 格式,一般格式,例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 2x-y-z=1 g1=x+y+z=1,g2=x-y+z=2,g3=2*x-y-z=1 f=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/3,f=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/6,6. 符號微分方程求解 用一個函數(shù)可以方便地得到微 分方程的符號解 符號微分方程求解指令:dsolve 命令格式:dsolve(f,g) f 微分方程,可多至12個微分方程的求 解;g為初始條件 默認自變量為 x,可任意指定自變量t, u等 微分方程的各階導數(shù)項以大寫字母D表示,y1,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) 二階微分方程 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)的時間曲線圖,求該方程的解,三、maple函數(shù)符號運算的擴展,maple是專門進行數(shù)學運算的軟件工具, 具有超強的符號運算能力,提供了 幾乎包括所有數(shù)學領域的專用函數(shù) matlab依賴于maple的內核與函數(shù)庫,擴 展了自己的符號運算功能。 matlab還設計了對maple庫函數(shù)的調用功能 使得已有的maple數(shù)學功能,可以擴充matlab 中,作為自身符號運算能力的擴展。,1. maple內核訪問函數(shù),可以訪問maple內核的matlab函數(shù): maple 訪問maple內核函數(shù) mapleinit maple函數(shù)初始化 mpa maple函數(shù)定義 mhelp maple函數(shù)幫助命令 procread maple函數(shù)程序安裝,. maple 的調用格式,maple(表達式) 將表達式送至maple內核, 返回符號表達式結果。 maple (函數(shù),變量1,變量2) 調用maple函數(shù),傳遞給定 變量。,例1. 展開5階 bernoulli 多項式,計算 x=3 時bernoulli 數(shù)。 a=maple(bernoulli(5,x) a = -1/6*x+5/3*x3+x5-5/2*x4 a=maple(bernoulli(5,3) a = 85,例2. 化簡三角函數(shù)式sin2x+cos2x a=maple(simplify(sin(x)2+cos(x)2);) a = 1 例4. 求f(t)=e-3tsint的拉式變換 f=maple(laplace(exp(-3*t)*sin(t),t,s);) f = 1/(s+3)2+1),例4. 尋找二次多項式的完全平方 f (x) = x2+2x+2 a=maple(completesquare(x2+2*x+2) a = completesquare(x2+2*x+2),將工具包裝入內存,maple(with(student);) a=maple(completesquare(x2+2*x+2) a = (x+1)2+1,maple軟件中的所有函數(shù),在初始化時并沒有完全裝入內存,可用readlib指令把庫函數(shù)讀入內存,或用with指令將應用工具包裝入內存。 調用格式 maple(readlib(函數(shù)名);) maple(with(工具包名);),例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*y6,2. mpa maple變量定義,任何一個matlab定義的函數(shù)f,可使用mpa語句直接調用,還可把 f 定義成maple變量v。 maple的工作空間與matlab工作空間是相互獨立的, 所以f 與v是屬于不同工作空間中的變量 mpa的調用格式: mpa(v,f) mpa v f,f為matlab工作空間中已存在的變量,例. 電磁力計算公式為 試I=0.5,x=0.1鄰域展開泰勒級數(shù),3階截 斷,令常數(shù) , 1.直接調用 maple(readlib(mtaylor);) maple(mtaylor(k*I2/x2,I=0.5,x=0.1,3);),2.定義符號函數(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);) ans = 25.*k-.50e3*k*(x-.1)+.10e3*k*(

溫馨提示

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

評論

0/150

提交評論