Matlab và ứng dụng - Tính toán hình thức trong Matlab

 Khai báo biến:

› syms a b c x

hoặc

› a = sym(‘a’)

› b = sym(‘b’)

› c = sym(‘c’)

› x = sym(‘x’)

 Khai báo biến phức

› x = sym(‘x’,’real’); y = sym(‘y’,’real’)

hoặc syms x y real

› z = x + i*y

pdf20 trang | Chuyên mục: MATLAB | Chia sẻ: dkS00TYs | Lượt xem: 21088 | Lượt tải: 2download
Tóm tắt nội dung Matlab và ứng dụng - Tính toán hình thức trong Matlab, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
2/9/2010
1
 Tính toán hình thức.
 Symbolic Math Toolbox.
2/9/2010
2
 Khai báo biến:
› syms a b c x
hoặc
› a = sym(‘a’)
› b = sym(‘b’)
› c = sym(‘c’)
› x = sym(‘x’)
 Khai báo biến phức
› x = sym(‘x’,’real’); y = sym(‘y’,’real’)
hoặc syms x y real
› z = x + i*y
Khai báo biểu thức:
 Khai báo biểu thức: f = 2*x + b
› syms x b
› f = 2*x + b
hoặc
› f = sym(‘2*x + b’)
› sym(‘(sqrt(2) + 1)/3’)
› g = syms(‘5’) (khác g = 5)
› syms x y
› h = x^2 + y^2
2/9/2010
3
 Lệnh findsym: tìm biến hình thức trong 
biểu thức.
 Ví dụ
› syms a b n t x z
› s = x^n; g = sin(a*t + b)
› findsym(f)
› ans = x n
› findsym(g)
› ans = a b t
 findsym(g,1): tìm biến hình thức mặc định
› findsym(g,1)
› ans = t
 t = 0.1
› sym(t,’ f ’)
› ans = '1.999999999999a'*2^(-4)
› sym(t, ’r ’)
› ans = 1/10
› sym(t,’ e ’)
› ans = 1/10+eps/40
› sym(t,’ d ’)
› ans = .10000000000000000555111512312578
› digits(7)
› sym(t,’ d ’)
› ans = .1000000
2/9/2010
4
 Đạo hàm
 Tích phân
 Giới hạn
 Tổng chuỗi
 diff(Y) 
Y: hàm số hoặc biến hình thức cần lấy đạo hàm.
 Ví dụ
› syms x; f = sin(5*x)
› diff(f)
› ans = 5*cos(5*x)
› g = exp(x)*cos(x)
› diff(g)
› ans = exp(x)*cos(x) – exp(x)*sin(x)
› c = sym(‘5’); diff(c)
› ans = 0
2/9/2010
5
› diff(5)
› ans = [ ] vì 5 không phải là biến hình thức
 Lấy đạo hàm cấp 2
› diff(g,2)
hoặc 
› diff(diff(g))
› ans = -2exp(x)*sin(x)
 Đạo hàm đa biến
Gọi f = f(x,y) thì 
 Đạo hàm theo x: diff(f,x)
 Đạo hàm theo y: diff(f,y)
 Đạo hàm cấp 2 theo x: diff(f,x,2)
 Đạo hàm cấp 2 theo y: diff(f,y,2)
 Nếu x là biến mặc định của f thì diff(f,2) tương 
đương với diff(f,x,2).
o Ví dụ
 syms s t
 f = sin(s*t)
 diff(f,t) => ans = cos(s*t)*s
 diff(f,s)=> ans = cos(s*t)*t
 diff(f,t,2) => ans = -sin(s*t)*s^2
 findsym(f,1) => ans = t
Suy ra biến mặc định là t do đó diff(f,2) = diff(f,t,2)
2/9/2010
6
o Đạo hàm đối với ma trận
 syms a x
 A = [cos(a*x) sin(a*x); -sin(a*x) cos(a*x)]
 A =
