Giáo trình Matlab - Chương 5: Symbolic Math Toolboxes
§2. KHỞI ĐỘNG TOOLBOX
1. Các đối tượng chữ: Trong phần này chúng ta sẽ xem xét cách tạo và dùng
các đối tượng chữ. Chúng ta cũng sẽ xem xét các biến chữ mặc định. Symbolic
Math Toolbox định nghĩa một kiểu dữ liệu MATLAB mới gọi là đối tượng chữ
hay sym. Bên trong, một đối tượng chữ là một cấu trúc số liệu mà nó lưu biểu
diễn chuỗi các kí tự. Symbolic Math Toolbox dùng các đối tượng chữ để biểu
diễn các biến chữ, các biểu thức chữ, các ma trận chữ.
ệm cho dù phương pháp giải khác nhau. 3. Giải phương trình vi phân: Hàm dsolve tính nghiệm bằng chữ của phương trình vi phân thường. Các phương trình được mô tả bằng các biểu thức chữ chứa các chữ cái D để chỉ các đạo hàm. Kí hiệu D2,D3,. . ,Dn tương ứng với đạo hàm cấp 1,cấp 2,..,cấp n. Như vậy D2y trong Symbolic Math Toolbox là 2 2 dx yd . Biến phụ thuộc là biến được xử lí bởi D và biến độc lập mặc định là t. Như vậy tên các biến kí tự không được có D. Có thể dùng biến độc lập khác bằng cách chỉ ra nó như là thông số cuối cùng trong lệnh dsolve. Điều kiện đầu có thể mô tả như là một phương trình phụ. Nếu điều kiện đầu không có, 113 nghiệm sẽ chứa các hằng số tích phân C1,C2 v.v. Cú pháp của dsolve được mô tả trong bảng sau: Cú pháp Phạm vi y = dsolve(‘Dyt = y0*y’) Một phương trình, một nghiệm [u,v] = dsolve(ʹDu = vʹ, ʹDv = uʹ) Hai phương trình, hai nghiệm S = dsolve(ʹDf=gʹ,ʹDg=hʹ,ʹDh=–fʹ) S.f, S.g, S.h Ba phương trình, ra là cấu trúc Nghiệm Ví dụ 1: Ta dùng lệnh: dsolve(ʹDy = 1+y^2ʹ) và có kết quả: ans = tan(t‐C1) Để mô tả điều kiện đầu, ta dùng: y = dsolve(ʹDy=1+y^2ʹ,ʹy(0)=1ʹ) và có: y = tan(t+1/4*pi) Chú ý là y ở trong vùng làm việc của MATLAB nhưng biến độc lập t thì không. Như vậy lệnh diff(y,t) gây ra lỗi. Để đặt t vào vùng làm việc của MATLAB phải dùng syms t Ví dụ 2: Các phương trình phi tuyến có thể có nhiều nghiệm, thậm chí ngay cả khi đã cho điều kiện đầu. x = dsolve(ʹ(Dx)^2+x^2=1ʹ,ʹx(0)=0ʹ) cho kết quả: x = [‐sin(t)] [ sin(t)] Ví dụ 3: Đây là một phương trình bậc 2 với 2 điều kiện đầu. Lệnh (lưu trong ct5_23.m): y = simplify(dsolve(ʹD2y=cos(2*x)–yʹ,ʹy(0)=1ʹ,ʹDy(0)=0ʹ, ʹxʹ)) tạo ra: y = ‐2/3*cos(x)^2+1/3+4/3*cos(x) Để giải phương trình: 114 π=′′=′= = )0(u,1)0(u,1)0(u u dx ud 3 3 ta dùng các lệnh sau (lưu trong ct5_24.m): u = dsolve(ʹD3u=uʹ,ʹu(0)=1ʹ,ʹDu(0)=–1ʹ,ʹD2u(0) = piʹ,ʹxʹ) 4. Hệ phương trình vi phân: Hàm dsolve có thể xử lí hệ phương trình vi phân, có hay không có điều kiện đầu. Ví dụ ta có hệ phương trình: y’=3f + 4g g’ = ‐4f + 3g Để giải hệ ta dùng lệnh (lưu trong ct5_25.m): S = dsolve(ʹDf = 3*f+4*gʹ, ʹDg = –4*f+3*gʹ) Nghiệm được tính và trả về dưới dạng cấu trúc S: S = f: [1x1 sym] g: [1x1 sym] Ta có thể xác định giá trị của f và g bằng lệnh: f = S.f f = exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2) g = S.g g = ‐exp(3*t)*(sin(4*t)*C1‐cos(4*t)*C2) Nếu ta cho cả điều kiện đầu thì viết: [f,g] = dsolve(ʹDf=3*f+4*g, Dg =–4*f+3*gʹ, ʹf(0) = 0, g(0) = 1ʹ) f = exp(3*t)*sin(4*t) g = exp(3*t)*cos(4*t) Bảng sau mô tả một vài ví dụ và cú pháp của Symbolic Math Toolbox. 115 Phương trình vi phân Lệnh MATLAB 1)0(y e)t(y4 dt dy t = =+ − y = dsolve(ʹDy+4*y = exp(‐t)ʹ,ʹy(0) = 1ʹ) 0)(y,0)0(y e)x(y4 dx yd x2 2 2 =π= =+ − y = dsolve(ʹD2y+4*y = exp(–2*x)ʹ, ʹy(0)=0ʹ, ʹy(pi) = 0ʹ, ʹxʹ) )32(K1)3(y,0)0(y )x(xy dx yd 3 1 2 2 π== = (phương trình Airy) y = dsolve(ʹD2y = x*yʹ,ʹy(0) = 0ʹ, ʹy(3) = besselk(1/3, 2*sqrt(3))/piʹ, ʹxʹ) §6. BIẾN ĐỔI TÍCH PHÂN 1. Biến đổi Fourier và Fourier ngược: a. Biến đổi Fourier: Biến đổi Fourier dùng để biến đổi phương trình vi phân thành phương trình đại số. Cú pháp: F = fourier(f) F = fourier(f,v) F = fourier(f,v,u) F = fourier(f) là dạng biến đổi Fourier của biến kí tự vô hướng f với biến độc lập mặc định là x. Kết quả trả về mặc định là hàm theo w. đổi Fourier thực hiện trên hàm của x và trả về hàm của w: f = f(x) ⇒ F = F(w) Nếu f = f(t) thì biến đổi trả về F = F(t). Hàm F(w) được định nghĩa: ∫ ∞ ∞− −= dxe)x(f)w(F iwx F = fourier(f,v) làm cho F là hàm của v thay vì của w. Trong đó: ∫ ∞ ∞− −= dxe)x(f)v(F ivx F = fourier(f,v,u) làm cho f là hàm của u và F là hàm của v thay cho biến mặc định x và w: ∫ ∞ ∞− −= due)u(f)v(F ivu 116 Ta có thể xem các biến đổi Fourier trong bảng sau: Biến đổi Fourier Lệnh MATLAB 2xe)x(f −= ∫ ∞ ∞− −− π== 4/wiwx 2edxe)x(f)w](f[F f = exp(‐x^2) fourier(f) cho: pi^(1/2)*exp(‐1/4*w^2) we)w(g −= ∫ ∞ ∞− − +== 2 iwt t1 2dte)w(g)t](g[F g = exp(‐abs(w)) fourier(g) cho 2/(1+t^2) |x|xe)x(f −= ∫ ∞ ∞− − +−== u22 ixu )u1( i4dxe)x(f)u](f[F f = x*exp(‐abs(x)) f = x*exp(‐abs(x)) cho ‐4*i/(1+u^2)^2*u b. Biến đổi Fourier ngược: Khi biết hàm ảnh Fourier dùng biến đổi Fourier ngược ta tìm được hàm gốc. Cú pháp: f = ifourier(F) f = ifourier(F,u) f = ifourier(F,v,u) f = ifourier(F) là biến đổi Fourier ngược của một đối tượng kí tự vô hướng F với biến mặc định là w. Kết quả là hàm của x: F = F(w) ⇒ f = f(x) Nếu F = F(x), ifourier trả lại hàm của t f = f(t). Trong đó: ∫ ∞ ∞−π= dwe)w(F2 1)x(f iwx f = ifourier(F,u) làm cho f thành hàm của u thay vì của biến mặc định x. Trong đó: ∫ ∞ ∞−π= dwe)w(F2 1)u(f iwu f = ifourier(F,v,u) coi F là hàm của v và f là hàm của u thay cho các biến mặc định w và x. ∫ ∞ ∞−π= dve)u(F2 1)u(f ivu 117 Biến đổi Fourier ngược Lệnh MATLAB 2 2 a4 w e)w(f = 2)ax(iwx1 eadwe)w(f)x](f[F − ∞ ∞− − ∫ π== |x|e)x(g −= ∫ ∞ ∞− − + π== 2itx1 t1dxe)x(g)t](g[F syms a real f = exp(‐w^2/(4*a^2)) F = ifourier(f) F = simple(F) cho ha*exp(‐x^2*a^2)/pi^(1/2) g = exp(‐abs(x)) ifourier(g) cho 1/(1+t^2)/pi 1e2)w(f |w| −= − )t1( )t1)(t(2 dwe)w(f)t](f[F 2 iwt1 +π −πδ− == ∫ ∞ ∞− − f = 2*exp(‐abs(w)) ‐ 1 simple(ifourier(f,t)) cho (2‐pi*Dirac(t)‐pi*Dirac(t)*t^2)/ (pi+pi*t^2) 2. Biến đổi Laplace và Laplace ngược: a. Biến đổi Laplace: Biến đổi Laplace dùng biến đổi phương trình vi phân thành phương trình đại số. Cú pháp: laplace(F) laplace(F,t) laplace(F,w,z) L = laplace(F) là biến đổi Laplace của hàm kí tự vô hướng F với biến độc lập t. Mặc định trả lại là hàm của s. Biến đổi Laplace được áp dụng cho hàm của t và trả lại hàm của s. F = F(t) ⇒ L = L(s) Nếu F = F(s) Laplace trả lại hàm của t. Trong đó: ∫ ∞ −= 0 stdte)t(F)s(L L = laplace(F,t) làm cho L thành hàm của t thay cho biến mặc định s. ∫ ∞ −= 0 txdxe)x(F)t(L L = laplace(F,w,z) làm cho L thành hàm của z và F là hàm của t thay cho các biến mặc định s và t. ∫ ∞ −= 0 zwdwe)w(F)z(L 118 Biến đổi Laplace Lệnh MATLAB 4t)t(f = ∫ ∞ − == 0 5 st s 24dte)t(F]f[L f = t^4 laplace(f) cho 24/s^5 s 1)s(g = ∫ ∞ − π== 0 st s dse)s(g)t](g[L g = 1/sqrt(s) laplace(g) cho 1/(s^(1/2))*pi^(1/2) ate)t(f −= ∫ ∞ − +== 0 tx ax 1dte)t(f)x](f[L f = exp(‐a*t) laplace(f) cho 1/(x+a) b. Biến đổi Laplace ngược: Khi có ảnh của hàm,ta có thể tìm lại hàm gốc bằng biến đổi Laplace ngược. Cú pháp: F = ilaplace(L) F = ilaplace(L,y) F = ilaplace(L,y,x) F = ilaplace(L) là biến đổi Laplace ngược của một đối tượng kí tự vô hướng L với biến mặc định là s. Trả về mặc định là hàm của t. L = L(s) ⇒ F = F(t) Nếu L = L(t), ilaplace trả về hàm của x. ∫ ∞+ ∞− = ic ic stdse)s(L)t(F F = ilaplace(L,y) làm cho F là hàm của y thay cho biến mặc định t. ∫ ∞+ ∞− = ic ic sydse)y(L)y(F F = ilaplace(L,y,x) coi F là hàm của x và L là hàm của y thay cho biến mặc định t và s. ∫ ∞+ ∞− = ic ic xydye)y(L)x(F Biến đổi Laplace ngược Lệnh MATLAB 2s 1)s(f = ∫ ∞+ ∞− − =π= ic ic st1 tdse)s(f i2 1]f[L f = 1/s^2 ilaplace(f) cho t 119 at 1)t(g −= ∫ ∞+ ∞− − =π= ic ic axxt1 xedte)t(g i2 1]g[L g = 1/(t‐a) ilaplace(g) cho x*exp(a*x) 22 au 1)u(f −= ax ic ic ax xu1 ae2 1 ae2 1due)u(g i2 1]f[L − ∞+ ∞− − ∫ −=π= f = 1/(u^2‐a^2) ilaplace(f) cho 1/(2*a*exp(a*x))‐1/(2*a*exp(‐a*x)) 3. Biến đổi z và z ngược: a. Biến đổi z: Thực hiện phép biến đổi z trên hệ thống rời rạc để đưa phương trình vi phân về phương trình đại số. Cú pháp: F = ztrans(f) F = ztrans(f,w) F = ztrans(f,k,w) F = ztrans(f) là phép biến đổi z của kí hiệu vô hướng f với biến độc lập mặc định n. Mặc định trả về hàm của z. Biến đổi z được định nghĩa: ∑∞= 0 nz )n(f)z(F Trong đó n là biến kí hiệu của f. Nếu f = f(z) thì ztrans trả về hàm của w F = F(w). F = ztrans(f,w) làm cho f thành hàm của w thay cho biến mặc định z. ∑∞= 0 nw )n(f)w(F F = ztrans(f,k,w) coi f là hàm của k ∑∞= 0 nk )k(f)w(F Biến đổi z Lệnh MATLAB 4n)n(f = 5 23 0n n )1z( )1z11z11z(zz)n(f]f[Z − +++== ∑∞ = − f = n^4 ztrans(f) cho z*(z^3+11*z^2+11*z+1)/(z‐1)^5 za)z(g = wa ww)z(g]g[Z 0z z −−== ∑ ∞ = − g = a^z ztrans(g) cho ‐w/(a‐w) ansin)n(f = f = sin(a*n) 120 2 0n n wacosw21 asinww)n(f]f[Z +−== ∑ ∞ = − ztrans(f) w*sin(a)/(1‐2*w*cos(a)+w^2) b. Biến đổi z ngược: Khi có ảnh của biến đổi z ta có thể tìm lại gốc của nó nhờ biến đổi z ngược.Cú pháp: f = iztrans(F) f = iztrans(F,k) f = iztrans(F,w,k) f = iztrans(F) là biến đổi z ngược của đối tượng kí hiệu F với biến độc lập z. Mặc định trả về hàm của n: ∫ = − =π= R|z| 1n ,....2,1ndzz)z(F i2 1)n(f Trong đó R là số dương được chọn sao cho hàm F(z) là giải tích trên và ngoài vòng tròn | z | = R. Nếu F = F(n) iztrans trả về hàm của k: f = f(k). f = iztrans(F,k) coi f là hàm của k thay cho biến mặc định n. Trong đó k là đối tượng kí hiệu vô hướng. f = iztrans(F,w,k) coi F là hàm của w thay vì của biến mặc định. Biến đổi z ngược Lệnh MATLAB 2)2z( z2)z(f −= ∫ = −− =π= R|z| n1n1 2ndzz)s(f i2 1]f[Z f = 2*z/(z‐2)^2 iztrans(f) cho n*2^n 1n2n )1n(n)n(g 2 ++ += k R|z| 1k1 1dnn)n(g i2 1]f[Z −=π= ∫= −− g = n*(n‐1)/(n^2+2*n+1) iztrans(g) cho (‐1)^k az z)z(f −= ∫ = −− =π= R|z| k1k1 adzz)z(f i2 1]f[Z f = z/(z‐a) iztrans(f) cho a^k z2z2 z exe2x )ex(x)z,x(f +− −= ∫ = −− =π= R|x| kz1k1 edxz)z,x(f i2 1]f[Z f = x*(x‐exp(z))/(x^2‐2*x*exp(z) + exp(2*z)) iztrans(f) cho exp(z)^k 121
File đính kèm:
- giao_trinh_matlab_chuong_5_symbolic_math_toolboxes.pdf