Matlab程式设计.ppt

上传人:小飞机 文档编号:6512046 上传时间:2023-11-08 格式:PPT 页数:43 大小:250.99KB
返回 下载 相关 举报
Matlab程式设计.ppt_第1页
第1页 / 共43页
Matlab程式设计.ppt_第2页
第2页 / 共43页
Matlab程式设计.ppt_第3页
第3页 / 共43页
Matlab程式设计.ppt_第4页
第4页 / 共43页
Matlab程式设计.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Matlab程式设计.ppt》由会员分享,可在线阅读,更多相关《Matlab程式设计.ppt(43页珍藏版)》请在三一办公上搜索。

1、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

2、運算,必須先建立符號物件。,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/7ans=181/84whosName Size Bytes Classans 1x1 136 sym objectGrand total is 7 elements using 136 bytes上例表示,原本僅建立

3、2為符號,結果運算之後的答案亦為符號。,在符號運算當中,符號與數值的區分很重要,必須要清清楚楚的瞭解,否則往後的計算會常常出現錯誤。可用whos指令來確定。ex:欲建立一個數學式符號f,其中一方法可用下法。f=sym(a*x2+b*x+c)f=a*x2+b*x+cwhos Name Size Bytes Class f 1x1 146 sym objectGrand total is 12 elements using 146 bytes由上可知,只有f為符號,其中的a b c x 皆仍為數值,matlab並不會主動將其變更為符號,與之前的例子結果不同。,因此,我們通常以下面方式建立一數學式符

4、號f,以便之後的符號運算不會出任何差錯。syms a b c x f=sym(a*x2+b*x+c)f=a*x2+b*x+cwhosName Size Bytes Classa 1x1 126 sym objectb 1x1 126 sym objectc 1x1 126 sym objectf 1x1 146 sym objectx 1x1 126 sym objectGrand total is 20 elements using 650 bytes,3.建立符號式陣列,先將符號變數建立好,以此符號變數建立陣列則此陣列即為符號陣列(symbolic array)。ex:syms a b c

5、 d em=a 0 b;b 1 0;c d em=a,0,b b,1,0 c,d,edet(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*iz=x+i*y conj(z)ans=x-i*y給定一複數z,求其共軛解。abs(z)ans=(x2+y2)(1/2)求出z之modulus,即為複數平面上,複數向量z之長度

6、。(note:abs用於實數時,功用為絕對值。),syms x y unreal將xy移除實數屬性。whosName Size Bytes Classans 1x1 154 sym objectx 1x1 126 sym objecty 1x1 126 sym objectz 1x1 134 sym objectGrand total is 26 elements using 540 bytes即使移除了實數屬性,其性質仍為符號。abs(z)ans=abs(x+i*y)因為x y無法確定為實數,所以無法得知其modulus,所以以原式回應。,4.任意精準度的計算,Symbolic Math t

7、oolbox裡提供了三種不同的精準度運算。Numeric Matlab內建的浮點數運算Rational Maple的精確值分數運算Vpa Symbolic Math內的任意精準運算,Vpa任意精準度運算,Vpa為variable precision arthmetic的縮寫,全名為變動精準度的數學運算,可以使用任意精準度來算數學式。,ex:圓週率pipians=3.1416Matlab預設小數點後面四位。digitsDigits=32Vpa(pi)ans=小數點後為32位,digits(10)Digits=10vpa(pi)Ans=3.1415926535小數點後面為10位vpa(sqrt(2

8、)+sqrt(3),15)ans=亦可自己指定精準度來計算某個算式。,基本代數運算,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

9、=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)2Ex:化簡 simplify(x2+2*x+1)/(x+1)ans=x+1,subs,Ex:將數字2帶入多項式 中。syms x a

10、 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的運算,在對矩陣裡的每個元素進

11、行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與coeffisEx: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

12、*x*y-7*y3Q=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.mapleError,invalid arguments to coeffsError in=sym.coeffs at 35 c=maple(coeffs,p,x)

13、;將上多項式展開後 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=12d=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指令時,若只給予一個變數,則此指令只會傳回分子部分。左例的

14、n或是q,都皆為R的分子。,q,r=quorem(expr)Ex:q,r=quorem(x5,x2+3)q=x3-3*xr=9*x以下驗證 q*(x2+3)+rans=(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+ceqn=a*x2+b*x+c sol=solve(eqn,x)sol=1/2

15、/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/

16、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)*l

17、og(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,絕對

18、值函數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亦可解決聯立方程式問題,用法與解單一方程式相同,只要多加入變數即可。,Ex:解聯立方程式 syms a b c d e f x y sol=solve(2*x+y-4,x2+y2-4)sol=x:2x1 sym y:2x1 sym,sol.xans=2 6/5 sol.yans=0 8/5 sol.x(2)ans=6/5,Ex:解聯立方程式 sol=solve(a*x+b*y-c,d*x+e*y-f,x,y)sol=x:1x1 sym y:1x1 sym sol.x;sol.yans=(-b*f+c*e)/(a*e-d*b)(a*f-d*c)/(a*e-d*b),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号