Lập trình ứng dụng với Matlab

Matlablàmột ngôn ngữ lập trình thực hành bậc cao đ-ợc sử dụng để giải các bài

toán về kỹ thuật.Matlab tích hợp đ-ợc việc tính toán, thể hiện kết quả, cho phép lập trình,

giao diện làm việc rất dễ dàng cho ng-ời sử dụng. Dữ liệu cùng với th-viện đ-ợc lập

trình sẵn cho phép ng-ời sử dụng có thể có đ-ợc những ứng dụng sau đây.

• Sử dụng các hàm có sẵn trong th-viện, các phép tính toán học thông th-ờng

• Cho phép lập trình tạo ra những ứng dụng mới.

• Cho phép mô phỏng các mô hình thực tế.

• Phân tích, khảo sát vàhiển thị dữ liệu.

• Với phần mềm đồ hoạ cực mạnh

• Cho phép phát triển,giao tiếp với một số phần mềm khác nh-C++, Fortran.

pdf138 trang | Chuyên mục: MATLAB | Chia sẻ: dkS00TYs | Lượt xem: 4151 | Lượt tải: 1download
Tóm tắt nội dung Lập trình ứng dụng với Matlab, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ểu thức F với biến độc lập. 
ắ limit(F) : Tìm giới hạn của biểu thức F khi a = 0. 
ắ limit(F, x, a, ‘right’) hoặc Lim it(F, x, a, ‘left’) : Tìm giới hạn phải hoặc 
bên trái 
Ví dụ: 
 >>syms x a t h 
 >>limit(sin(x)/x) 
ans = 1 
 >>limit(1/x,x,0,’right’) 
ans = inf 
 >>limit(1/x,x,0,’left’) 
ans = -inf 
 >>limit((sin(x+h)-sin(x))/h,h,0) 
ans = cos(x) 
 >>v = [(1+a/x)^x,exp(-x)]; 
 >>limit(v,x,inf,’left’) 
ans = [exp(a),0] 
• Tính tổng của dãy số lμ các biến symbolic(symsum): 
ắ symsum(S): Tổng của biểu thức symbolic theo biến symbolic k , k đ−ợc 
xác định bằng lệnh findsym từ 0 k -1. →
ắ symsum(S,v): Tổng của biểu thức symbolic S theo biến symbolic v,v đ−ợc 
xác định từ 0 k - 1. →
Trang 9 
ắ symsum(S,a,b), symsum(S,v,a,b): Tổng của biểu thức symbolic S theo 
symbolic v, v đ−ợc xác định từ v = s đến v = b. 
Ví dụ: 
>>syms k n x 
>>symsum(k^2) 
ans = 1/3*k^3-1/2*k^2+1/6*k 
>>symsum(k) 
ans = 1/2*k^2-1/2*k 
>>symsum(sin(k*pi)/k,0,n) 
ans = -1/2*sin(k*(n+1))/k+1/2*sin(k)/k/(cos(k)-1)*cos(k*(n+1))-
1/2*sin(k)/k/(cos(k)-1) 
>>symsum(k^2,0,10) 
ans = 385 
>>symsum(x^k/sym(‘k!’), k, 0,inf) 
ans = exp(x) 
Vi dụ: Cho tổng của 2 dãy 
 S1 = 1 + ++ 22 3
1
2
1 …. 
 S2 = 1 + x + x2 +….. 
 >>syms x k 
 >>s1 = symsum(1/k^2,1,inf) %inf lμ vô cùng. 
s1 = 1/6*pi^2 
 >>s2 = symsum(x^k,k,0,inf) 
• Tìm hμm ng−ợc (finverse): 
ắ finverse(f): Tìm hμm ng−ợc của f. f lμ hμm symbolic với một biến x 
ắ finverse(f,u): Tìm hμm ng−ợc của f. f lμ hμm symbolic với một biến 
u. 
Ví dụ: 
 >>syms u v x 
>>finverse(1/tan(x)) 
 ans = atan(1/x) 
>>finverse(exp(u-2*v),u) 
 ans = 2*v+log(u) 