[cos(a*x), sin(a*x)]
[-sin(a*x), cos(a*x)]
 diff(A)
 ans =
[-sin(a*x)*a, cos(a*x)*a]
[-cos(a*x)*a, -sin(a*x)*a]
 int(f,x) hoặc int(f) : Tìm nguyên hàm của 
hàm f = f(x).
 int(f,a,b) : Tính tích phân của f từ a -> b.
 Ví dụ
› syms x n a b t
› f = x ^ n
› int(f) ( hoặc inf(f,x))
› ans = x^(n+1)/(n+1)
2/9/2010
7
› g = cos(a*t + b)
› int(g)
› ans = sin(a*t + b)/a
› h = sin(2*x)
› int(h,0,pi/2)
› ans = 1
› u = exp(-x^2)
› int(u,0,inf)
› ans = 1/2*pi^(1/2)
 limit(f) :
 limit(f,x,a) :
hoặc limit(f,a)
 limit(f,x,a,’left’) :
 limit(f,x,a,’right’) :
0
lim ( )
x
f x
→
lim ( )
x a
f x
→
lim ( )
x a
f x
+→
lim ( )
x a
f x
−→
2/9/2010
8
 Ví dụ
› sym h n x
› limit((cos(x + h) – cos(x))/h,h,0)
› ans = - sin(x)
› limit((1 + x/n)^n,n,inf)
› ans = exp(x)
› limit(x/abs(x),x,0,’left’)
› ans = -1
› limit(x/abs(x),x,0,’right’)
› ans = 1
› limit(x/abs(x),x,0)
› ans = NaN
 Tính:
