Tải bản đầy đủ - 0 (trang)
1- Tạo đối tượng (biến, biểu thức) symbolic

1- Tạo đối tượng (biến, biểu thức) symbolic

Tải bản đầy đủ - 0trang

Giáo trình Matlab và ứng dụng

Giả sử bạn muốn nghiên cøu hµm bËc hai f = ax2 + bx +c.

>> f=sym('a*x^2+b*x+c')

f=

a*x^2+b*x+c

Câu lệnh trên đã gán biểu thức symbolic ax2 + bx +c vào biến f.

Tuy nhiên, trong trờng hợp này Matlab không tạo ra các biến tơng ứng

với các số hạng của biểu thức (a, b, c, x). Để thực hiện các phép toán

symbolic chẳng hạn nh tích phân, đạo hàm, đối với f, cần tạo ra các

biến một cách chÝnh x¸c b»ng c¸ch gâ:

>>a = sym('a')

>>b = sym('b')

>>c = sym('c')

>>x = sym('x')

Hoặc ta có thể khai báo một cách đơn giản:

>> syms a b c x

* Tạo các biến thùc:

>> x = sym(‘x’, ‘real’);y =sym(‘y’,’real’) %x,y lµ biÕn kiĨu thực

symbolics

hoặc đơn giản hơn

>>syms x y real %Lệnh này tạo ra các biến x và y là biến

symbolic kiểu thực.

>>syms x real y

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

% x lµ biÕn kiĨu thùc, y lµ biÕn bÊt kú kiĨu symbolic

Để xoá đặc tính real của các biến x, y ta dïng lÖnh sau: syms x

y unreal hay:

>>x = sym(‘x’, ‘unreal’)

syms t

Q = sym(‘Q(t)’);

% t biÕn symbolic vµ Q lµ hàm symbolic.

* Biến symbolic mặc định



Bộ môn TĐH Xí nghiệp Công nghiệp



64



Giáo trình Matlab và ứng dụng

Khi vận dụng các hàm toán học, việc chọn biến độc lập thờng là

rõ ràng từ ngữ cảnh. Ví dụ, ta xem xét biểu thức toán học f = sin(a.t

+ b) đợc biểu diễn trong Matlab nh sau: f =. NÕu ta cÇn tÝnh đạo hàm

của biểu thức này mà không xác định biến độc lập thì theo quy ớc

toán học ta nhận đợc f = a.cos(a.t + b). Giả thiết rằng biến độc lập

trong biểu thức này là t thì các biến còn lại a, b đợc xem nh các hằng

số hoặc tham số. Theo quy ớc toán học thì biến độc lập thờng là các

chữ in thờng nằm ở cuối bảng chữ c¸i (vÝ dơ: x, y, z, t, u, v,…).

>>syms a b t

>>f = sin(a*t + b);

>>diff(f)



%Lệnh này tính đạo hàm của biểu thức symbolic f.



trong câu lệnh diff(f), ta không xác định là đạo hàm biểu thức f

theo biến nào (a, b hay x). Làm thế nào Matlab xác định đợc ta muốn

đạo hàm theo biến t mà không phải là a hoặc b. Trong symbolic math

toolbox sử dụng một biến symbolic để xác định biến độc lập mặc

định trong trờng hợp chúng ta không xác định biến độc lập, đó là

một hàm tiện ích findsym. Biến symbolic mặc định đợc sử dụng

trong các phép toán tính toán, đơn giản hoá biểu thức, giải phơng

trình và các phép biến đổi.

>>findsym(f,1)

ans =

t

ở đây, đối số thứ hai trong hàm findsym biểu thị số biến

symbolic mà ta muốn tìm trong biểu thức f. Nếu không xác định đối

số thứ hai thì findsym sẽ trả về một danh sách liệt kê tất cả c¸c biÕn

trong biĨu thøc. VÝ dơ:

>> findsym(f)

ans =

a, b, t

Lt findsym: Biến độc lập trong một biểu thức symbolic là một

chữ cái gần chữ x nhất trong bảng chữ cái. Nếu có hai chữ gần chữ x