Trang 10 
s2 = -1/(x-1) 
• Khai triển taylor(taylor): 
ắ taylor(f) 
ắ taylor(f,n,v): Cho ta xấp xỉ đa thức theo Maclaurin bậc (n-1) của biểu thức, hμm 
khai triển symbolic f vμ v lμ biến độc lập trong biểu thức. v có thể lμ một xâu 
(string) hay lμ biến symbolic. 
ắ taylor(f,n,v,a): Khai triển Taylor của biểu thức hay hμm symbolic f quanh điểm a. 
Đối số có thể lμ giá trị số, một hμm symbolic hay một xâu……Nếu không cho 
gía trị n thì mặc nhiên trong Matlab n = 6. 
Vi dụ: Khai triển Taylor của hμm f = exsin(x) quanh điểm x0 = 2 (Nếu x0 = 0 ta có khai triển 
Maclaurin). 
 >>syms x 
 >> f = exp(x*sin(x)); 
 >>t = taylor(f,4,2)% khai triển 4 số hạng đầu tiên khác o vμ xung quanh điểm x0 = 2 
Kết quả: 
 exp(2*sin(2))+exp(2*sin(2))*(2*cos(2)+sin(2))*(x-2)+exp(2*sin(2))*(-
sin(2)+cos(2)+2*cos(2)^2+2*cos(2)*sin(2)+1/2*sin(2)^2)*(x-2)^2+exp(2*sin(2))*(-
1/3*cos(2)-1/2*sin(2)-cos(2)*sin(2)+2*cos(2)^2-
sin(2)^2+4/3*cos(2)^3+2*cos(2)^2*sin(2)+cos(2)*sin(2)^2+1/6*sin(2)^3)*(x-2)^3 
 Bây giờ ta có thể vẽ hμm đã cho vμ hμm đã khai triển bằng chuỗi Taylor quanh điểm 
x0 = 2 vμ cho nhận xét. 
>>syms x 
>> f = exp(x*sin(x)); 
>>t = taylor(f,10,2); 
>>xd= 1:0.05:3; 
>>yd = subs(f,x,xd);% thay thế biễn x bằng xd 
>>ezplot(t,[1,3])% vẽ hμm symbolic 
>> hold on 
>>plot(xd,yd,'r-') 
6.4.2 Các hμm lμm đơn giản hoá các biểu thức: 
• Gom số hạng, biến(collect): 
ắ collect(S): S lμ đa thức, gom các số hạng chứa biến x 
ắ collect(S,v): S lμ đa thức, gom các số hạng chứa biến v 
Trang 11 
Ví dụ: 
>>syms x y; 
>>R1 = collect((exp(x)+x)*(x+2)) 
>>R2 = collect((x+y)*(x^2+y^2+1), y) 
>>R3 = collect([(x+1)*(y+1),x+y]) 
Kết quả: 
R1 = x^2+(exp(x)+2)*x+2*exp(x) 
R2 = y^3+x*y^2+(x^2+1)*y+x*(x^2+1) 
R3 = [(y+1)*x+y+1, x+y] 
• Khai triển biểu thức(expand): 
ắ expand: Khai triển biểu thức symbolic S. 
Ví dụ: 
 >>syms x y a b c t 
>>expand((x-2)*(x-4)) 
 ans = x^2-6*x+8 
>>expand(cos(x+y)) 
ans = cos(x)*cos(y)-sin(x)*sin(y) 
>>expand(exp((a+b)^2)) 
ans = exp(a^2)*exp(a*b)^2*exp(b^2) 
>>expand(log(a*b/sqrt(c)))
ans = log(a)+log(b)-1/2*log(c) 
>>expand([sin(2*t), cos(2*t)]) 
ans = [2*sin(t)*cos(t), 2*cos(t)^2-1] 
• Phân tích biểu thức thμnh thừa số(factor): 
ắ Factor(X): Phân tích biểu thức mảng symbolic X thμnh thừa số. 
Ví dụ: 
 >>syms x y a b 
>>factor(x^3-y^3) 
(x-y)*(x^2+x*y+y^2) 
>>factor([a^2-b^2, a^3+b^3]) 
[(a-b)*(a+b), (a+b)*(a^2-a*b+b^2)] 
>>factor(sym('12345678901234567890')) 
Trang 12 
(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)
• Phân tích đa thức ra dạng thừa số(horner): 
ắ R = horner(p): 
Ví dụ: 
 >>syms x y 
>>horner(x^3-6*x^2+11*x-6) 
ans = -6+(11+(-6+x)*x)*x 
>>horner([x^2+x;y^3-2*y]) 
ans = [ (1+x)*x] 
[(-2+y^2)*y] 
• Lấy tử số vμ mẫu số(numden): 
ắ [n.d] = numden(A): lấy ra tử số của A lμ n, mẫu số của A lμ d 
Ví dụ: 
 >>syms x y a b 
