Tải bản đầy đủ - 0 (trang)
3- Đơn giản hoá biểu thức và thay thế

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

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

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



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

>> isprime(3)

ans =

1

>> isprime(4)

ans =

0

* Phân tích đa thức ra dạng thừa số horner:

horner(f) Biểu diễn đa thức symbolic f dới dạng horner (lồng vào

nhau)

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]

* T¸ch tư sè vµ mÉu sè cđa mét biĨu thøc symbolic

[n,d] = numden(A): biến đổi mỗi phần tử của A thành dạng hữu

tỷ trong đó tử số và mẫu số là các đa thức (tơng đối) nguyên tố với

các hệ số nguyên (integer).

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]

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



73



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

d = [1, b]



5.3.4- Đơn giản biểu thức

Để đơn giản biểu thức trong symbolic math toolbox định nghĩa

các hàm sau:

+ R = simplify(S)

+ R = simple(S)

Hàm simplify là một công cụ mạnh, mục đích tổng quát, hàm

này áp dụng một số đặc tính của đại số nh tổng, luỹ thừa, căn bậc

hai, phân số và một số đặc tính hàm gồm có hàm lợng giác, hàm mũ

và hàm logarit, các hamf siêu việt,

Ví dụ:

>>syms x y a b c

>>simplify(sin(x)^2 + cos(x)^2)

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]

>>simplify(log(x*y))

ans = log(x) + log(y)

Hàm simple có mục tiêu toán học không chính thống là tìm một

phép đơn giản hoá của một biểu thức sao cho nã cã sè ký tù Ýt nhÊt.

Hµm nµy hoàn thành mục tiêu của nó bằng cách áp dụng một cách độc

lập các hàm simplify, collect, factor, và các hàm đơn giản hoá khác

vào một biểu thức và theo dõi chiều dài của các kết quả. Sau đó hàm

simple trả về kết quả ngắn nhất.

Hàm simple có rất nhiều dạng khác nhau, mỗi dạng lại trả về một

kết quả khác nhau. Lệnh [r,h] = simple(S) không trả về biểu thức

đơn giản hoá ngay mà trả về biểu thức đơn giản nhất mà nó tìm

thấy đồng thời với một sâu ký tự mô tả phép đơn giản hoá. Bảng sau

minh hoạ kết quả trả về đối với các biểu thức S khác nhau

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



74



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

S

cos(x)^2+sin(x)^2

2*cos(x)^2-sin(x)^2

cos(x)^2-sin(x)^2

cos(x)+(-



R

1

3*cos(x)^2-1

cos(2*x)

cos(x)+i*sin(x)



How

combine(trig)

simplify

combine(trig)

radsimp



sin(x)^2)^(1/2)

cos(x)+i*sin(x)



exp(i*x)



convert(exp)



(x+1)*x*(x-1)



x^3-x



collect(x)



x^3+3*x^2+3*x+1



(x+1)^3



factor



cos(3*acos(x))



4*x^3-3*x



expand



5.3.5- Thay thÕ

Ta cã thĨ thay thÕ c¸c biÕn trong biĨu thøc b»ng c¸c biÕn hay c¸c

sè thuộc kiểu khác bởi lệnh subs hoặc lệnh subexpr.

Lệnh subs có các dạng sau:

+ subs(S): Thay thế tất cả các biến symbolic trong biểu thức bằng

các giá trị có đợc từ việc gọi hàm hoặc từ Workspace của Matlab.

+ subs(S, new): Thay thÕ biÕn symbolic tù do trong S b»ng new.

+ subs(S, old, new): Thay thÕ old b»ng new trong biểu thức S. Old

là một biến symbolic, một sâu đại diện cho một tên biến, hoặc một

biểu thức sâu ký tù. New cã thĨ lµ mét biÕn, mét biĨu thøc symbolic,

biến số hoặc biểu thức số.

Ví dụ:

>>subs(a+b,a,4)

ans = 4+b

giả thiết trong Workspace tồn tại a = 980 và C = 3, câu lệnh

y=dsolve(Dy = -a*y) trả về y = exp(-a*t)*C, khi đó câu lệnh:

>>subs(y)

ans = 3*exp(-980*t)

Ta có thể thay thế nhiỊu biÕn mét lóc b»ng c¸ch sư dơng có ph¸p

sau:

+ subs(S, {old1, old2, …,oldn}, {new1, new2,…, newn})

vÝ dô: >> subs(cos(a)+sin(b),{a,b},{sym('x'),2})

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



75



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

ans = cos(x)+sin(2)

Hàm (S) viết lại biểu thức S theo các biểu thức con chung:

[Y,SIGMA] = subexpr(X,SIGMA) hoặc [Y,SIGMA] =

subexpr(X,'SIGMA') viÕt l¹i biĨu thøc X theo biĨu thøc con chung của

nó.



5.3.6- Biểu diễn biểu thức symbolic dới dạng toán

học

Sử dụng hàm pretty(S) để hiển thị S dới dạng dễ đọc hơn nh

trong quy ớc toán học thông thờng. Ví dụ:

>>s=2*cos(x)^2-sin(x)^2

s=

2*cos(x)^2-sin(x)^2

>>pretty(s)

2



2



2 cos(x) - sin(x)

>>syms x a

>>s=solve(x^3+a*x+1);

>>pretty(s)



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



76



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



5.4- Giải phơng trình



5.4.1- Giải phơng trình đại số

Sử dụng lệnh solve để giải hệ phơng trình đại số. Giả sử S là

một biểu thức symbolic. Lệnh solve(S) sẽ có gắng tìm các giá trị của

