matlab symbolic

21
MATLAB MATLAB 符號運算功能 符號運算功能 (參考資料:電腦在化工上之應用 逢甲大學陳奇中老師)

Post on 17-Oct-2014

87 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Matlab Symbolic

MATLAB MATLAB –– 符號運算功能符號運算功能

(參考資料:電腦在化工上之應用 逢甲大學陳奇中老師)

Page 2: Matlab Symbolic

利用利用SymbolicSymbolic做做 微分微分(Differentiate) (Differentiate) 運算運算

•• Symbolic Math ToolboxSymbolic Math Toolbox

• Ex1: 求 之微分式

>>syms x>>f=3*x^4-x^3+2*x^2+x+1>>diff(f)ans =

12*x^3-3*x^2+4*x+1

123 234 +++− xxxx

Page 3: Matlab Symbolic

Ex2: 求 之微分式

>>syms x>>f=sin(x^2)>>diff(f)ans=

2*cos(x^2)*x

•二次微分 diff(f,2)>>syms a x>>f=sin(a*x^2)>>diff(f,2)>>diff(f,a,2) % differentiate with respect to a

)sin( 2x

Page 4: Matlab Symbolic

利用利用SymbolicSymbolic做做 積分積分(Integrate) (Integrate) 運算運算

• Ex1: 求 之積分式,即

>>syms x>>f=-2*x/(1+x^2)^2>>int(f)ans=

1/(1+x^2)

22 )1(2x

x+−

2 22 ?

(1 )x dx

x−

=+∫

Page 5: Matlab Symbolic

• Ex1: 求 之值

>>syms x>>f= x*log(1+x)>>int(f,0,1)ans=

1/4

1

0ln(1 )x x dx+∫

Page 6: Matlab Symbolic

利用利用SymbolicSymbolic求求 級數之和級數之和(Summation of series)(Summation of series)

Ex1: 求

>>syms n k>>symsum(n,0,k)ans=

1/2*(k+1)^2-1/2*k-1/2

若所求為

>>k=10>>1/2*(k+1)^2-1/2*k-1/2ans=

55

?...32100

=+++++=∑=

knk

n

?10...321010

0

=++++=∑=n

n

Page 7: Matlab Symbolic

• Ex2: 求 之值

>>syms n>>symsum(1/(n*(n+1)*(n+2)),1,inf)

ans=1/4

∑∞

= ++1 )2)(1(1

n nnn

Page 8: Matlab Symbolic

利用利用Symbolic Symbolic 展開多項式展開多項式

Ex1:

>>syms x>>expand((x-2)*(x-4))ans=

x^2-6*x+8

Ex2:>>syms x y>>expand(cos(x+y))ans=

cos(x)*cos(y)-sin(x)*sin(y)

86)4)(2( 2 +−=−− xxxx

)sin()sin()cos()cos()cos( yxyxyx −=+

Page 9: Matlab Symbolic

利用利用Symbolic Symbolic 簡化多項式簡化多項式

Ex1:

>>syms x>>simple(x^3+3*x^2+3*x+1)ans=

(x+1)^3

Ex2:>>syms x>>simple(2*cos(x)^2-sin(x)^2)ans=

3*cos(x)^2-1

323 )1(133 +=+++ xxxx

2 22cos ( ) sin ( ) ?x x− =

Page 10: Matlab Symbolic

利用利用SymbolicSymbolic求求 多項式和聯立多項式和聯立方程之解方程之解

Ex1:

>>syms a b c x>>y=solve(a*x^2+b*x+c)y=

1/2/a*(-b+(b^2-4*a*c)^(1/2))1/2/a*(-b-(b^2-4*a*c)^(1/2))

% pretty 漂亮的表示式pretty(y)

2 0, ?ax bx c x+ + = =

aacbbx

242 −±−

=

Page 11: Matlab Symbolic

• Ex2: 求解

>>syms x y>>S=solve('x+y-1','x-11*y-5')S =

x: [1x1 sym]y: [1x1 sym]

S.x = 4/3S.y = -1/3

註:請比較[x,y]=solve('x+y-1', 'x-11*y-5')之指令

=−=+

5111

yxyx

Page 12: Matlab Symbolic

• Ex3: 求解

>>syms x y z>>S=solve('x+y+z=1','x-y+z=2','x+y-z=-1')S =

x: [1x1 sym]y: [1x1 sym]z: [1x1 sym]

S.x=1/2S.y=-1/2S.z=1

註:請比較[x,y,z]=solve('x+y+z=1','x-y+z=2','x+y-z=-1')之指令

−=−+=+−=++

121

zyxzyxzyx

Page 13: Matlab Symbolic

• Ex4: 求解

>>syms x y alpha>>[x,y]=solve('x^2*y^2','x-y/2-alpha')

• Ex5:求解

>>syms u v a>>[a,u,v]=solve('u^2-v^2=a^2','u+v=1','a^2-2*a=3')

=−

=

αyx

yx

21

022

=−

=+=−

321

2

222

aavu

avu

(the results are sorted alphabetically and assigned to the outputs)

Page 14: Matlab Symbolic

利用利用SymbolicSymbolic求極限值求極限值

lim ( ) ?x a

f x→

= >> limit(f,x,a)

• Ex1:

>>syms x>>limit(sin(x)/x,x,0)

• Ex2:

>>syms x h>>limit((sin(x+h)-sin(x))/h,h,0)

0

sin( )lim ?x

xx→

=

0

sin( ) sin( )lim ?x

x h xh→

+ −=

è 1

è cos(x)

Page 15: Matlab Symbolic

利用利用SymbolicSymbolic解微分方程式解微分方程式

Ex1: solve

>>dsolve('Dy=1+y^2')

Ex2: solve , I.C.

>>dsolve('Dy=1+y^2','y(0)=1')

Ex2: solve , I.C.

>>dsolve('(Dx)^2+x^2=1','x(0)=0')

21 ydtdy

+=

21 ydtdy

+= 1)0( =y

122

=+

x

dtdx 1)0( =x

Page 16: Matlab Symbolic

• Ex 4: solve ,

>>y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x')

• Ex 5: solve

>>u=dsolve('D3u=u','u(0)=1', 'Du(0)=-1', 'D2u(0)=pi', 'x')

• Ex 6: solve , I.C.

>>[f,g]=dsolve('Df=3*f+4*g','Dg=-4*f+3*g','f(0)=0','g(0)=1')

yxdx

yd−= )2cos(2

2

,1)0( =y 0)0(' =y

,3

3

udx

ud= ,1)0( =u ,1)0(' −=u π=)0("u

+−=

+=

gfdtdg

gfdtdf

34

43,0)0( =f 1)0( =g

Page 17: Matlab Symbolic

利用利用SymbolicSymbolic求求 LaplaceLaplace轉換轉換

Ex1:

>>syms t>>laplace(t^4)ans=

24/s^5

∫∞

−=0

)(][ dtetffL ts

4)( ttf = 5

24)(s

sF =

Page 18: Matlab Symbolic

• Ex2:

>>syms t a>>laplace(exp(-a*t))ans=

1/(s+a)

atetf −=)()(

1)(as

sF+

=

Page 19: Matlab Symbolic

利用利用SymbolicSymbolic求求 反反LaplaceLaplace轉轉換換

Ex1:

>>syms s>>ilaplace(1/s^2)ans =

t

∫∞+

∞−

− =ic

ic

st dsesfi

fL )(21][1

π

2

1)(s

sf = ttF =)(

Page 20: Matlab Symbolic

• Ex2:

>>syms s a>>ilaplace(1/(s-a)^2)ans =

t*exp(a*t)

2)(1)(as

sf−

= attetF =)(

Page 21: Matlab Symbolic

利用利用SymbolicSymbolic求求 FourierFourier轉換轉換

Ex1:

>>syms x>>fourier(exp(-x^2))ans=

pi^(1/2)*exp(-1/4*w^2)

∫∞

∞−

−= dxexfF xiωω )()(

2

( ) xf x e−= 42

)( ωπω −= eF