《Matlab程式设计》PPT课件.ppt_第1页
《Matlab程式设计》PPT课件.ppt_第2页
《Matlab程式设计》PPT课件.ppt_第3页
《Matlab程式设计》PPT课件.ppt_第4页
《Matlab程式设计》PPT课件.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab程式設計,Symbolic Math toolbox,基本簡介,1.Symbolic Math與Matlab的不同。 Matlab: 運算為數值運算(numerical calculation) ex:運用quad函數函數計算方程式的積分。 Symbolic Math: 運算為符號運算(symbolic calculation) ex:計算 or微分式,quad(func,a,b,tol): 以辛普森法積分函數func,積分下限為a,上限為b,誤差設定為tol(預設為 )。,ex:計算 值 quad(sin(x),0,pi) ans = 2.0000,2.建立符號物件:,要運用Symbolic Math運算,必須先建立符號物件。,ex: a=sym(5/3) a = 5/3 a+5/3 ans = 10/3 sqrt(a) ans= 1/3*30(1/2) 若sym函數中的數值為小數,在建立符號後,sym會自動將 其轉換為分數。 ex:s=sym(0.254) ans= 127/500,在一個運算式中,只要有一項是符號物件,則matlab會把整 個運算結果化成符號式。 ex: sym(2)/7+7/12+9/7 ans= 181/84 whos Name Size Bytes Class ans 1x1 136 sym object Grand total is 7 elements using 136 bytes 上例表示,原本僅建立2為符號,結果運算之後的答案亦為 符號。,在符號運算當中,符號與數值的區分很重要,必須 要清清楚楚的瞭解,否則往後的計算會常常出現錯 誤。可用whos指令來確定。 ex:欲建立一個數學式符號f,其中一方法可用下法。 f=sym(a*x2+b*x+c) f= a*x2+b*x+c whos Name Size Bytes Class f 1x1 146 sym object Grand total is 12 elements using 146 bytes 由上可知,只有f為符號,其中的a b c x 皆仍為數值, matlab並不會主動將其變更為符號,與之前的例子結果不 同。,因此,我們通常以下面方式建立一數學式符號f,以便之後 的符號運算不會出任何差錯。 syms a b c x f=sym(a*x2+b*x+c) f= a*x2+b*x+c whos Name Size Bytes Class a 1x1 126 sym object b 1x1 126 sym object c 1x1 126 sym object f 1x1 146 sym object x 1x1 126 sym object Grand total is 20 elements using 650 bytes,3.建立符號式陣列,先將符號變數建立好,以此符號變數建立陣列則此陣列即為 符號陣列(symbolic array)。 ex: syms a b c d e m=a 0 b;b 1 0;c d e m= a, 0, b b, 1, 0 c, d, e det(m) ans= a*e+b2*d-c*b 亦可對此陣列做運算,例如求其det。,4.建立複數變數,sym函數亦可用來指定某個變數是否為實數(real number)。 當變數指定為實數,對於某些運算會相當方便。 ex: syms x y real imag(x) ans = 0 imag(y) ans = 0 因為xy接為實數,所以求其虛部0, z=x+y*i z = x+i*y conj(z) ans = x-i*y 給定一複數z,求其共軛解。 abs(z) ans = (x2+y2)(1/2) 求出z之modulus,即為複數平面上,複數向量z之長度。 (note:abs用於實數時,功用為絕對值。),syms x y unreal 將xy移除實數屬性。 whos Name Size Bytes Class ans 1x1 154 sym object x 1x1 126 sym object y 1x1 126 sym object z 1x1 134 sym object Grand total is 26 elements using 540 bytes 即使移除了實數屬性,其性質仍為符號。 abs(z) ans = abs(x+i*y) 因為x y無法確定為實數,所以無法得知其modulus,所以 以原式回應。,4.任意精準度的計算,Symbolic Math toolbox裡提供了三種不同的精準度運算。 Numeric Matlab內建的浮點數運算 Rational Maple的精確值分數運算 Vpa Symbolic Math內的任意精準運算,Vpa任意精準度運算,Vpa為variable precision arthmetic的縮寫,全名為變動精 準度的數學運算,可以使用任意精準度來算數學式。,ex:圓週率pi pi ans= 3.1416 Matlab預設小數點後面四位。 digits Digits=32 Vpa(pi) ans= 3.1415926535897932384626433832795 小數點後為32位,digits(10) Digits=10 vpa(pi) Ans= 3.1415926535 小數點後面為10位 vpa(sqrt(2)+sqrt(3),15) ans= 3.146264369941972 亦可自己指定精準度來計算某個算式。,基本代數運算,1.代數的基本處理,Ex: syms a b expand(a+b)3) ans = a3+3*a2*b+3*a*b2+b3 將(a+b) 3展開得到上式 factor(ans) ans = (a+b)3 再將上式因式分解,即為原式(a+b)3,expand亦可用於對三角函數與指數函數展開。 ex: syms a b expand(cos(a+b) ans = cos(a)*cos(b)-sin(a)*sin(b) 上式即為cos之合角公式。 ex: expand(exp(a+b2+3) ans = exp(a)*exp(b2)*exp(3),Ex: F=expand(a+b)*(a2+b2+1) F = a3+a*b2+a+a2*b+b3+b collect(F,a) ans = a3+a2*b+(1+b2)*a+b3+b collect(F,b) ans = b3+a*b2+(1+a2)*b+a3+a 以上為collect之例,將同一雙變數多項式F,變為分別為以 a為變數之多項式以及以b為變數之多項式。,simplify,Ex:化簡 syms a b x simplify(exp(4*log(sqrt(a+b) ans = (a+b)2 Ex:化簡 simplify(x2+2*x+1)/(x+1) ans = x+1,subs,Ex:將數字2帶入多項式 中。 syms x a subs(x2+2*x+1,2) ans = 9 將符號(a+1)帶入 中,並化簡之。 subs(x2+2*x+1,a+1) ans = (a+1)2+2*a+3 simplify(ans) ans = a2+4*a+4,subs函數亦可進行多個變數的代換。 Ex: syms a b x subs(sin(a+b),a,b,sym(R),x) ans = sin(R+x) 上式為分別將sin(a+b)中的ab置換成符號R及x。, Q=subs(sin(a+b),a,magic(2) Q = sin(1+b), sin(3+b) sin(4+b), sin(2+b) Matlab會自動先計算magic(2)+b的運算,在對矩陣裡的每個 元素進行sin運算。 subs(Q,sym(sqrt(2) ans = sin(1+2(1/2), sin(3+2(1/2) sin(4+2(1/2), sin(2+2(1/2) eval(ans) ans = 0.6649 -0.9559 -0.7637 -0.2693,2.多項式與分式的相關運算,與多項式運算相關之指令,poly2sym,sym2poly與coeffis Ex: syms x y P=poly2sym(1 2 3 4 5,x) P = x4+2*x3+3*x2+4*x+5 sym2poly(P) ans = 2 3 4 5 coeffs(P) ans = 5, 4, 3, 2, 1 ,Ex:多項式 syms x y Q=6*x2*y2+2*x*y-7*y3 Q = 6*x2*y2+2*x*y-7*y3 coeffs(Q) ans = 6, 2, -7 coeffs(Q,x) ans = -7*y3, 2*y, 6*y2 coeffs(Q,y) ans = 2*x, 6*x2, -7 ,若未對多項式指定某特定變數,則 matlab無法判別,即會以原多項式符 號皆當作變數,對其取係數,但不排 列大小。,Ex:多項式 syms x y coeffs(x+y)*(x2+y2),x) ? Error using = sym.maple Error, invalid arguments to coeffs Error in = sym.coeffs at 35 c = maple(coeffs,p,x); 將上多項式展開後 coeffs(expand(x+y)*(x2+y2),x) ans = y3, y2, 1, y,利用coeffs取出多項式的係數時,多項式必須為標準型式,亦即必須為展開後的式子,否則指令無法執行。,n,d=numden(expr) Ex: n,d=numden(sym(12/5) n = 12 d = 5 ,Ex: syms x R=(x3+2*x2+3*x+6)/(x2+3) R = (x3+2*x2+3*x+6)/(x2+3) n=numden(R) n = x3+2*x2+3*x+6 q=numden(R) q = x3+2*x2+3*x+6 ,使用numden指令時,若只給予一個變數,則此指令只會傳回分子部分。左例的n或是q,都皆為R的分子。,q,r=quorem(expr) Ex: q,r=quorem(x5,x2+3) q = x3-3*x r = 9*x 以下驗證 q*(x2+3)+r ans = (x3-3*x)*(x2+3)+9*x simplify(ans) ans = x5 ,方程式求解,1.簡單的solve函數 solve算是symbolic math toolbox的全能求解函數,功能與 fzero函數有很大的不同。fzero函數僅能解數值解,而solve 可解符號解。 基本指令用法,Ex:解 syms a b c x y eqn=a*x2+b*x+c eqn = a*x2+b*x+c sol=solve(eqn,x) sol = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) simplify(ans) ans = -1/2*(b-(b2-4*a*c)(1/2)/a -1/2*(b+(b2-4*a*c)(1/2)/a,以下驗證 subs(eqn,sol) ans = 1/4/a*(-b+(b2-4*a*c)(1/2)2+1/2*b/a*(-b+(b2-4*a*c)(1/2)+c 1/4/a*(-b-(b2-4*a*c)(1/2)2+1/2*b/a*(-b-(b2-4*a*c)(1/2)+c simplify(ans) ans = 0 0 ,復數解 solve(x3+x-2) ans = -1/2+1/2*i*7(1/2) -1/2-1/2*i*7(1/2) 三角函數解 solve(2*asin(3*x)-acos(5*x) ans = -5/36+1/36*97(1/2) ,Ex:解 之x解。 solve(2*cos(3*x)2-4*y,x) ans = 1/3*acos(2(1/2)*y(1/2) 1/3*pi-1/3*acos(2(1/2)*y(1/2) 以下驗證 subs(2*cos(3*x)2-4*y,ans) ans = 0 0 ,指數函數解 解 solve(x(1+log2(x)-(2*x)3) ans = 2*exp(log(2)2+log(8)*log(2)(1/2) 2/exp(log(2)2+log(8)*log(2)(1/2) ,以下驗證 subs(x(1+log2(x)-(2*x)3,ans) ans = (2*exp(log(2)2+log(8)*log(2)(1/2)(1+log(2*exp(log(2)2+log(8)*log(2)(1/2)/log(2)-64*exp(log(2)2+log(8)*log(2)(1/2)3 (2/exp(log(2)2+log(8)*log(2)(1/2)(1+log(2/exp(log(2)2+log(8)*log(2)(1/2)/log(2)-64/exp(log(2)2+log(8)*log(2)(1/2)3 simplify(ans) ans = 0 0 ,絕對值函數 Ex: syms x y sol(abs(x2-4)-2) solve(abs(x2-4)-2) ans = 6(1/2),-6(1/2),2(1/2),-2(1/2) eval(ans) ans = 2.4495 -2.4495 1.4142 -1.4142 ,求解聯立方程式,Solve亦可解決聯立方程式問題,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论