thì chữ sau x trong bảng chữ cái đợc chọn.

Bộ môn TĐH Xí nghiệp Công nghiệp



65



Giáo trình Matlab và ứng dụng

ví dụ: >>findsym(a+c-v*y,1)

ans=

y



5.2- Các phép tính

Symbolic Math Toolbox cung cấp các hàm để thực hiện các phép

tính cơ bản nh: tích phân, đạo hàm, tìm giới hạn, tính tổng của

chuỗi, khai triển Taylor.



5.2.1- Đạo hàm

Để tính đạo hàm của một biểu thức symbolic ta sử dụng hàm

diff()

+ diff(S): Đạo hàm biểu thức symbolic S với biến tự do đợc xác

định bởi hàm findsym(S).

+ diff(S,v) hay diff(S,sym(v)): Đạo hàm biểu thức symbolic S với

biến lấy đạo hàm là biến symbolic v nghĩa là thực hiện phép toán

dS/dv.

+ diff(S,n) : Đạo hàm cấp n biểu thức S, n là số nguyên dơng.

Ví dụ:

>>syms x t

>> y = sin(x^2);

>>z = diff(y);

z = 2*cos(x^2)*x

>>pretty(z) %hiển thị dạng quen thuộc

2.cos2x.x

>>y = diff(t^6,6) % đạo hàm bậc 6 của hàm t6.

y = 720

>>syms u v

>>y = u^2*v - u*v^3;

>> y2u = diff(y,u,2) %dao ham cap 2 theo u

y2u = 2*v

>> y3u = diff(y,v,3) %dao ham cap 3 theo v



Bé m«n TĐH Xí nghiệp Công nghiệp



66



Giáo trình Matlab và ứng dụng

y3u = -6*u



5.2.2- Tích phân

Để tính tích phân của một biểu thức symbolic ta sử dụng hàm

int()

+ int(S): Tích phân không xác định của biển thức symbolic S

theo biến mặc định đợc xác định bởi findsym.

+ int(S, v): Tích phân không xác định của biểu thức symbolic S

với biến tích phân v.

+ int(S,a,b): Tích phân không xác định của biểu thức symbolic S

với biến tự do và cận lấy tích phân từ [a,b].

+ int(S,v,a,b): Tích phân không xác định của biểu thức symbolic

S với biến tích phân v và cận lấy tÝch ph©n tõ [a,b].

Vidơ:

>>syms x t z alpha

>>int(-2*x/(1+x^2)^2)

ans = 1/(1+x^2)

>>int(x/(1+z^2),z)

ans = x*atan(z)

>>int(x*log(1+x),0,1)

ans = 1/4

>>int(-2*x/(1+x^2)^2)

ans = 1/(1+x^2)

>> int([exp(t),exp(alpha*t)])

ans = [ exp(t), 1/alpha*exp(alpha*t)]

VÝdơ: TÝnh tÝch ph©n I =











2



e −( sx ) dx



−∞



>>Syms x s real

>>f = exp(-(s*x)^2);

>>I = int(f,x,-inf,inf)% inf - Infinity là vô cùng lớn

I=



Bộ môn TĐH Xí nghiệp Công nghiệp



67



Giáo trình Matlab và ứng dụng

Signum(s)/s*pi^(1/2)

Hàm signum chính là hàm sign (hµm dÊu), nghÜa lµ sign(s) cho

ta:

sign(s) = 1 khi s>0; sign(s) = 0 khi s =0; sign(s) = -1 khi s<0;



5.2.3- Tìm giới hạn

Để tìm giới hạn của biểu thức symbolic F ta dïng lÖnh limit()

+ limit(F, x, a) : Tìm giới hạn của biểu thức F khi x a.

+ limit(F, a) : Tìm giới hạn của biểu thức F với biến độc lập

findsym(F) a.

+ limit(F) : Tìm giới h¹n cđa biĨu thøc F khi a = 0.

+ limit(F, x, a, ‘right’) hc 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]



5.2.4- Tính tổng của dãy số symbolic