>>A= (4-x)/5; 
>>[n,d] = numden(A) 
 n = 4-x 
 d = 5 
>>[n,d] = numden(x/y + y/x) 
n = x^2+y^2 
d = y*x 
>>A = [a, 1/b] 
>>[n,d] = numden(A) 
 n = [a, 1] 
 d = [1, b] 
• Tìm dạng tối giản của đa thức( simple, simplify): 
ắ R = simplify(S) 
ắ R = simple(S) 
ắ [r, how] = simple(S) 
Ví dụ: 
 >>syms x y a b c 
>>simplify(sin(x)^2 + cos(x)^2) 
Trang 13 
ans = 1 
>>simplify(exp(c*log(sqrt(a+b)))) 
ans = (a+b)^(1/2*c) 
 >>S = [(x^2+5*x+6)/(x+2),sqrt(16)]; 
>>R = simplify(S) 
 R = [x+3,4] 
6.4.3 Biến đổi : 
• Biến đổi fourier: 
ắ F = fourier(f): Biến đổi fourier của hμm vô h−ớng f với biến độc lập mặc nhiên f 
vμ cho ta hμm mặc nhiên qua phép biến đổi nμylμ w. 
ắ F = fourier(f,v): F lμ hμm của biến v thay thế biến mặc nhiên w. 
ắ F = fourier(f,u,v): f lμ hμm của u vμ F lμ hμm của v chúng thay thế các biến mặc 
nhiên x vμ w. 
Ví dụ: 
 >>syms x w u 
>>f = exp(-x^2) 
>>fourier(f) 
ans = pi^(1/2)*exp(-1/4*w^2)
 >>g = exp(-abs(w))
 >>fourier(g)
 ans = 2/(1+t^2)
>>f= x*exp(-abs(x)) 
>>fourier(f,u) 
ans = -4*i/(1+u^2)^2*u
 >>syms x v u real 
>>f= exp(-x^2*abs(v))*sin(v)/v 
>>fourier(f,v,u) 
ans = -atan((u-1)/x^2)+atan((u+1)/x^2) 
• Biến đổi ng−ợc fourier: 
ắ f = ifourier(F): Biến đổi ng−ợc của hμm mục tiêu vô h−ớng F với biến độc lập 
mặc nhiên w. phép biến đổi ng−ợc nμy lμ hμm của x. 
ắ f = ifourier(F,u): f lμ hμm củabiến u thay thế biến mặc nhiên x. 
ắ f = ifourier(F,v,u): F lμ hμm của v vμ f lμ hμm của u chúng thay thế các biến mặc 
nhiên w vμ x t−ơng ứng. 
Trang 14 
Ví dụ: 
>>syms a w x t v real 
>>f = exp(-w^2/(4*a^2)) 
>>F = ifourier(f); 
>>F = simple(F) 
F = a*exp(-x^2*a^2)/pi^(1/2) 
>>g=exp(-abs(x)) 
>>ifourier(g) 
ans = 1/(1+t^2)/pi 
>>f=2*exp(-abs(w))-1 
>>simplify(ifourier(f,t)) 
 ans = (2-pi*Dirac(t)-pi*Dirac(t)*t^2)/(pi+pi*t^2) 
>>f=exp(-w^2*abs(v))*sin(v)/v; 
>>ifourier(f,v,t) 
 ans = 1/2*(atan((t+1)/w^2) - atan((-1+t)/w^2))/pi 
• Biến đổi laplace: 
ắ L = laplace(F): Biến đổi Laplace của hμm F với biến mặc nhiên độc lập t. nó cho 
ta một hμm của s 
ắ L = laplace(F,t): L lμ một hμm của t thay thế biến mặc nhiên s. 
ắ L = laplace(F,w,z): L lμ hμm của z vμ F lμ hμm của w, nó thay thế các biến 
symbolic mặc nhiên s vμ t t−ơng ứng. 
Ví dụ: 
 >>syms t v x a 
>>f = t^4 
>>laplace(f) 
 ans = 24/s^5
>>g=1/sqrt(s) 
>>laplace(g) 
 ans = 1/s^(1/2)*pi^(1/2) 
>>f=exp(-a*t) 
>>laplace(f,x) 
 ans= 1/(x + a)
