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.
7 trang |
Chia sẻ: lylyngoc | Lượt xem: 5029 | Lượt tải: 1
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+1f=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=2subs(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àmTính đạo hàm của hàm f theo biến xdiff(f,x)
Khai triển Taylor hàm f tại điểm cụ thể x0 tới cấp cụ thể ntaylor(f,x0,n)
Vẽ đồ thị hàm một biếnVẽ đồ thị hàm f, chẳng hạn với x từ 1 tới 2ezplot(f,1,2)
Tích phân của hàm một biếnTính tích phân không xác định của hàm f theo biến xint(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 2int(f,x,1,2)
Nhập hàm nhiều biến ở dạng kí hiệuNhập vào một hàm nhiều biếnsyms x yf=x^2*y^3-3*x*y^2
Tính giá trị của hàm hai biếnTính giá trị của f tại một điểm, chẳng hạn tại x=2, y=3subs(subs(f,x,2),y,3)
Tính đạo hàm riêngTính đạo hàm riêng của f theo biến ydiff(f,y)Vẽ đồ thị hàm hai biếnVẽ đồ thị hàm f trên khoảng x từ 1 tới 2, y từ 3 tới 4ezsurf(f,[1,2,3,4])
Tính tích phân bộiTí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 vezsurf(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ânTí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 inlinef=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ềuVí 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);