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

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);  
doc 7 trang myanh 24240 Free
Bạn đang xem 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 gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • dochuong_dan_su_dung_matlab_trong_mon_giai_tich.doc