Trang 15 
>>f=1- cos(t*v) 
>>laplace(f,x) 
ans = 1/x-x/(x^2+v^2) 
• Biến đổi laplace ng-ợc 
ắ F = ilaplace(L): Biến đổi Laplace ng−ợc của hμm symbolic L với biến mặc nhiên 
độc lập s. Nó cho ta một hμm của t. 
ắ F = ilaplace(L,y): F lμ hμm của y thay thế biến mặc nhiên t. 
ắ F = ilaplace(L,y,x): F lμ hμm của x vμ L lμ hμm của y, nó thay thế các biến 
symbolic mặc nhiên t vμ s. 
Ví dụ : 
>>syms s a t 
>>f=1/s^2 
>>ilaplace(f) 
ans = t 
>>g=1/(t-a)^2 
>>ilaplace(g) 
ans = x*exp(a*x) 
>>syms u a x 
>>f=1/(u^2-a^2) 
>>ilaplace(f,x) 
ans = 1/(-a^2)^(1/2)*sin((-a^2)^(1/2)*x) 
>>syms s v x 
>>f=s^3*v/(s^2+v^2) 
>>ilaplace(f,v,x) 
ans = s^3*cos(s*x) 
6.4.4 áp dụng đồ hoạ: 
• ezplot( vẽ đ-ờng) 
ắ ezplot(f): Vẽ hàm f = f(x) với miền mặc nhiên -2 < x < 2 . 
ắ ezplot(f,[min,max]) : Vẽ hμm f = f(x) trong miền giá trị [min,max] của 
biến. 
ắ ezplot(x,y): Vẽ đ−ờng cong ham số x = x(t); y = y(t) với biến mặc nhiên 
Trang 16 
0 < t < 2π . 
Ví dụ: 
>>syms x 
>>ezplot(erf(x)) 
>>grid 
• ezplot3( vẽ đ−ờng trong 3 
chiều) 
ắ ezplot3(x,y,z): Vẽ các hμm x = x(t), y = y(t), vμ z = z(t) với miền mặc 
định lμt 0 < t < 2 . 
ắ ezplot3(x,y,z,[tmin,tmax]): Vẽ các hμm x = x(t), y = y(t), vμ z = z(t) trong 
khoảng giá trị tmin < t < tmax. 
Ví dụ: 
 >>syms t; ezplot3(sin(t), cos(t), t,[0,6*pi]) 
Trang 17 
• Ví dụ : Cho hμm f(x) = 
)cos(45
1
x+ với x∈[a,b]. 
ắ Vẽ đồ thị vμ các đạo hμm bậc 1, bậc 2. miền xác định mặc nhiên 
trong symbolic Matlab lμ ππ 22 ≤≤− x . 
Hãy vμo cửa sổ soạn thảo vμ trong cửa sổ nμy ta viết ch−ơng trình nh− sau: 
syms x 
f1 = 1/(5+4*cos(x)); 
f2 = diff(f1); 
% dao ham bac 1 cua f1. 
f3 = diff(f2); 
% dao ham bac 2 cua f1. 
subplot(2,2,1) 
ezplot(f1) 
subplot(2,2,2) 
ezplot(f2) 
subplot(2,2,3) 
ezplot(f3) 
ắ Tìm các điểm x lμm cho đạo hμm bậc 3 của hμm f(x) = 
)cos(45
1
x+ 
bằng không vμ vẽ đồ thị. 
Hãy vμo cửa sổ soạn thảo vμ trong cửa sổ nμy ta viết ch−ơng trình nh− sau: 
syms x 
f = 1/(5+4*cos(x)); 
f3 = diff(f,3); 
% dao ham bac 3 cua f. 
pretty(f3); 
%dua ve dang quyen toan hoc 
f3 = simplify(f3); 
pretty(f3); 
z = solve(f3); 
%Giai phuong trinh f3 = 0 
format; 
%lay 5 chu so so le 
zr = double(z); 
%chuyen ma tran, bieu thuc symbolic ve dang so 
ezplot(f3) 
%ve ham f3 
hold on; 
%luu do thi da ve 
Trang 18 
plot(zr,0*zr,'ro') 
% ve diem "o" mau do cho cac diem co gia tri thuc de f3 = 
0. 
plot([-2*pi,2*pi],[0,0],'g-.') 
Trang 19 

File đính kèm:

  • pdfLập trình ứng dụng với Matlab.pdf