› syms x k
› s1 = symsum(1/k^2,1,inf)
› s2 = symsum(x^k,k,0,inf)
› s1 = 1/6*pi^2
› s2 = -1/(x-1)
2 2
1 1
1 ...
2 3
+ + +
21 ...x x+ + +
2/9/2010
9
 collect(f) – f = f(x)
 collect(f,y) - f = f(x,y,[)
• Đơn giản hàm f bằng các nhóm các biến x có 
cùng số mũ. 
• Trường hợp f có nhiều biến collect(f,y) sẽ chỉ
định gom nhóm theo biến y.
• collect(f) gom nhóm theo biến mặc định được 
chỉ ra trong findsym(f).
 Ví dụ
› syms x t
› f = x^3 – 6*x^2 + 11*x – 6
› g = (x – 1)*(x – 2)*(x – 3)
› h = -6 + (11 + (-6 + x)*x)*x
› pretty(f), pretty(g), pretty(h)
› collect(f) => ans = x^3 – 6*x^2 + 11*x – 6
› collect(g) => ans = x^3 – 6*x^2 + 11*x – 6
› collect(h) => ans = x^3 – 6*x^2 + 11*x – 6
› f = (1 + x)*t + x*t
› collect(f) => ans = 2*x*t + t
› collect(f,t) => ans = 2*x*t + t
2/9/2010
10
 expand(f) : phân tích biểu thức f.
 Ví dụ
› syms x y a b
› f = a*(x + y)
› expand(f) => ans = a*x + a*y
› g = (x -1)*(x -2)*(x – 3)
› expand(g) => ans = x^3 – 6*x^2 + 11*x – 6
› h = exp(a + b)
› expand(h) => ans = exp(a)*exp(b)
› cos(3*x) => ans = 4*cos(x)^3 – 3*cos(x)
 factor(f) : phân tích đa thức f thành nhân 
tử chung
 Ví dụ
› f = x^3 – 6*x^2 + 11*x – 6
› g = x^3 – 6*x^2 + 11*x – 5
› h = x^6 + 1
› factor(f)
› ans = (x – 1)*(x -2)*(x – 3)
› factor(g)
› ans = x^3 – 6*x^2 + 11*x – 5 ??
› factor(h)
› ans = (x^2 + 1)*(x^4 – x^2 + 1)
2/9/2010
11
 simplify(f): đơn giản biểu thức f.
 Ví dụ
› f = x*(x*(x – 6) + 11) - 6
› simplify(f) => ans = x^3 – 6*x^2 + 11*x – 6
› g = (1 – x^2)/(1 – x)
› simplify(g) => ans = x + 1
› syms x y positive
› simplify(log(x*y)) => log(x) + log(y)
› h = cos(x)^2 + sin(x)^2
› simplify(h) => ans = 1
 simple(f): rút gọn biểu thức f, kết hợp các 
phép toán của simplify, collect, factor.
 Ví dụ
› f = (1/a^3 + 6/a^2 + 12/a + 8)^1/3
› simplify(f) => ans = ((2*a + 1)^3/a^3)^1/3
› simple(f) => ans = (2*a + 1)/a
› syms x y positive
› h = log(x*y)
› simplify(h) => ans = log(x) + log(y)
› simple(h) => ans = log(x*y)
2/9/2010
12
 subs(expr,old,new): thay thế old bằng new 
trong biểu thức expr.
 Ví dụ
› syms x y
› f = sin(x)
› subs(f,x,pi/3) => ans = 0.8660
› subs(f,x,sym(pi)/3) => ans = 1/2*3^1/2
› S = x^y
› subs(S,{x y},{3 2})
› subs(S,{x y},{3 x+1})
› subs(S,y,1:5) => ans = [ x, x^2, x^3, x^4, x^5]
 [N D] = numden(f): trích tử số và mẫu số 
của f gán cho N và D.
 Ví dụ
› syms s
› H = -(1/6)/(s + 3) -(1/2)/(s + 1) + (2/3)/s
› simplify(H)
› pretty(ans)
› [N D] = numden(H)
› N = s + 2
› D = (s+3)*(s+1)*s
2/9/2010
13
 poly2sym(a,x): tạo một đa thức theo biến x 
với các hệ số được lấy lần lượt từ mảng a.
 Ví dụ
› syms x; a = [1 4 -7 -10]
› p = poly2sym(a,x)
› p = x^3 + 4*x^2 – 7*x - 10
 x = sym2poly(p): trích các hệ số của đa 
thức p chứa vào mảng s.
 Ví dụ
› syms x; p = 4*s^2 – 2*s^2 + 5*s – 16
› x = sym2poly(p) 
› x = 4 -2 5 -16
 Khai báo ma trận
› syms a b c d t
› A =[a b; c d]
› B = [cos(t) sin(t); -sin(t) cos(t)]
› C = [t 1 0;1 t 1; 0 1 t]
› d = round(rand(3,3))
› D = sym(D)
2/9/2010
14
 Các phép toán: với 2 ma trận A và B
 A + B
 A – B
 A*B
 A\B ( = A*inv(B) )
 A/B ( = inv(A)*B )
 A^n
 A.’
 Các hàm xử lý ma trận:
 inv(A)
 det(A)
 rank(A)
 diag(A)
 tril(A)
 triu(A)
2/9/2010
15
 Ví dụ
› c = floor(10*rand(4))
› D = sym(c)
› A = inv(D)
› inv(A)*A
› det(A)
› b = ones(1,4)
› x = b/A
› x*A
› A^3
 Có thể dùng các hàm rút gọn và lấy đạo hàm, 
tích phân trên ma trận.
 Ví dụ
› syms a b s
› K = [a+b, a-b;b-a, a+b]
› G = [cos(s) sin(s);-sin(s) cos(s)]
› L = K^2
› collect(L)
› factor(L)
› diff(L,a)
› int(K,a)
› J = K/G
› simplify(J*G)
› simplify(G*(G.’))
2/9/2010
16
 solve(f) : giải phương trinh f(x) = 0.
 Ví dụ
› syms a b c x
› f = a*x^2 + b*x + c;
› solve(f)
› ans =
[1/2*a(-b + (b^2 – 4*a*c)^1/2)]
[1/2*a(-b - (b^2 – 4*a*c)^1/2)]
 solve(f) : giải phương trình theo biến mặc 
định được chỉ ra trong hàm findsym(f), ở đây 
findsym(f) -> ans = x. solve(f,a): giải theo 
biến được chỉ định là a (tương tự cho b, c).
 Ví dụ
› solve(f,b)
› ans = -(a*x^2 + c)/x
 solve(‘ f(x) = g(x) ’): giải phương trình f(x) = 
g(x). Lưu ý: phải đặt trong dấu nháy.
2/9/2010
17
 Ví dụ
› s = solve(`cos(2*x) + sin(x) = 1`)
› s =
[ 0]
[ pi]
[ 1/6*pi]
[ 5/6*pi]
 solve(‘f(x)’,’g(x)’,’h(x)’,[): giải hệ nhiều 
phương trình.
 Ví dụ
Giải hệ:
› syms x y alpha
› [x y] = solve(‘x^2*y^2=0’,’x – y/2 = alpha’)
x = y =
[ 0] [ -2*alpha]
[ 0] [ -2*alpha]
[ alpha] [ 0]
[ alpha] [ 0]
 Nghiệm: v = [x, y]
2 2 0
/2
x y
x y α
 =

− =
2/9/2010
18
 Giải hệ:
› S = solve(‘u^2+v^2=a^2’,’u+v=1’,’a^2–2*a=3’)
› S =
a: [2x1 sym]
u: [2x1 sym]
v: [2x1 sym]
› S.a
ans =
[ 3]
[ -1]
2 2 2
2
1
2 3
u v a
u v
a a
+ =

+ =
 − =
 Hàm: dsolve
 Ví dụ
 Giải:
› dsolve(‘Dy=1+y^2’,’y(0)=1’)
› y = tan(t + 1/4*pi)
 Giải:
› y =dsolve(‘D2y=cos(2*x) – y’,’y(0)=1’,’Dy(0)=0’,’x’)
› simplify(y); ans = 4/3*cos(x) – 2/3*cos(x)^2+1/3
21 , (0) 1
dy
y y
dt
= + =
2
2
os(2 ) , y(0)=1, (0) 0
d y d
c x y y
dx dx
= − =
2/9/2010
19
 Giải:
› dsolve(‘D3u=u’,’u(0)=1’,’Du(0)=-1’,’D2u(0)=pi’),’x’)
 Giải:
› [f g] = dsolve(‘Df = 3*f + 4*g’,’Dg = -4*f + 3*g’,[
’f(0) = 0’,’g(0) = 1’)
› f = exp(3*t)*sin(4*t); g = exp(3*t)*cost(4*t)
3
3
(0) 1; '(0) 1; ''(0)
d u
u
dx
u u u π

=

 = = − =
3 ( ) 4 ( ) , (0) 0
4 ( ) 3 ( ) , (0) 1
df
f t g t f
dt
dg
f t g t g
dt

= + =

 = − + =

 Trong 2D:
 Hàm ezplot(f)
 Ví dụ
› syms t x y
› f = sin(2*x)
› g = t + 3*sin(t)
› h = 2*x/(x^2 -1)
› ezplot(f); ezplot(g); ezplot(h)
› ezplot(x*exp(-x), [-1 4])
2/9/2010
20
 Trong 3D
 Hàm ezplot3(x,y,z)
 Ví dụ
› syms x y z t
› x = 3*t/(1 + t^3)
› y = 3*t^2/(1 + t^3)
› z = sin(t)
› ezplot3(x,y,z)
 ezcontour / ezcontourf
 ezmesh / ezmeshc
 ezsurf / ezsurfc

File đính kèm:

  • pdfMatlab và ứng dụng - Tính toán hình thức trong Matlab.pdf