biến symbolic trong S (đợc xác định bởi findsym(S)) làm cho S bằng

không. Lệnh solve( ) có các cú pháp nh sau:

+ solve(‘PT1’, ‘PT2’, …, ‘PTn’)

+ solve(‘PT1’, ‘PT2’, …, ‘PTn’, ‘v1, v2,…, vn’)

+ solve(‘PT1’, ‘PT2’, …, ‘PTn’, ‘v1’, ‘v2’,…, ‘vn’) trong đó PT là phơng trình, v1, v2,,vn là các biến hay ẩn. Các biến symbolic không

đợc liệt kê trong danh sách đối số đợc coi là các tham số.

Ví dô 1:

>>S = solve('a*u^2 + v^2','u - v = 1','a,u') coi a và u là các biến còn

v là tham số.

>> s=a*x^2+b*x+c;

>>solve(s)

ans =

[ 1/2/a*(-b+(b^2-4*c*a)^(1/2))]

[ 1/2/a*(-b-(b^2-4*c*a)^(1/2))]

>>pretty(ans)



Ví dụ 2:

sin(x)+y^2+log(z)=7

3*x+2^y+z^3=4

x+y+z=2



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



77



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

>>[x,y,z]=solve('sin(x)

+y^2+log(z)=7','3*x+2^y+z^3=4','x+y+z=2')

x = -2.3495756224572032187410536400368

y = 2.6835269194785219427270239079010

z = 1.666048702978681276014029732135

VÝ dô:

x^2 + x*y + y = 3

x^2 - 4*x + 3 = 0

>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')

x=

[ 1]

[ 3]

y=

[



1]



[ -3/2]

Lu ý: Nếu là hệ nhiều phơng trình chẳng hạn 10 phơng trình,

việc gõ

[x1, x2, x3, x4, x5, x6, x7, x8, x9, x10]= solve(…) th× rÊt bÊt tiện

và tốn thời gian. Để phá vỡ khó khăn đó, solve trả về một cấu trúc mà

các trờng của nó là các lời giải (nghiệm). Ví dụ:

>>S = solve('u^2v^2 = a^2','u + v = 1','a^2–2*a = 3')

S=

a: [2x1 sym]

u: [2x1 sym]

v: [2x1 sym]

>> S.a

ans =

[ -1]

[ 3]



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



78



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



5.4.2- Phơng trình vi phân

Hàm dsolve tính toán lời giải symbolic cho các phơng trình vi

phân thờng. Các phơng trình đợc xác định bởi biểu thức symbolic

chứa chữ D để biểu diễn ký hiệu vi phân d/dt. Các ký hiệu D2, D3,,

Dn tơng ứng với đạo hàm bậc 2, 3,, n. Vì vây, D2y tơng đơng với

d2y/dt2. Trong lời giải dsolve thì biến độc lập mặc định là t. Lu ý

rằng tên của biến symbolic không đợc chứa ký tự D.

Điều kiện đầu có thể đợc xác định bằng cách bổ xung thêm các

phơng trình. Nếu điều kiện đầu không đợc xác định thì lời giải sẽ

chứa các hằng số tích phân C1, C2,...

Có ph¸p cđa lƯnh dsolve: dsolve(‘PT1’, ‘PT2’,…, ‘PTn’)

VÝ dơ:

>>y = dsolve('(D2y) =1','y(0) = 1')

y = 1/2*t^2+C1*t+1

>>[x,y] = dsolve('Dx = y', 'Dy = -x')

x=



cos(t)*C1+sin(t)*C2



y = -sin(t)*C1+cos(t)*C2



5.5- Phép Biến đổi tích phân

Các phép biến đổi tích phân và các phép biến đổi gián đoạn

là các công cụ tính toán mạnh và quan trọng trong kỹ thuật, toán ứng

dụng và khoa học.



5.5.1- Biến đổi fourier và fourier ngợc

Phép biến đổi fourier của hàm f(x) đợc định nghĩa nh sau:

+



F[f](w)= f (x)eiwxdx và phép biến đổi fourier ngợc là:





1 +

F [f](x)=

f (w)eiwxdw



2

-1



Phép biến đổi tích phân 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 định là x. Kết quả trả về mặc định là hàm của w. Nếu f =

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



79



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

f(w), thì fourier trả về một hàm của t: F=F(t). Theo định nghĩa, F(w)

= int(f(x)*exp(-i*w*x),x,-inf,inf), phép tích phân ở trên đợc thực hiện

theo x (do kết quả của hàm findsym).

+ F = fourier(f,v): Kết quả trả về F là hàm của biến v thay cho

biến mặc định w:

F(v) = int(f(x)*exp(-i*v*x),x,-inf,inf).

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 định x và w: F(v) = int(f(u)*exp(-i*v*u),u,-inf,inf).

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)

• PhÐp biến đổi fourier ngợc:

+ f = ifourier(F): là phép biến đổi fourier ngợc của hàm vô hớng F

với biến độc lập mặc định w. Kết quả trả về mặc định của phép

biến đổi ngợc này là một hàm của x. Phép biến đổi fourier ngợc đợc

áp dụng cho một hàm của w và trả về một hàm của x: F=F(w)

=>f=f(x). Nếu F = F(x) thì IFOURIER trả về một hàm của t: t: f = f(t).

Theo định nghĩa, f(x)=1/(2*pi)*int(F(w)*exp(i*w*x),w,-inf,inf) và

phép tích phân đợc thực hiện với w.

+ f =: f là hàm của biến u thay thế biến mặc định x.

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



80



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

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

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

×