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.
ể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:
- Lập trình ứng dụng với Matlab.pdf