Để tìm tỉng cđa biĨu thøc symbolic S ta dïng lƯnh 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.

Bộ môn TĐH Xí nghiệp Công nghiệp



68



Giáo trình Matlab vµ øng dơng

+ 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.

+ 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 +



1

1

+ 2 + ….

2

2

3



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)

s2 =



-1/(x-1)



5.2.5- Khai triĨn taylor

+ taylor(f): Lµ phÐp xÊp xØ đa thức bậc 5 gần đúng với f. Về mặt

kỹ thuật, chuỗi Taylor (xấp xỉ xung quanh điểm x 0 0) chính là trờng

hợp tổng quát của chuỗi Maclaurin (xấp xỉ xung quanh điểm x0 = 0)



Bộ môn TĐH Xí nghiệp Công nghiệp



69



Giáo trình Matlab và ứng dụng

+ 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âuNếu không cho giá trị n thì mặc định 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))*(x2)+exp(2*sin(2))*(sin(2)+cos(2)+2*cos(2)^2+2*cos(2)*sin(2)+1/2*sin(2)^2)*(x2)^2+exp(2*sin(2))*(-1/3*cos(2)-1/2*sin(2)-cos(2)*sin(2)+2*cos(2)^2sin(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-')



Bộ môn TĐH Xí nghiệp Công nghiệp



70



Giáo trình Matlab và ứng dụng



5.3- Đơn giản hoá biểu thức và thay thế



5.3.1- Gom số hạng, biến

Để gom các hệ số có cùng l thõa cđa biÕn ®éc lËp ta sư dơng

lƯnh collect().

+ collect(S): S là đa thức, gom các hệ số có cùng luỹ thừa của

biến mặc định đợc xác định bởi findsym(S).

+ collect(S,v): S là đa thức, gom các số hạng chøa biÕn v

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]



5.3.2- Khai triĨn biĨu thøc

C©u lƯnh expand(S) khai triĨn biĨu thức symbolic S thành nhân

tử (dạng tổng của các tích). Lệnh expand thờng đợc dùng để khai

triển đa thức nhng cũng đợc dùng để khai triển các hàm lợng giác, các

hàm mũ và hàm logarit.

expand(S): Khai triển biểu thức symbolic S, viết mỗi phần tử của

S thành tích các thừa sè cđa nã.

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))

Bộ môn TĐH Xí nghiệp Công nghiệp



71



Giáo trình Matlab và ứng dụng

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]



5.3.3- Phân tích biểu thức thành thừa số

* Factor(S): Phân tích biểu thức symbolic S thành thừa số

nguyên tố. Lệnh này trả về một véc tơ các thừa số nguyên tố của S.

Nếu S không thể phân tích thành các số hữ tỷ thì kết quả sẽ là

chính nã.

VÝ dô:

>>syms x y a b

>>factor(x^3-y^3)

ans = (x-y)*(x^2+x*y+y^2)

>>factor([a^2-b^2, a^3+b^3])

ans = [(a-b)*(a+b), (a+b)*(a^2-a*b+b^2)]

>>factor(sym('12345678901234567890'))

(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)

>>factor(x^3-6*x^2+11*x-5)

ans =(x^3-6*x^2+11*x-5)

* primes(n): Tạo véc tơ hàng có các phần tử là các số nguyên tố nhở

hơn hoặc bằng n. Số nguyên tố đợc định nghĩa là số chỉ chia hết

cho 1 và cho chính nó, ngoài ra không còn một thừa số nào khác. Ví

dụ:

>> primes(5)

ans =

2



3



5



* isprime(x): Kiểm tra xem x có phải là số nguyên tố không nếu

phải thì giá trị trả và là 1, ngợc lại thì trả về là 0. Trờng hợp x là mét

®a thøc hay mét ma trËn thi kiĨm tra xem các phần tử của x có phải

là số nguyên tố không. Ví dụ:

Bộ môn TĐH Xí nghiệp Công nghiệp



72



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

1- Tạo đối tượng (biến, biểu thức) symbolic

Tải bản đầy đủ ngay(0 tr)

×