1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Chương 2: Sß dụng Symbolic Math Toolbox trong Matlab

24 5 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

Tiêu đề Sử Dụng Symbolic Math Toolbox Trong Matlab
Tác giả Trần Minh Toàn
Trường học Đại Học Bách Khoa Hà Nội
Thể loại bài viết
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 24
Dung lượng 441,42 KB

Nội dung

Các công cụ này bổ sung cho khả năng tínhtoán số học và đồ họa của Matlab thêm một số dạng của tính toán toán học,được tóm tắt dưới bảng sau:Tiện ích Nội dungGiải tích Calculus Các phép

Mở đầu Sử dụng Symbolic Math Toolbox Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số 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 (Solutions of Equations) trình đại số phương trình vi phân Các hàm tố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 Chương 2: Sử dụng Symbolic Math Toolbox Matlab Trần Minh Tồn (1) Viện Tốn ứng dụng Tin học, ĐHBK Hà Nội Hà Nội, tháng năm 2012 (1) Email: toantm24@gmail.com Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Trần Minh Toàn (SAMI-HUST) 1/97 Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Các đối tượng Symbolic Các đối tượng Symbolic Các kiểu liệu Matlab đối tượng Symbolic tương ứng 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 3/97 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ể 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) Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 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 4/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 5/97 Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Các đối tượng Symbolic Tạo biến biểu thức Symbolic Các kiểu liệu Matlab đối tượng Symbolic tương ứng Các lệnh sym syms 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 syms Cho phép ta xây dựng, biến đổi số, biến đối tượng thành symbolic >> sym(2)/sym(5) ans = 2/5 Ví dụ Lệnh 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 >> x=sym(’x’) >> a=sym(’alpha’) tạo biến symbolic x hiển thị x a hiển thị alpha >> sym(2)/sym(5)+sym(1)/sym(3) ans = 11/15 Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Trần Minh Toàn (SAMI-HUST) 6/97 Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Tạo biến biểu thức Symbolic Tạo biến biểu thức Symbolic Các lệnh sym syms Các lệnh sym syms Ví dụ √ 1+ Giả sử ta muốn dùng symbolic để biểu diễn "tỷ lệ vàng" ρ = lệnh: Ví dụ >> rho=sym(’(1+sqrt(5))/2’) f=sym(’a*x^2+b*x+c’) 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=rho^2-rho-1 f = (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2 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 toá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: Sau rút gọn biểu thức f thu >> a=sym(’a’); >> simplify(f) ans = Trần Minh Toàn (SAMI-HUST) đơn giản syms a b c x; Bây ta thực phép tốn khác với rho Ví dụ Sử dụng Symbolic Math Toolbox Matlab 7/97 8/97 b=sym(’b’); c=sym(’c’) ; x=sym(’x’); Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 9/97 Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Tạo biến biểu thức Symbolic Thay biến symbolic Lệnh findsym Lệnh subs Ta thay giá trị số cho biến symbolic cách sử dụng lệnh subs Để xác định biến symbolic có mặt biểu thức, sử dụng lệnh findsym Ví dụ Ví dụ Để thay giá trị x = biểu thức symbolic Cho biểu thức symbolic f g xác định f = 2*x^2 - 3*x + >> syms a b n t x z f = x^n; g = sin(a*t + b); nhập vào lệnh Khi đó, ta tìm biến symbolic có mặt f lệnh >> subs(f,2) trả giá trị f (2): >> findsym(f) ans = n,x Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox ans= Sử dụng Symbolic Math Toolbox Matlab 10/97 Trần Minh Toàn (SAMI-HUST) Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Thay biến symbolic Thay biến symbolic Lệnh subs Biến symbolic mặc định Chú ý 1.2 Nếu ta không xác định biến để thay thế, Matlab chọn biến mặc định theo qui tắc sau Đối với biến chữ cái, Matlab chọn biến gần với x bảng chữ Nếu có hai biến gần x nhau, Matlab chọn biến đứng sau bảng chữ Trong ví dụ trên, hai lệnh subs(f,3) subs(f,x,3) cho kết giống Để thay ma trận vào biểu thức symbolic f , sử dụng lệnh polyvalm(sym2poly(f), A), thay x A, thay số f số nhân với ma trận đơn vị Khi biểu thức có nhiều biến symbolic, ta xác định biến cần thay Ví dụ, để thay giá trị x = biểu thức symbolic Ta sử dụng lệnh findsym để xác định biến mặc định Ví dụ >> syms x y >> f = x^2*y + 5*x*sqrt(y) sử dụng câu lệnh >> syms s t >> g = s + t; >> findsym(g,1) >> subs(f, x, 3) trả biến mặc định: thu ans = t ans = 9*y+15*y^(1/2) Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 11/97 12/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 13/97 Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Biểu thức symbolic dạng dấu chấm động Biểu thức symbolic dạng hữu tỷ Xét giá trị ban đầu Matlab Tùy chọn ’r’ >> t = 0.1 >> sym(t,’r’) Hàm sym có bốn tùy chọn cho việc trả biểu diễn symbolic giá trị số lưu trữ t trả dạng hữu tỷ 1/10 Tùy chọn ’f’ Đây tùy chọn mặc định hàm sym Nghĩa là, gọi sym mà khơng có thành phần thứ hai giống sử dụng sym với cùy chọn ’r’: >> sym(t,’f’) trả biểu diễn symbolic dạng dấu chấm động sym(t) ans = 1/10 ans = 3602879701896397/36028797018963968 Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 14/97 Trần Minh Toàn (SAMI-HUST) Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 15/97 Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Biểu thức symbolic dạng hữu tỷ Biểu thức symbolic dạng thập phân Tùy chọn ’d’ Tùy chọn ’e’ Tùy chọn thứ tư ’d’ trả dạng thập phân mở rộng đến số chữ số có nghĩa, xác định hàm digits: Tùy chọn ’e’ trả dạng hữu tỷ t cộng với sai khác giá trị thực dạng hữu tỷ t giá trị thực (máy) dạng dấu chấm động dạng eps (độ xác tương đối dạng dấu chấm động) sym(t,’d’) ans = 10000000000000000555111512312578 sym(t,’e’) ans = 1/10+eps/40 Giá trị mặc định digits 32 Nếu muốn dạng ngắn hơn, ta dùng lệnh sau: digits(7) sym(t,’d’) ans = 1000000 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 16/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 17/97 Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Biến đổi ma trận symbolic ma trận dạng số Biến đổi ma trận symbolic ma trận dạng số Một tính riêng lệnh sym chuyển ma trận dạng số dạng symbolic Ví dụ, lệnh Áp dụng lệnh sym lên A: >> A = sym(A) >> A = hilb(3) ta nhận dạng symbolic ma trận Hilbert cấp 3: tạo ma trận Hilbert cấp 3: A = A = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5] 0.3333 0.2500 0.2000 Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 18/97 Trần Minh Toàn (SAMI-HUST) Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 19/97 Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Tạo biến thực phức Xóa biến khơng gian làm việc nhân Maple Lệnh sym cho phép ta định rõ tính chất biến symbolic cách sử dụng tùy chọn ’real’ Các câu lệnh Khi ta tổ chức biến thực x với lệnh >> x = sym(’x’,’real’); y = sym(’y’,’real’); x trở thành đối tượng symbolic không gian làm việc Matlab biến thực dương nhân làm việc Maple Nếu muốn bỏ thuộc tính thực x, nhập vào >> syms x real đơn giản >> syms x unreal >> syms x y real >> z = x + i*y Nếu bạn muốn xóa tồn định nghĩa biến không gian làm việc nhân Maple, nhập vào tạo biến thực x y Do đó, z biến phức ta thực lệnh >> maple restart Chú ý lệnh conj(x), conj(z), expand(z*conj(z)) >> clear x trả xóa biến x không gian làm việc cùa Matlab Nếu sau ta nhập syms x mà khơng xóa x mơi trường làm việc nhân Maple Matlab xem x số thực dương x, x-i*y, x^2+y^2 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 20/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 21/97 Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Tạo hàm trừu tượng Dùng sym để truy cập hàm Maple Nếu muốn tạo hàm trừu tượng f (x), nhập vào >> f = sym(’f(x)’) Ta truy cập hàm tính giai thừa k cách sử dụng lệnh sym Khi đó, f hoạt động f (x) xử lý lệnh Matlab Ví dụ, để xây dựng tỷ sai phân cấp 1, viết >> kfac = sym(’k!’) >> df = (subs(f,’x’,’x+h’) - f)/’h’ Khi đó, để tính 5! n!, viết >> syms k n >> subs(kfac,k,5), subs(kfac,k,n) ans = 120 ans = factorial(n) >> syms x h >> df = (subs(f,x,x+h)-f)/h trả df = (f(x+h)-f(x))/h Ứng dụng hữu ích phép biến đổi Fourier, Laplace z− Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 22/97 Trần Minh Toàn (SAMI-HUST) Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Tổng quan Các đối tượng Symbolic Tạo biến biểu thức Symbolic Thay biến symbolic Biến đổi symbolic số Biến đổi symbolic số Biến đổi symbolic số Tạo ma trận symbolic Tạo hàm tốn học dạng symbolic Ta tạo ma trận vòng A từ phần tử a, b, c cách nhập Để thay A(2,3) beta b alpha, dùng lệnh >> syms a b c >> A=[a b c; b c a; c a b] >> syms alpha beta; >> A(2,3) = beta; >> A = subs(A,b,alpha) thu [ a, b, c] [ b, c, a] [ c, a, b] A = Sử dụng Symbolic Math Toolbox Matlab Tạo M-file Các lệnh M-file cho phép ta dùng hàm tổng quát  Giả sử, muốn tạo hàm  sin(x) x 6= sinc(x) = x  x=0 syms x y z r = sqrt(x^2 + y^2 + z^2) t = atan(y/x) f = sin(x*y)/(x*y) tạo biểu thức symbolic r, t, f Ta dùng diff, int, subs, hàm khác Symbolic Math Toolbox để xử lý biểu thức [ a, alpha, c] [ alpha, c, beta] [ c, a, alpha] Trần Minh Toàn (SAMI-HUST) Sử dụng biểu thức symbolic >> >> >> >> A = 24/97 23/97 Trần Minh Tồn (SAMI-HUST) ta viết file sinc.m có nội dung sau function z = sinc(x) if isequal(x,sym(0)) z = 1; else z = sin(x)/x; end Sử dụng Symbolic Math Toolbox Matlab 25/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Đạo hàm Đạo hàm Để minh họa việc tính đạo hàm sử dụng Symbolic Math Toolbox, trước hết tạo biểu thức symbolic Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Để tính đạo hàm cấp hai f , nhập vào >> syms x >> f = sin(5*x) >> diff(f,2) ans = (-25)*sin(5*x) Khi đó, lệnh Ta nhận kết cách dùng lệnh >> diff(f) >> diff(diff(f)) ans = (-25)*sin(5*x) tính đạo hàm f theo đối x: >> ans = 5*cos(5*x) Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 27/97 Trần Minh Tồn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Đạo hàm Đạo hàm hàm nhiều biến Chú ý 2.1 Sử dụng Symbolic Math Toolbox Matlab 28/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Để tính đạo hàm riêng hàm nhiều biến, ta phải xác định biến muốn lấy đạo hàm Ví dụ, cho biểu thức symbolic Khi lấy đạo hàm số, trước hết ta phải định nghĩa số biểu thức symbolic Ví dụ >> syms s t >> f = sin(s*t) >> c = sym(’5’); >> diff(c) ans = Khi đó, lệnh >> diff(f,t) Nếu ta nhập tính đạo hàm riêng f theo đối t Kết >> diff(5) ans = s*cos(s*t) trả ans = [] Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab Bởi biểu thức symbolic 29/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 30/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Đạo hàm hàm nhiều biến Đạo hàm hàm nhiều biến Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Để tính đạo hàm f theo đối s, nhập vào >> diff(f,s) Để tính đạo hàm riêng cấp hai theo đối t, nhập vào trả >> diff(f, t, 2) ans = t*cos(s*t) trả ans = -s^2*sin(s*t) Nếu ta không rõ biến lấy đạo hàm, Matlab chọn biến mặc định xác định lệnh symvar: Chú ý lệnh diff(f,2) cho kết t biến mặc định >> symvar(f, 1) ans = t Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 31/97 Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Giới hạn Giới hạn phía Symbolic Math Toolbox cho phép tính giới hạn hàm số cách trực tiếp Các lệnh Để tính giới hạn trái lim x→0− Sử dụng Symbolic Math Toolbox Matlab 32/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân x , nhập vào |x| >> limit(x/abs(x),x,0,’left’) ans = -1 x Để tính giới hạn phải lim , nhập vào x→0+ |x| >> syms h n x >> limit((cos(x+h) - cos(x))/h, h, 0) trả ans = -sin(x) >> limit(x/abs(x),x,0,’right’) ans = Vì giới hạn trái khác giới hạn phải nên giới hạn phía khơng tồn Trong trường hợp này, Matlab trả giá trị trừu tượng NaN (not a number) Ví dụ, >> limit((1 + x/n)^n, n, inf) trả >> limit(x/abs(x),x,0) ans = NaN ans = exp(x) Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 33/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 34/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Tích phân Tích phân Ta xem hoạt động lệnh Hàm toán  học Z  log x n = −1 xn dx = xn+1  ngược lại n+1 π/2 Z sin(2x)dx = Nếu f biểu thức symbolic >> int(f) trả tích phân bất định hay nguyên hàm f Tương tự phép tính đạo hàm, >> int(f,v) sử dụng đối tượng symbolic v biến lấy tích phân g = cos at + b Z g(t)dt = sin(at + b) a Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 35/97 int(x^n) hay int(x^n,x) int(sin(2*x),0,pi/2) hay int(sin(2*x),x,0,pi/2) g=cos(a*t+b) int(g) hay int(g,t) Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Tích phân Tích phân Một vấn đề tích phân symbolic "giá trị" tham số +∞ Z Ví dụ, ta muốn tính tích phân I = e−ax dx mà không gắn dấu cho a, Sử dụng Symbolic Math Toolbox Matlab 36/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Nếu ta muốn tính tích phân với a số thực bất kỳ: >> syms a real >> f=exp(-a*x^2); >> F = int(f, x, -inf, inf) F = piecewise([1/a^(1/2)*pi^(1/2), signum(a) = 1],[Inf, otherwise]) −∞ Matlab coi a số phức cho kết dạng phức Nếu ta quan tâm trường hợp a số thực dương, ta tính tích phân sau: Ta dùng lệnh pretty(F) để nhận dạng dễ đọc hơn: >> syms a positive; { { { { { { { Bây ta sử dụng lệnh >> syms x; >> f = exp(-a*x^2); >> int(f,x,-inf,inf) trả ans = 1/(a)^(1/2)*pi^(1/2) Trần Minh Toàn (SAMI-HUST) int bảng sau: Lệnh Matlab Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân 1/2 pi - signum(a~) = 1/2 a~ Inf otherwise Ký hiệu ~ sau a cho ta biết a số thực signum(a~) dấu a Sử dụng Symbolic Math Toolbox Matlab 37/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 38/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Tích phân Tích phân Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Ta sử dụng lệnh int để tính tích phân nhiều lớp Ví dụ, để tính tích Z Z 1−x2 phân lớp I = xydydx ta dùng lệnh sau +∞ Z e−ax dx với a số phức, nhập vào Để tính tích phân I = 1−x −∞ >> syms a x unreal >> f = exp(-a*x^2); >> F = int(f, x, -inf, inf) trả F = piecewise([a < 0, Inf], [(0 syms x y; >> firstint=int(x*y,y,1-x,1-x^2) firstint = (x^2*(x - 1)^2*(x + 2))/2 >> answer=int(firstint,x,0,1) answer = 1/24 gọn >> int(int(x*y,y,1-x,1-x^2),x,0,1) ans = 1/24 39/97 Trần Minh Tồn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Tích phân Tính tổng Sử dụng Symbolic Math Toolbox Matlab 40/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Ta tính tổng symbolic cách sử dụng lệnh symsum Ví dụ, chuỗi 1+ Hồn tồn tương tự ta tính tích phân lớp, ví dụ Z3 3−x Z 3−x−y Z I= xyzdzdydx 0 có tổng π2 , chuỗi hàm + x + x2 + , với |x| < Các tổng tính lệnh (1 − x) lệnh có tổng >> syms x y z; >> I=int(int(int(x*y*z,z,0,3-x-y),y,0,3-x),x,0,3) I = 81/80 >> syms x k >> s1 = symsum(1/k^2,1,inf) >> s2 = symsum(x^k,k,0,inf) s1 = 1/6*pi^2 s2 = -1/(x-1) Trần Minh Toàn (SAMI-HUST) 1 + + ··· 22 Sử dụng Symbolic Math Toolbox Matlab 41/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 42/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Giải tích Chuỗi Taylor Chuỗi Taylor Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Các câu lệnh Các câu lệnh >> syms x >> f = 1/(5+4*cos(x)) >> T = taylor(f,8) >> syms x >> g = exp(x*sin(x)) >> t = taylor(g,12,2); cho kết tạo 12 số hạng đầu khác chuỗi Taylor lân cận x = g Tiếp theo, ta vẽ đồ thị hai hàm g xấp xỉ Taylor t nó: T = 1/9+2/81*x^2+5/1458*x^4+49/131220*x^6 xd = 1:0.05:3; yd = subs(g,x,xd); ezplot(t, [1,3]); hold on; plot(xd, yd, ’r-.’) title(’Taylor approximation vs actual function’); legend(’Taylor’,’Function’) chứa tất số hạng có bậc nhỏ khai triển chuỗi Taylor lân cận x = (khai triển Maclaurin) hàm f (x): ∞ X f (n) (a) (x − a)n n! n=0 Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Trần Minh Toàn (SAMI-HUST) 43/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Rút gọn Sử dụng Symbolic Math Toolbox Matlab 44/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Rút gọn Xét biểu thức dạng symbolic 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 collect Nhập vào lệnh xem f đa thức biến symbolic x, gộp tất hệ số bậc x Sau vài ví dụ Câu lệnh >> collect(f) >> pretty(f), pretty(g), pretty(h) f (x-1)*(x-2)*(x-3) x*(x*(x-6)+11)-6 (1+x)*t + x*t ta nhận x - x + 11 x - (x - 1) (x - 2) (x - 3) -6 + (11 + (-6 + x) x) x Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 45/97 Trần Minh Toàn (SAMI-HUST) collect(f) x^3-6*x^2+11*x-6 x^3-6*x^2+11*x-6 2*x*t+t Sử dụng Symbolic Math Toolbox Matlab 46/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Rút gọn Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Rút gọn expand Câu lệnh horner >> expand(f) Câu lệnh khai triển biểu thức f cách áp dụng tính chất phân phối phép nhân lên phép cộng đồng thức phép cộng mô tả bảng sau: 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)) >> horner(f) biến đổi đa thức thành dạng Horner hay biểu diễn lồng Một số ví dụ 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 Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab f x^3-6*x^2+11*x-6 1.1+2.2*x+3.3*x^2 47/97 horner(f) x*(x*(x - 6) + 11) - x*((33*x)/10 + 11/5) + 11/10 Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Rút gọn Sử dụng Symbolic Math Toolbox Matlab 48/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Rút gọn factor simplify Nếu f đa thức với hệ số hữu tỷ, lệnh Hàm simplify hữu dụng việc rút gọn biểu thức nói chung Sau số ví dụ: >> factor(f) f x*(x*(x-6)+11)-6 (1-x^2)/(1-x) (1/a^3+6/a^2+12/a+8)^(1/3) syms x y positive log(x*y) exp(x) * exp(y) cos(x)^2 + sin(x)^2 biểu diễn f 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ụ f x^3-6*x^2+11*x-6 x^3-6*x^2+11*x-5 x^6+1 Trần Minh Toàn (SAMI-HUST) factor(f) (x-1)*(x-2)*(x-3) x^3-6*x^2+11*x-5 (x^2+1)*(x^4-x^2+1) Sử dụng Symbolic Math Toolbox Matlab 49/97 Trần Minh Toàn (SAMI-HUST) simplify(f) x^3-6*x^2+11*x-6 x+1 ((2*a+1)^3/a^3)^(1/3) log(x)+log(y) exp(x+y) Sử dụng Symbolic Math Toolbox Matlab 50/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Rút gọn Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Rút gọn simple Hàm simple trả dạng ngắn biểu thức Simple có nhiều dạng, dạng lại cho kết khác Dạng simple Đôi khi, hàm simple cải tiến kết cho hàm simplify Ví dụ, áp dụng ví dụ cho simplify, simple cho kết đơn giản (hoặc ngắn hơn) Xét ví dụ sau: f simplify(f) simple(f) (1/a^3+6/a^2+12/a+8)^(1/3) ((2*a+1)^3/a^3)^(1/3) (2*a+1)/a syms x y positive log(x)+log(y) log(x*y) log(x*y) simple(f) hiển thị kết ngắn nhất, ví dụ câu lệnh simple(cos(x)^2 + sin(x)^2) cho kết quả: ans = Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Trần Minh Toàn (SAMI-HUST) 51/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Rút gọn Sử dụng Symbolic Math Toolbox Matlab 52/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Đại số tuyến tính Các phép tốn đại số simple Các phép toán đại số đối tượng symbolic giống lớp double Ví dụ, lệnh Hàm simple đặc biệt hiệu việc rút gọn biểu thức lượng giác Sau số ví dụ: f cos(x)^2+sin(x)^2 2*cos(x)^2-sin(x)^2 cos(x)^2-sin(x)^2 cos(x)+(-sin(x)^2)^(1/2) cos(x)+i*sin(x) cos(3*acos(x)) Trần Minh Toàn (SAMI-HUST) >> syms t; >> G = [cos(t) sin(t); -sin(t) cos(t)] simple(f) 3*cos(x)^2-1 cos(2*x) cos(x)+i*sin(x) exp(i*x) 4*x^3-3*x Sử dụng Symbolic Math Toolbox Matlab tạo G = [ cos(t), sin(t) ] [ -sin(t), cos(t) ] 53/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 54/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Các phép tốn đại số Các phép toán đại số Cả hai câu lệnh Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Ma trận G ma trận trực giao (G0 = G−1 ), kiểm chứng điều >> A = G*G >> I = G.’ *G tạo >> A = G^2 tạo I = [cos(t)^2+sin(t)^2, 0] [ 0, cos(t)^2+sin(t)^2] A = [cos(t)^2-sin(t)^2, 2*cos(t)*sin(t)] [ -2*cos(t)*sin(t), cos(t)^2-sin(t)^2] Đơn giản hóa: Áp dụng hàm simple >> I = simple(I) I = [1, 0] [0, 1] A = simple(A) A = [ cos(2*t), sin(2*t)] [-sin(2*t), cos(2*t)] Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 55/97 Trần Minh Tồn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 56/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Đại số tuyến tính Đại số tuyến tính Các phép tốn đại số tuyến tính Các phép tốn đại số tuyến tính Lệnh Tính nghịch đảo: >> H = hilb(3) tạo ma trận Hilbert cấp >> inv(H) ans = H = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 [ 9, -36, 30] [ -36, 192, -180] [ 30, -180, 180] Biến đổi H thành ma trận symbolic định thức >> H = sym(H) H = [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5] >> det(H) ans= 1/2160 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 57/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 58/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Các phép tốn đại số tuyến tính Giá trị riêng Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Các giá trị riêng dạng symbolic ma trận vuông A giá trị riêng vector riêng dạng symbolic A tính lệnh tương ứng sau Ta sử dụng tốn tử \ để giải hệ đại số tuyến tính: >> b = [1 1]’ >> x = H\b % Giải hệ Hx = b x= -24 30 >> E = eig(A) >> [V,E] = eig(A) Các giá trị riêng A nghiệm đa thức đặc trưng det(A-x*I), tính >> poly(A) Trần Minh Tồn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab Trần Minh Tồn (SAMI-HUST) 59/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Giá trị riêng Giá trị riêng 60/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Tương tự, thành phần đường chéo E trị riêng H: Xét ma trận H E = [0, 0, 0] [0, 32/45+1/180*12589^(1/2), 0] [0, 0, 32/45-1/180*12589^(1/2)] H = [8/9, 1/2, 1/3] [1/2, 1/3, 1/4] [1/3, 1/4, 1/5] Sẽ dễ dàng hiểu cấu trúc ma trận T E ta chuyển chúng dạng thập phân: Ma trận suy biến, có giá trị riêng Câu lệnh >> [T,E] = eig(H) >> Td = double(T) >> Ed = double(E) tạo ma trận T E Các cột T vector riêng H cho T [ [ [ Sử dụng Symbolic Math Toolbox Matlab = 1, 28/153+2/153*12589^(1/2), 28/153-2/153*12589^(12)] -4, 1, 1] 10/3, 92/255-1/255*12589^(1/2), 292/255+1/255*12589^(12)] Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab Td = 1.0000 1.6497 -1.2837 -4.0000 1.0000 1.0000 3.3333 0.7051 1.5851 61/97 Ed = 0 0 1.3344 0 0.0878 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 62/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Giá trị riêng Giá trị riêng Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Các lệnh Symbolic Math Toolbox Giá trị riêng Vector riêng tương ứng (cột T d) Hai giá trị riêng lại kết việc áp dụng cơng thức tồn phương >> syms t >> A = sym([0 1; -1 0]); >> G = expm(t*A) x^2-64/45*x+253/2160 trả nhân tử bậc hai khai triển factor(poly(H)): G= [ cos(t), sin(t)] [ -sin(t), cos(t)] >> syms x >> g = simple(factor(poly(H))/x); >> solve(g) ans = [ 32/45+1/180*12589^(1/2)] [ 32/45-1/180*12589^(1/2)] Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Tiếp theo, lệnh >> g = eig(G) g = [ cos(t)+(cos(t)^2-1)^(1/2)] [ cos(t)-(cos(t)^2-1)^(1/2)] Sử dụng Symbolic Math Toolbox Matlab 63/97 Trần Minh Tồn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Giá trị riêng Giá trị riêng Sử dụng Symbolic Math Toolbox Matlab 64/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Ta dùng simple để rút gọn g nhiều lần: for j = 1:4 [g,how] = simple(g) end g = [ exp(i*t)] [ 1/exp(i*t)] how = convert(exp) g = [ exp(i*t)] [ exp(-i*t)] how = simplify cho ta kết tốt nhất: g = [ cos(t)+(-sin(t)^2)^(1/2)] [ cos(t)-(-sin(t)^2)^(1/2)] how = mwcos2sin g = [ cos(t)+i*sin(t)] [ cos(t)-i*sin(t)] how = radsimp Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 65/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 66/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Dạng Jordan tắc Dạng Jordan tắc Dạng Jordan chuẩn tắc nhận từ việc chéo hóa ma trận phép biến đổi đồng dạng Với ma trận cho A, tìm ma trận khơng suy biến V cho inv(V)*A*V hay gọn J=V\A*V "càng gần với ma trận đường chéo tốt" Với hầu hết ma trận, dạng Jordan tắc ma trận đường chéo giá trị riêng cột ma trận chuyển vị ma trận vector riêng Điều A ma trận đối xứng có giá trị riêng phân biệt Một số ma trận không đối xứng giá trị riêng bội khơng thể chéo hóa Câu lệnh Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Dạng tắc Jordan "nhạy cảm" với nhiễu Điều gây khó khăn cho việc tính dạng Jordan với kết dạng dấu chấm động Điều địi hỏi phải biết xác ma trận A Các phần tử A phải số nguyên tỷ số số nguyên nhỏ Ví dụ: >> A = sym([12,32,66,116;-25,-76,-164,-294; 21,66,143,256;-6,-19,-41,-73]) A = [ 12, 32, 66, 116] [ -25, -76, -164, -294] [ 21, 66, 143, 256] [ -6, -19, -41, -73] >> J = jordan(A) tính dạng Jordan chuẩn tắc A Câu lệnh >> [V,J] = jordan(A) trả thêm ma trận V có cột vector riêng mở rộng A Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 67/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Dạng Jordan tắc Dạng Jordan tắc Sử dụng Symbolic Math Toolbox Matlab 68/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Khi Ta thấy A có giá trị riêng bội 1, có hai vector riêng V(:,1) V(:,3) Chúng thỏa mãn >> [V,J] = jordan(A) V = [ 4, -2, 4, 3] [ -6, 8, -11, -8] [ 4, -7, 10, 7] [ -1, 2, -3, -2] J = [ 1, 1, 0, 0] [ 0, 1, 0, 0] [ 0, 0, 2, 1] [ 0, 0, 0, 2] Trần Minh Toàn (SAMI-HUST) A*V(:,1) = 1*V(:,1) A*V(:,3) = 2*V(:,3) Hai cột lại V vector riêng mở rộng 2: A*V(:,2) = 1*V(:,2) + V(:,1) A*V(:,4) = 2*V(:,4) + V(:,3) Sử dụng Symbolic Math Toolbox Matlab 69/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 70/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Đại số tuyến tính Phân tích giá trị kỳ dị (SVD) Phân tích giá trị kỳ dị (SVD) Nếu A ma trận symbolic dạng dấu chấm động hay biến số xác Điều dẫn đến việc nhiều giá trị kỳ dị A gần với π Cách rõ để tạo ma trận này: >> S = svd(A) for i=1:n for j=1:n A(i,j) = sym(1/(i-j+1/2)); end end tính giá trị kỳ dị A >> [U,S,V] = svd(A); tạo hai ma trận trực giao U, V , ma trận đường chéo S cho Cách thuận tiện để tạo ma trận A A = U ∗ S ∗ V 0; [J,I] = meshgrid(1:n); A = sym(1./(I - J+1/2)); Xét ma trận cấp n với phần tử A(i,j) = 1/(i-j+1/2) Với n = ta có Vì phần tử A tỷ lệ số nguyên nhỏ nên hàm vpa(A) tạo biểu diễn biến số xác Do [ -2 -2/3 -2/5 -2/7] [2/3 -2 -2/3 -2/5] [2/5 2/3 -2 -2/3] [2/7 2/5 2/3 -2] [2/9 2/7 2/5 2/3 2] Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox S = svd(vpa(A)) tính giá trị kỳ dị cách hồn tồn xác Với n = 16 digits(30), kết Sử dụng Symbolic Math Toolbox Matlab 71/97 Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Đại số tuyến tính Giải phương trình Phân tích giá trị kỳ dị (SVD) Giải phương trình đại số S [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ = 1.20968137605668985332455685357 2.69162158686066606774782763594 3.07790297231119748658424727354 3.13504054399744654843898901261 3.14106044663470063805218371924 3.14155754359918083691050658260 3.14159075458605848728982577119 3.14159256925492306470284863102 3.14159265052654880815569479613 3.14159265349961053143856838564 3.14159265358767361712392612384 3.14159265358975439206849907220 3.14159265358979270342635559051 3.14159265358979323325290142781 3.14159265358979323843066846712 3.14159265358979323846255035974 Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Sử dụng Symbolic Math Toolbox Matlab 72/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Nếu S biểu thức symbolic lệnh ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] Sử dụng Symbolic Math Toolbox Matlab >> solve(S) tìm giá trị biến symbolic có S (có thể xác dịnh lệnh findsym) cho S = Ví dụ syms a b c x S = a*x^2 + b*x + c; solve(S) cho kết vector symbolic mà thành phần nghiệm phương trình S = 0: ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))] 73/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 74/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải phương trình Giải phương trình Giải phương trình đại số Giải phương trình đại số Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Chú ý 2.2 Chú ý ví dụ giả thiết phương trình có dạng f (x) = Nếu muốn giải phương trình dạng f (x) = q(x), ta phải sử dụng chuỗi trích dẫn Nói riêng, lệnh Nếu ta muốn giải phương trình với biến định trước, ta phải rõ biến đó, ví dụ ta giải S = theo đối b >> s = solve(’cos(2*x)+sin(x)=1’) >> b = solve(S,b) b = -(a*x^2+c)/x cho ta vector chứa nghiệm: s [ [ [ [ Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 75/97 = 0] pi] 1/6*pi] 5/6*pi] Trần Minh Toàn (SAMI-HUST) Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải phương trình Giải phương trình Giải hệ phương trình đại số Giải hệ phương trình đại số Giả sử cần tìm nghiệm (x, y) hệ phương trình ( 2 x y =0 y x− =α >> syms x y alpha Sử dụng Symbolic Math Toolbox Matlab 76/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Do đó, vector nghiệm >> v = [x, y] v= xuất thành phần dư thừa Nguyên nhân phương trình ban đầu x2 y = có nghiệm x = ±0, y = ±0 Thay đổi hệ thành >> [x,y] = solve(x^2*y^2, x-y/2-alpha) x = [ 0] [ 0] [ alpha] [ alpha] y = [ -2*alpha] [ -2*alpha] [ 0] [ 0] Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab eqs1 = ’x^2*y^2=1, x-y/2-alpha’ [x,y] = solve(eqs1) tạo nghiệm phân biệt: x [ [ [ [ 77/97 = 1/2*alpha+1/2*(alpha^2+2)^(1/2)] 1/2*alpha-1/2*(alpha^2+2)^(1/2)] 1/2*alpha+1/2*(alpha^2-2)^(1/2)] 1/2*alpha-1/2*(alpha^2-2)^(1/2)] Trần Minh Toàn (SAMI-HUST) y [ [ [ [ = -alpha+(alpha^2+2)^(1/2)] -alpha-(alpha^2+2)^(1/2)] -alpha+(alpha^2-2)^(1/2)] -alpha-(alpha^2-2)^(1/2)] Sử dụng Symbolic Math Toolbox Matlab 78/97 Mở đầu Sử dụng Symbolic Math Toolbox Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Mở đầu Sử dụng Symbolic Math Toolbox Giải phương trình Giải phương trình Giải hệ phương trình đại số Giải hệ phương trình đại số Cách làm thích hợp với hệ có phương trình Rõ ràng, ta xét hệ 10 phương trình, 10 ẩn, phải nhập vào Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân [x1,x2,x3,x4,x5,x6,x7,x8,x9,x10] = solve( ) Tương tự nghiệm u, v Cấu trúc S xử lý trường số để truy cập tới nghiệm cụ thể Ví dụ, ta muốn kiểm tra nghiệm thứ hai, dùng lệnh sau Điều thật bất tiện tốn thời gian Nhằm tránh khó khăn này, solve trả cấu trúc mà trường nghiệm Nói riêng, ta xét hệ u2 − v = a2 , u + v = 1, a2 − 2a = 3, lệnh s2 = [S.a(2), S.u(2), S.v(2)] s2 = [ -1, 1, 0] S = solve(’u^2-v^2 = a^2’,’u + v = 1’,’a^2-2*a = 3’) S = a: [2x1 sym] u: [2x1 sym] v: [2x1 sym] Câu lệnh sau Các nghiệm lưu trường S Ví dụ M = [ 3, 5, -4] [ -1, 1, 0] S.a ans = [ 3] [ -1] M = [S.a, S.u, S.v] tạo ma trận nghiệm có dịng chứa nghiệm hệ Trần Minh Toàn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Sử dụng Symbolic Math Toolbox Matlab 79/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Trần Minh Tồn (SAMI-HUST) Mở đầu Sử dụng Symbolic Math Toolbox Giải phương trình Giải phương trình Giải hệ phương trình đại số Giải phương trình vi phân Sử dụng Symbolic Math Toolbox Matlab 80/97 Giải tích Rút gọn Đại số tuyến tính Giải phương trình Biến đổi tích phân Hệ tuyến tính giải lệnh solve cách sử dụng phép chia ma trận Ví dụ Hàm dsolve tìm nghiệm symbolic phương trình vi phân thường clear u v x y syms u v x y S = solve(x+2*y-u, 4*x+5*y-v); sol = [S.x;S.y] Các phương trình mơ tả biểu thức symbolic, chữ D dùng để ký hiệu đạo hàm Các ký hiệu D2, D3, , Dn tương ứng với đạo hàm cấp 2, 3, , n tương ứng Do D2y tương d2 y đương với dt Các biến phụ thuộc sau D biến độc lập mặc định t Chú ý tên biến symbolic không chứa ký tự D Có thể dùng biến độc lập khác cách nhập thơng số cuối dsolve A = [1 2; 5]; b = [u; v]; z = A\b cho kết sol = z = [ -5/3*u+2/3*v] [ -5/3*u+2/3*v] [ 4/3*u-1/3*v] [ 4/3*u-1/3*v] Toàn (SAMI-HUST) dụngdù Symbolic Math Toolbox Do sol zTrần tạoMinh nghiệm, Sử mặc chúng gắntrong vớiMatlab biến khác Các điều kiện đầu mơ tả phương trình phụ, khơng có điều kiện đầu, nghiệm chứa số C1 , C2 , 81/97 Trần Minh Toàn (SAMI-HUST) Sử dụng Symbolic Math Toolbox Matlab 82/97

Ngày đăng: 25/01/2024, 18:22

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w