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

