Hướng dẫn sử dụng MatLab trong môn Giải tích

Matlab là một hệ tính toán lớn và mạnh, được dùng phổ biến trong giảng dạy, nghiên cứu và làm việc thực tế. Tuy nhiên phần mềm này có bản quyền, tương đối cồng kềnh, có thể lên tới hàng gigabybes Tài liệu hướng dẫn chủ yếu là phần Help của chương trình. Ngoài ra có thể tìm đọc quyển sách Jeffery Cooper, A Matlab companion for multivariable calculus, Harcourt, 2001.

doc7 trang | Chia sẻ: lylyngoc | Lượt xem: 5061 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Hướng dẫn sử dụng MatLab trong môn Giải tích, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Hướng dẫn sử dụng MatLab trong môn Giải tích Matlab là một hệ tính toán lớn và mạnh, được dùng phổ biến trong giảng dạy, nghiên cứu và làm việc thực tế. Tuy nhiên phần mềm này có bản quyền, tương đối cồng kềnh, có thể lên tới hàng gigabybes Tài liệu hướng dẫn chủ yếu là phần Help của chương trình. Ngoài ra có thể tìm đọc quyển sách Jeffery Cooper, A Matlab companion for multivariable calculus, Harcourt, 2001. Thông báo biến x, y là một biến kí hiệu (symbolic) syms x y Nhập vào hàm f, ví dụ f(x)=x2-3x+1 f=x^2-3*x+1 Tính giá trị của f tại một điểm , chẳng hạn tại x=2 subs(f,x,2) Tính giới hạn khi x dần đến hằng số a limit(f,x,a) Tính giới hạn khi x dần đến hằng số a bên trái hoặc phải limit(f,x,a,’left’) limit(f,x,a,’right’) Tính giới hạn khi x dần đến +vô cùng hoặc –vô cùng limit(f,x,Inf) limit(f,x,-Inf) Tính đạo hàm Tính đạo hàm của hàm f theo biến x diff(f,x) Khai triển Taylor hàm f tại điểm cụ thể x0 tới cấp cụ thể n taylor(f,x0,n) Vẽ đồ thị hàm một biến Vẽ đồ thị hàm f, chẳng hạn với x từ 1 tới 2 ezplot(f,1,2) Tích phân của hàm một biến Tính tích phân không xác định của hàm f theo biến x int(f,x) Tính tích phân xác định của hàm f theo biến x, với x từ 1 tới 2 int(f,x,1,2) Nhập hàm nhiều biến ở dạng kí hiệu Nhập vào một hàm nhiều biến syms x y f=x^2*y^3-3*x*y^2 Tính giá trị của hàm hai biến Tính giá trị của f tại một điểm, chẳng hạn tại x=2, y=3 subs(subs(f,x,2),y,3) Tính đạo hàm riêng Tính đạo hàm riêng của f theo biến y diff(f,y) Vẽ đồ thị hàm hai biến Vẽ đồ thị hàm f trên khoảng x từ 1 tới 2, y từ 3 tới 4 ezsurf(f,[1,2,3,4]) Tính tích phân bội Tính tích phân của f trên hình hộp chữ nhật x từ 1 tới 2, y từ 3 tới 4: Đưa về tích phân lặp: int(int(f,x,1,2),y,3,4) Vẽ mặt cho bởi phương trình tham số Ví dụ vẽ mặt cầu x=sin(u)cos(v), y=sin(u)sin(v), z=cos(u), u từ 0 tới pi, v từ 0 tới 2pi: syms u v ezsurf(sin(u)*cos(v),sin(u)*sin(v),cos(u),[0 pi 0 2*pi]) mẫu lệnh tổng quát là ezsurf(x,y,z,[a b c d]) tham số thứ nhất biến thiên từ a tới b, tham số thứ hai biến thiên từ c tới d. Tính xấp xỉ tích phân Tính xấp xỉ tích phân của hàm f (x) với x từ a tới b: Vì đây không còn là phép toán kí hiệu nữa mà là phép toán số (numerical), nên cần chuyển f thành một dạng hàm khác, gọi là inline. Ví dụ tích tích phân f(x)=e^(x^2) từ 0 tới 1: Nhập hàm f ở dạng inline f=inline('exp(x.^2)') Chú ý có dấu chấm trước toán tử ^ (Matlab dùng nó để tính toán trên ma trận). Tính xấp xỉ tính phân của f: quad(f,0,1) Vẽ trường vectơ 2 chiều Ví dụ: Vẽ trường (P(x,y),Q(x,y)) với P(x,y)=2x+3y, Q(x,y)=3x^2-y^5 trên hình chữ nhật x từ -1 tới 1, y từ -2 tới 2. Nhập vào trường: P=inline('2*x+3*y','x','y') Q=inline('3*x^2-y^5','x','y') Cho biến x chạy từ -1 tới 1, lấy 10 điểm chia; cho biến y chạy từ -2 tới 2, lấy 10 điểm chia: x=linspace(-1,1,10) y=linspace(-2,2,10) Tạo một lưới các điểm ứng với các điểm chia trên: [X,Y]=meshgrid(x,y) Tính giá trị của trường tại các điểm chia này: p=P(X,Y) q=Q(X,Y) Vẽ các vectơ của trường tại các điểm này: quiver(X,Y,p,q) %%% vector %% các cách tạo một vecto x = 0:0.1:1; % vecto gồm tất cả các phần tử từ 0 đến 1cách đều nhau 0.1 y = linspace(1,10,20); % vecto tạo bởi 20 phần tử cách đều nhau từ 1 đến 10 z = rand(10,1); % vecto ngẫu nhiên gồm 10 phần tử %% cho vecto  A = [5 7 9 7 4 3] A = [5 7 9 7 4 3]; B1 = A(3); % lấy giá trị thứ 3 B2 = A(1:5); % lấy giá trị từ 1 đến 5 B3 = A(1:end); % lấy giá trị từ 1 đến cuối cùng B4 = A(1:end-1); % lấy giá trị từ 1 đến cuối cùng - 1 B5 = A(6:-2:1); % lấy giá trị từ giảm dần 2 đơn vị từ 6 xuống 1 B6 = A(1:2:6); % lấy giá trị từ tăng dần 2 đơn vị từ 1 lên 6 B7 = sum(A); % tính tổng tất cả các phần tử %%% ma trận A = [2 7 9 7;3 1 5 6;8 1 2 5]; % ma trận A B1 = size(A); % kích thước ma trận B2 = A(2,3); % lấy phần tử hàng 2 cột 3 B3 = A'; % ma trận chuyển vị của A B4 = A(:,[1 4]); % lấy cột 1 và cột 4 B5 = A(:,1:4); % lấy các cột từ 1 đến 4 B6 = A([1 3],:); % lấy hàng 1 và 3 B7 = A(1:3,:); % lấy các hàng từ 1 đến 3 B8 = A([2 3],[3 1]); % lấy hàng 2 và 3; cột 3,1 B9 = A(:); % viết lại các phần tử thành 1 cột H10 = [A;A(end,:)];% ma trận tạo bởi A và hàng cuối của A B11 = [A;A(1:2,:)]; % ma trận tạo bởi A và ma trận congòm hàng 1, 2 B12 = sum(A); % ma trận tạo bởi tổng tất cả các phần tử trong các cột của A B13 = sum(A,2); % ma trận tạo bởi tổng tất cả các phần tử trong các hàng của A B14 = reshape(A,2,6); % viết lại ma trận thành 2 hàng 6 cột B15 = [A;2 5 7 9]; % ma trận tạo bởi A và ma trận [2 5 7 9] B16 = inv(B16); % ma trận nghịch đảo của A B17 = det(B16); % định thức của A B18 = rank(B16); % hạng của ma trận A %%% đa thức A = [1 3 5 6]; % cho đa thức A bậc 3 n1 = roots(A); % nghiệm của phương trình A = 0 n2 = polyval(A,2); % giá trị của A tại 2 B = [1 5 7 5]; % cho đa thức B bậc 3 n3 = conv(A,B); % nhân 2 đa thức n4 = poly(A); % tìm đa thức có các nghiệm là các phần tử của A n5 = poly2sym(n4); % chuyển ma trận n4 về dạng đa thức n6 = poly2sym(A); % chuyển ma trận A về dạng đa thức C = sym2poly(n6); % chuyển đa thức n6 về dạng ma trận C pretty(n5);  % hiển thị dạng viết tay của đa thức n5 %%% các công cụ tính toán trong toolbox symbolic %% tính đạo hàm (hàm diff) % tính đạo hàm của hàm y = sin(a*x^3) syms a x;  % khai báo a,x là biến kiểu symbolic,đây là điều bắt buộc y = sin(a*x^3);  % cho hàm y y1 = diff(y); % đạo hàm hàm y theo x (mặc định), hoặc viết diff(y,x) pretty(y1); % viết kết quả dưới dạng viết tay y2 = diff(y,a); % đạo hàm hàm y theo a pretty(y2);  % viết kết quả dưới dạng viết tay y3 = diff(y,2); % đạo hàm bậc 2 hàm y theo x (mặc định), hoặc viết diff(y,x,2) pretty(y3); % viết kết quả dưới dạng viết tay %% tính tích phân (hàm int) % tính tích phân của hàm z = x*sin(x) sym x; % khai báo x là biến kiểu symbolic z = x*sin(x); % cho hàm z z1 = int(z); % tích phân của z theo x (mặc định) hoặc viết int(z,x) pretty(z1);  % viết kết quả dưới dạng viết tay z2 = int(z,0,1); % tích phân xác định từ 0 đến 1% hoặc viết  int(f,x,0,1) %% tính giới hạn (hàm limit) % tính giới hạn hàm w  = (1+x/n)^n, với n tiến ra vô cùng syms n,x; % khai báo n, x là biến kiểu symbolic,đây là điều bắt buộc w = (1+x/n)^n; % cho hàm z limit(w,n,inf); % giới hạn của w khi n tiến ra vô cùng % các ví dụ l1 = limit(1/x); % giới hạn của 1/x với x mặc định tiến tới 0 l2 = limit(1/x,x,0,'left'); % giới hạn của 1/x với x chạy tới 0-) l3 = limit(1/x,x,0,'right'); % giới hạn của 1/x với x chạy tới 0+) %% giải phương trình và hệ phương trình syms x y; % khai báo x, y là biến kiểu symbolic,đây là điều bắt buộc x = solve('x^3+x^2+x+1'); % giải phương trình với biến x x = solve('x^2*y^2+x*y+1','x'); % giải phương trình với biến x y = solve('x^2*y^2+x*y+1','y'); % giải phương trình với biến y [x y] = solve('x^2+y^2=0','x*y=1'); % giải hệ phương trình % các phương trình, hệ phương trình dạng khác giải tương tự %% tính tổng của dãy số % tính tổng của s = 1+2+3+...+n syms n; % khai báo x, y là biến kiểu symbolic s1 = symsum(n+1); % tổng symbolic theo biến n chạy từ 0 tới n (mặc định) hoặc s1 = symsum(n,1,n);  % tổng symbolic theo biến n chạy từ 1 tới n % tính tổng của s2 = 1+x+x^2+x^3+...+x^n s2 = symsum(x^n,n,0,n); % tổng symbolic theo biến n chạy từ 0 tới n %% tìm hàm ngược % tìm hàm ngược của hàm u = sin(x) và cos(xy) syms x y; % khai báo x, y là biến kiểu symbolic finverse(sin(x)); % hàm ngược với biến mặc định x finverse(cos(x*y),y); % hàm ngược với biến y %% biến đổi Laplace (hàm t, hàm biến đổi s) syms t x s a b; % khai báo các biến kiểu symbolic F1 = laplace(t);  % biến đổi Laplace với biến mặc định t và kết quả là 1 hàm của s F2 = laplace(exp(-a*t),x); % biến đổi Laplace cho hàm ảnh là một hàm của x thay thế s %% biến đổi Laplace ngược F3 = ilaplace(1/((s+a)*(s+b))); % biến đổi Laplace ngược trả về hàm của t F4 = ilaplace(1/(s*(s+a)),x); % biến đổi Laplace ngược trả về hàm của x % ta còn có 2 dạng sau % laplace(f,y,x): biến đổi Laplace của 1 hàm biến y (thay thế mặc định t), % trả về 1 hàm biến x (thay thế mặc định s) % ilpalace(f,y,x): tương tự như trên %% biến đổi fourier (hàm x, hàm biến đổi w) syms x u w; % khai báo các biến kiểu symbolic F5 = fourier(exp(-x/2)); % biến đổi fourier cho kết quả là 1 hàm biến w (mặc định) F6 = fourier(exp(abs(-x)),u); % biến đổi fourier cho kết quả là 1 hàm biến u (thay thế cho w) %% biến đổi fourier ngược F7 = ifourier(sin(x)*cos(2*x)); % biến đổi fourier ngược cho kết quả là 1 hàm của x (mặc định) F8 = ifourier(x^2-x-1,u); % biến đổi fourier ngược cho kết quả là 1 hàm của u % ta còn có 2 dạng sau % fourier(f,u,v): biến đổi fourier của hàm f theo biến u (thay thế mặc định là x), % trả về 1 hàm biến v (thay thế mặc định w) % ifourier(f,u,v): tương tự như trên %% khai triển taylor syms x y; % khai báo các biến kiểu symbolic F9 = taylor(sin(x)); % khai triển taylor theo biến x F10 = taylor(cos(x*y^2),x); % khai triển taylor theo biến x F11 = taylor(x^4+x^2+1,4,2); % khai triển taylor 4 số hạng đầu tiên 0, xung quanh điểm x0 = 2 F12 = taylor(x^3*y^2+x*y+1,5,y,1); % khai triển taylor 5 số hạng đầu tiên 0 theo biến y, xq điểm x0 = 1 %% các hàm làm đơn giản hóa biểu thức % 1 - hàm collect: gom số hạng, biến syms x y; % khai báo các biến kiểu symbolic F1 = collect((x^3+x+1)*(x*sin(x))); % gom các số hạng theo biến x (mặc định) F2 = collect(x*y*(x+y^2+sin(x)),x); % gom các số hạng theo biến x % 2 - hàm expand: khai triển biểu thức F3 = expand((x+4)*(x^7+x^3+6)+sin(2*x)); % 3 - hàm factor: phân tích biểu thức thành thừa số F4 = factor(x^8-y^8); F5 = factor(sym('143654645350')); % 4 - hàm horner: phân tích đa thức ra dạng thừa số F6 = horner(6+x+2*x^2+x^4); F7 = horner([x^2+2*x+6;9+y^2+y^3]); % 5 - hàm numden: lấy tử số và mẫu số [n d] = numden((x+3)/(x*y+4)); % 6 - hàm simplify va simple: làm tối giản hoá biểu thức F8 = simplify([(x^2+3*x+1)/(x+1),sqrt(16)]); F9 = simple([(x^2+3*x+1)/(x+1),sqrt(16)]) Xuất nghiệm: >>A=2 A= 2 >>T=[‘X=’ num2str(A)]; >>disp(T) X=2 >> setdiff(A,B) %các phần tử giống nhau của A B ans= 1 3 5 7 9 >> setxor(A,B) %các phần tử khác nhau ans= -9 8 Ve: set(ezplot(t),'Color','green','LineWidth',1) Vẽ đồ thị đường thẳng: t=linspace(0,10*pi); Plot3(t,t+6,5-t);