1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Matlab: Chương 2 - ĐHBK Hà Nội

97 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 97
Dung lượng 520,83 KB

Nội dung

Bài giảng Matlab: Chương 2 cung cấp cho người học những kiến thức cơ bản về sử dụng Symbolic Math Toolbox trong Matlab. Những nội dung chính được trình bàu trong bài giảng gồm có: Các đối tượng Symbolic, tạo các biến và các biểu thức Symbolic, thay thế các biến symbolic,... Mời các bạn cùng tham khảo.

Chương 2: Sử dụng Symbolic Math Toolbox Matlab CuuDuongThanCong.com Viện Toán ứng dụng Tin học, ĐHBK Hà Nội Hà Nội, tháng năm 2015 https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 1/1 Nội dung CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 2/1 Mở đầu Tổng quan Phần mềm "Symbolic Math Toolbox" kết hợp tính tốn "symbolic" vào môi trường số phần mềm Matlab Các cơng cụ bổ sung cho khả tính tốn số học đồ họa Matlab thêm số dạng tính tốn tốn học, tóm tắt bảng sau: Tiện ích Nội dung Giải tích (Calculus) Các phép tính đạo hàm, tích phân, giới hạn, tổng khai triển chuỗi Taylor Đại số tuyến tính (Linear Algebra) Nghịch đảo, định thức, giá trị riêng, SVD dạng tắc ma trận symbolic Rút gọn (Simplification) Các phương pháp rút gọn biểu thức đại số Nghiệm phương trình Nghiệm symbolic nghiệm số phương trình đại số phương trình vi phân (Solutions of Equations) Các hàm toán học đặc biệt Các hàm đặc biệt toán học ứng dụng (Specials Mathematical Functions) cổ điển Các phép biến đổi (Transforms) Fourier, Laplace, z dạng biến đổi ngược tương ứng CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 3/1 Các đối tượng Symbolic Các kiểu liệu Matlab đối tượng Symbolic tương ứng Ví dụ sau minh họa khác liệu chuẩn Matlab, ví dụ double đối tượng symbolic tương ứng Ví dụ Câu lệnh Matlab: Mặt khác, câu lệnh: >> sqrt(2) >> a=sqrt(sym(2)) cho kết số cho kết ans = 1.4142 a= 2^(1/2) CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 4/1 Các đối tượng Symbolic Các kiểu liệu Matlab đối tượng Symbolic tương ứng Chú ý 1.1 Matlab cho kết 2^(1/2) nghĩa /2 , cách sử dụng ký hiệu symbolic cho phép toán bậc hai, mà khơng tính tốn giá trị số cụ thể Matlab lưu biểu thức symbolic dạng string thay cho /2 Ta nhận giá trị số đối tượng symbolic cách dùng lệnh double: >> double(a) ans = 1.4142 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 5/1 Các đối tượng Symbolic Các kiểu liệu Matlab đối tượng Symbolic tương ứng Chú ý 1.1 (tiếp) Khi ta tạo phân số dạng symbolic, Matlab lưu tử số mẫu số Ví dụ >> sym(2)/sym(5) ans = 2/5 Matlab thực phép tính đối tượng symbolic khác với kiểu liệu chuẩn Ví dụ: >> 2/5+1/3 ans = 0.7333 CuuDuongThanCong.com >> sym(2)/sym(5)+sym(1)/sym(3) ans = 11/15 https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 6/1 Tạo biến biểu thức Symbolic Các lệnh sym syms sym syms Cho phép ta xây dựng, biến đổi số, biến đối tượng thành symbolic Ví dụ Lệnh >> x=sym(’x’) >> a=sym(’alpha’) tạo biến symbolic x hiển thị x a hiển thị alpha CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 7/1 Tạo biến biểu thức Symbolic Các lệnh sym syms Ví dụ Giả sử ta muốn dùng symbolic để biểu diễn "tỷ lệ vàng" ρ = √ 1+ lệnh: >> rho=sym(’(1+sqrt(5))/2’) Bây ta thực phép tốn khác với rho Ví dụ >> f=rho^2-rho-1 f = (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2 Sau rút gọn biểu thức f thu >> simplify(f) ans = CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 8/1 Tạo biến biểu thức Symbolic Các lệnh sym syms Ví dụ Giả sử muốn giải phương trình bậc hai f = ax2 + bx + c Một cách tiếp cận dùng lệnh f=sym(’a*x^2+b*x+c’) gắn biểu thức symbolic ax2 + bx + c cho biến f Tuy nhiên, trường hợp Symbolic Math Toolbox không tạo biến tương ứng với số hạng a, b, c, x biểu thức Để thực phép tốn symbolic (ví dụ tích phân, đạo hàm, thay thế, etc) f , ta phải tạo biến cách rõ ràng Cách tốt dùng lệnh: >> a=sym(’a’); b=sym(’b’); c=sym(’c’) ; x=sym(’x’); đơn giản syms a b c x; CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 9/1 Tạo biến biểu thức Symbolic Lệnh findsym Để xác định biến symbolic có mặt biểu thức, sử dụng lệnh findsym Ví dụ Cho biểu thức symbolic f g xác định >> syms a b n t x z f = x^n; g = sin(a*t + b); Khi đó, ta tìm biến symbolic có mặt f lệnh >> findsym(f) ans = n,x CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 10/1 Giải phương trình Giải phương trình vi phân Cú pháp dsolve mô tả bảng sau: Cú pháp y=dsolve(’Dy=y0*y’) [u,v]=dsolve(’Du=v’,’Dv=u’) S=dsolve(’Df=g’,’Dg=h’,’Dh=-f’) CuuDuongThanCong.com Phạm vi Một phương trình, nghiệm Hai phương trình, hai nghiệm Ba phương trình, nghiệm cấu trúc https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 83/1 Giải phương trình Giải phương trình vi phân Ví dụ Câu lệnh >> dsolve(’Dy=1+y^2’) sử dụng y biến phụ thuộc t biến độc lập mặc định Kết quả: ans = tan(t+C1) Để thêm điều kiện đầu, ta dùng >> y = dsolve(’Dy=1+y^2’,’y(0)=1’) y = tan(t+1/4*pi) CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 84/1 Giải phương trình Giải phương trình vi phân Ví dụ Các phương trình phi tuyến có nhiều nghiệm, điều kiện đầu cho: >> x = dsolve(’(Dx)^2+x^2=1’,’x(0)=0’) x = [ sin(t)] [ -sin(t)] CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 85/1 Giải phương trình Giải phương trình vi phân Ví dụ Xét phương trình vi phân cấp hai với hai điều kiện đầu Các lệnh >> y = dsolve(’D2y=cos(2*x)-y’,’y(0)=1’,’Dy(0)=0’, ’x’); >> simplify(y) tạo ans = 4/3*cos(x)-2/3*cos(x)^2+1/3 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 86/1 Giải phương trình Giải phương trình vi phân Ví dụ 10 Điều mấu chốt ví dụ bậc phương trình điều kiện đầu Để giải phương trình vi phân thường   d3 y =u dx3  u(0) = 1, u (0) = −1, u (0) = π ta sử dụng lệnh >> u = dsolve(’D3u=u’,’u(0)=1’,’Du(0)=-1’,’D2u(0) = pi’,’x’) u = (pi*exp(x))/3 - (cos((3^(1/2)*x)/2)*(pi/3 - 1))/exp(x/2) - (3^(1/2)*sin((3^(1/2)*x)/2)*(pi + 1))/(3*exp(x/2)) CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 87/1 Giải phương trình Giải hệ phương trình vi phân Hàm dsolve giải hệ phương trình vi phân có khơng có điều kiện đầu Ví dụ, xét hệ hai phương trình tuyến tính cấp >> S = dsolve(’Df = 3*f+4*g’, ’Dg = -4*f+3*g’) Nghiệm tính có dạng cấu trúc S Ta xác định giá trị f g cách nhập f = S.f f = exp(3*t)*(C1*sin(4*t)+C2*cos(4*t)) g = S.g g = exp(3*t)*(C1*cos(4*t)-C2*sin(4*t)) CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 88/1 Giải phương trình Giải hệ phương trình vi phân Nếu ta muốn thêm điều kiện đầu: >> [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) Một số ví dụ khác : Phương trình vi phân dy + 4y(t) = e−t dt y(0) = d2 y + 4y(x) = e−2x dx2 y(0) = 0, y(π) = CuuDuongThanCong.com Lệnh Matlab y=dsolve(’Dy+4*y=exp(-t)’,’y(0)=1’) y=dsolve(’D2y+4*y=exp(-2*x)’,’y(0)=1’,’y(pi)=0’ ,’x’) https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 89/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Cú pháp F = fourier(f) F = fourier(f,v) F = fourier(f,u,v) Mô tả F=fourier(f) biến đổi Fourier biểu thức symbolic vô hướng f với biến mặc định x Kết trả mặc định hàm theo biến w: f = f (x) =⇒ F = F (w) Hàm F (w) định nghĩa CuuDuongThanCong.com +∞ f (x)e−iwx dx F (w) = −∞ https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 90/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Mơ tả (tiếp) Nếu f = f (w) kết trả hàm theo t : F = F (t) F = fourier(f,v) tạo hàm F đối symbolic v thay biến mặc định w +∞ f (x)e−iwx dx F (v) = −∞ F = fourier(f,u,v) tạo f hàm theo u F hàm theo v thay biến mặc định tương ứng x w CuuDuongThanCong.com +∞ f (x)e−iwu du F (v) = −∞ https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 91/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Ví dụ 11 Biến đổi Fourier f (x) = e−x Lệnh Matlab f=exp(-x^2); +∞ f (x)e−iwx dx = F [f ](w) = √ w2/4 πe− fourier(f) trả −∞ pi^(1/2)/exp(w^2/4) exp(-abs(w)) g(w) = e−|w| +∞ g(w)e−iwt dt = F [g](t) = CuuDuongThanCong.com + t2 fourier(g) trả −∞ 2/(v^2 + 1) https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 92/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Ví dụ (tiếp) Biến đổi Fourier f (x) = x.e−x Lệnh Matlab syms u x +∞ f (x)e−xu dx F [f ](u) = f=x*exp(-abs(x)) trả −∞ -(4*u*i)/(u^2 + 1)^2 −x2 |v| sin v f (x, v) = e +∞ syms v u; syms x real v f (x, v)e−ivu dv F [f (v)] (u) = f = exp(-x^2*abs(v))*sin(v)/v; −∞ = − arctan CuuDuongThanCong.com u−1 u+1 + − arctan x2 x2 fourier(f) piecewise([x 0, atan((u + 1)/x^2) atan(1/x^2*(u - 1))]) https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 93/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Cú pháp f = ifourier(F) f = ifourier(F,u) f = ifourier(F,v,u) Mô tả f = ifourier(F) biến đổi Fourier ngược biểu thức symbolic vô hướng F với biến mặc định w Kết trả mặc định hàm x CuuDuongThanCong.com F = F (w) =⇒ f = f (x) https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 94/1 Biến đổi tích phân Biến đổi Fourier biến đổi Fourier ngược Mô tả (tiếp) Nếu F = F (x), ifourier trả hàm theo đối t : f = f (t) Bằng cách định nghĩa +∞ f (x) = 2π F (w)eiwx dw, −∞ f = ifourier(F,u) tạo hàm f (u) thay theo biến mặc định x +∞ f (u) = 2π F (w)eiwu dw −∞ f = ifourier(F,v,u) tạo hàm f theo đối u F hàm theo đối v theay biến mặc định x w CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 95/1 Biến đổi tích phân (Tự đọc help) Biến đổi Laplace biến đổi Laplace ngược CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 96/1 Biến đổi tích phân (Tự đọc help) Biến đổi Z biến đổi Z− ngược CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng Symbolic Math Toolbox Matlab 97/1 ... khác hàm toán học: >> syms x >> f = x^ 3-6 *x ^2+ 11*x-6 >> g = (x-1)*(x -2 ) *(x-3) >>h = -6 +(11+ (-6 +x)*x)*x Nhập vào lệnh >> pretty(f), pretty(g), pretty(h) ta nhận x - x + 11 x - (x - 1) (x - 2) (x -. .. CuuDuongThanCong.com f a*(x+y) (x-1)*(x -2 ) *(x-3) x*(x*(x-6)+11 )-6 exp(a+b) cos(x+y) cos(3*acos(x)) expand(f) a*x+a*y x^ 3-6 *x ^2+ 11*x-6 x^ 3-6 *x ^2+ 11*x-6 exp(a)*exp(b) cos(x)*cos(y)-sin(x)*sin(y) 4*x^ 3-3 *x https://fb.com/tailieudientucntt... thành tích đa thức hữu tỷ bậc nhỏ Nếu f bất khả qui, Matlab trả kết f Sau vài ví dụ CuuDuongThanCong.com f x^ 3-6 *x ^2+ 11*x-6 x^ 3-6 *x ^2+ 11*x-5 x^6+1 factor(f) (x-1)*(x -2 ) *(x-3) x^ 3-6 *x ^2+ 11*x-5

Ngày đăng: 23/06/2021, 09:01