1. Trang chủ
  2. » Công Nghệ Thông Tin

Sử dụng Symbolic Toolbox trong Mathlab

42 4,2K 21
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Sử Dụng Symbolic Math Toolbox Trong Mathlab
Trường học Trường Đại Học Waterloo
Chuyên ngành Toán Học
Thể loại Bài Giảng
Thành phố Waterloo
Định dạng
Số trang 42
Dung lượng 272,03 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sử dụng Symbolic Toolbox trong Mathlab

Trang 1

Chương 2 : sử dụng symbolic math toolbox

Đ1 Khái niệm chung

Symbolic Math Toolboxes kết hợp tính toán bằng chữ vào môi trường MATLAB.Các

toolbox này bổ sung các tiện ích số và đồ thị với các kiểu tính toán toán học khác nhau

Calculus đạo hàm,tích phân,giới hạn,tổng và chuỗi Taylor

Linear Algebra nghịch đảo,định thức,giá trị riêng,phân tích và dạng chính

Variable-Precision

Arithmetic

đánh giá độ chính xác của các biểu thức đại số

Transform biến đổi laplace,fourrier và z

Đ2 Khởi động toolbox

1 Các đối tượng chữ:Trong phần này chúng ta sẽ xem xét cách tạo và dùng các đối tượng

chữ.Chúng ta cũng sẽ xem xét các biến chữ mặc định.Symbolic Math Toolbox định nghĩa một

kiểu dữ liệu MATLAB mới gọi là đối tượng chữ hay sym.Bên trong,một đối tượng chữ là một

cấu trúc số liệu mà nó lưu biểu diễn chuỗi các kí tự.Symbolic Math Toolbox dùng các đối

tượng chữ để biểu diễn các biến chữ,các biểu thức chữ,các ma trận chữ

2 Tạo các biến và các biểu thức chữ:Lệnh sym cho phép ta xây dựng các biến và các biểu

thức chữ.Ví dụ lệnh:

x = sym('x')

a = sym('alpha')

tạo ra các biến chữ là x và và a với x là x và a là alpha

Giả sử ta muốn ta muốn dùng biến chữ để biểu diễn tỉ lệ vàng

Trang 2

ans =

0

Bây giờ giả sử ta muốn giải phương trình bậc 2 f =ax2 +bx+c.Phát biểu:

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

gán biểu thức chữ ax2+bx+c cho biến f.Tuy nhiên trong trường hợp này Symbolic Math

Toolbox không tạo ra các biến tương ứng với các số hạng a,b,c và x trong biểu thức.Để thực

hiện các phép toán bằng chữ(ví dụ tích phân,đạo hàm,thay thế v.v) trên f ta phải tạo các biến một cách rõ ràng,nghĩa là cần viết:

Nói chung là ta có thể dùng sym hay syms để tạo các biến chữ nhưng nên dùng syms để tiết

kiệm thời gian

2 Biến đổi giữa số và chữ:

a Tạo các biến thực và phức:Lệnh sym cho phép ta mô tả các thuộc tính toán học của

các biến chữ bằng cách dùng tuỳ chọn real.Phát biểu:

Lệnh conj là toán tử tạo số phức liên hợp

Để xóa thuộc tính real của x ta dùng lệnh:

syms x unreal

hay:

x = sym('x','unreal')

Lệnh clear x không xoá thuộc tính số real của x

b Tạo các hàm trừu tượng:Nếu ta muốn tạo một hàm trừ tượng(nghĩa là một hàm

không xác định) f(x) cần dùng lệnh:

f = sym('f(x)')

Khi này f hoạt động như là f(x) và có thể xử lí bằng các lệnh toolbox.Ví dụ để tính vi phân bậc

1 ta viết:

Trang 3

ứng dụng này của hàm sym sẽ rất hữu ích trong biến đổi Fourrier,Laplace và z

c Dùng sym để truy cập các hàm của Maple:Ta có thể truy cập hàm giai thừa k! của Maple khi dùng sym

ans =

n!

hay nếu tính 12! ta cũng có thể viết:

prod(1:12)

d Ví dụ tạo ma trận chữ: Một ma trận vòng là ma trận mà hàng sau có được bằng cách

dịch các phần tử của hàng trước đi 1 lần.Ta tạo một ma trận vòng A bằng các phần tử a,b và c:

Do A là ma trận vòng tổng mỗi hàng và cột như nhau:

sum(A(1,:))

ans =

a+b+c sum(A(1,:)) == sum(A(:,2)) % This is a logical test

ans =

1

Bây giờ ta thay A(2,3) bằng beta và b bằng alpha:

syms alpha beta

Trang 4

Tỳ ví dụ này ta tháy dùng các đối tượng chữ cũng tượng tự như dùng số trong MATLAB

e Biến chữ mặc định:Khi dùng các hàm toán học,việc chọn các biến độc lập thường rất

rõ ràng.Ví dụ xem bảng sau:

tạo ra các biểu thức chữ r , t và f.Ta có thể dùng các lệnh diff,int,subs hay các lệnh Symbolic

Math Toolbox khác để xử lí các biểu thức như vậy

b Tạo các M-file:M-file cho phép ta dùng các hàm tổng quát hơn.Ví dụ ta muốn tạo ra

hàm sinc = sin(x)/x ta sẽ viết một M-file có nội dung như sau:

function z = sinc(x)

%SINC The symbolic sinc function

% sin(x)/x This function

% accepts a sym as the input argument

Trang 5

g = sin(at+b)

g’ = acos(at+b)

g = sin(a*t+b) diff(g) hay diff(g,t)

h = Jv(z)

h’ = Jv(z)(v/z) - Jv+1(z)

h = besselj(nu,z) diff(h) hay diff(h,z)

Để tính đạo hàm bậc 2 của f theo x và a ta viết:

diff(f,2)

ans =

- sin(a*x)*a^2 diff(f,x,2)

Trang 6

J

ϕλ

[ cos(l)*cos(f), -r*sin(l)*cos(f), -r*cos(l)*sin(f) ]

[ cos(l)*sin(f), -r*sin(l)*sin(f), r*cos(l)*cos(f)]

Chú ý là đối số thứ nhất của hàm jacobian phải là vec tơ cột và đối số thứ hai là vec tơ

hàng.Hơn nữa do định thức của ma trận Jacobian là biểu thức l−ợng giác khá phức tạp nên ta

dùng lệnh simple để thay thế và rút gọn

Bảng sau tổng hợp hàm diff và hàm jacobian

Toán tử toán học Lệnh MATLAB

f = exp(ax + b) syms a b x

f = exp(a*x + b) dx

fd

v,u(

)trJ

Trang 7

h

)x()hx(lim)

x

(

f

0 h

ư+

=

→Symbolic Math Toolbox cho phép giới hạn của một hàm một cách trực tiếp hơn.Lệnh:

1lim

x

0

cho 3 kết quả khác nhau : không xác định , -∞ và +∞

Trong trương hợp không tồn tại gới hạn Symbolic Math Toolbox trả về kết quả NaN.Ví dụ:

limit(1/x,x,0) % Equivalently, limit(1/x)

x(lim0

)x(lima

x → limit(f,x,a) hay limit(f,a)

)x(lima

x → ư limit(f,x,a,’left’)

Trang 8

x → + limit(f,x,a,’right’)

3 Tích phân:

a Các vấn đề chung:Nếu f là một biểu thức chữ thì int(f) tìm một biểu thức khác F sao cho

diff(F) = f.Như vậy int(f) cho ta tích phân bất định của f.Tương tự như đạo hàm int(f,v) lấy tích

phân theo biến độc lập v.Ta có bảng sau:

1n

xdx

x

1 n n

0

1dx)

x

2

sin(

int(sin(2*x),0,pi/2) hay int(sin(2*x),x,0,pi/2)

g = cos(at+b)

∫ = sin(at+b)

a

1dt

z(Jdz

Khi MATLAB không tìm được tích phân nó viết kại lệnh đã nhập vào

b Tích phân với hằng số thực:Một trong các vấn đề khi tính tích phân là giá trị của các

thông số.Ta xét hàm eư(kx)2.Hàm này rõ ràng là có giá trị dương với mọi k và x và có dạng hình chuông.Giá trị của hàm tiến đến 0 khi x→±∞ với mọi số thực k.Ta lấy ví dụ

2

1

k = và vẽ đồ thị của hàm bằng các lệnh:

Need to know the sign of > k^2

Will now try indefinite integration and then take limits

Warning: Explicit integral could not be found

ans =

Trang 9

dùng lệnh sym.Một đặc điểm có ích của sym gọi là tuỳ chọn real cho phép ta khai báo k là biến

thực.Do vậy tích phân trên hoàn toàn tính đ−ợc trong toolbox nhờ các lệnh:

syms k real % Be sure that x has been declared a sym

g int(g,-inf,inf) hay int(g,x,-inf,inf)

4 Tính tổng:Ta có thể tính tổng biểu thức chữ khi chúng tồn tại bằng cách dùng lệnh

symcum.Ví dụ chuỗi :

⋅⋅

⋅++

3

12

Trang 10

x

Xap xi Taylor

Ham Taylor

Trang 11

Symbolic Math Toolbox cung cấp một bộ các lệnh dễ dùng để vẽ đồ thị các biểu chữ,bao

gồm các đường cong trong mặt phẳng(ezplot),các đường đẳng mức(ezcontour và ezcontourf) , các mặt cong(ezsurf , ezsurfc , ezmesh và ezmeshc),đồ thị trong toạ độ cực(ezpolar) và đường cong dưới dạng thông số (ezplot và ezplot3) va mặt dưới dạng thông số (ezsurf).Trong phần này chúng ta xem cách dùng hàm ezplot vẽ đồ thị hàm f(x).Đồ thị của hàm như sau:

Phạm vi mặc định khi vẽ đồ thị của hàm là [-2πữ2π ].Để chỉ cụ thể phạm vị vẽ đồ thị ta dùng lệnh:

ezplot(f,[a b])

Lúc này đồ thị của hàm được vẽ trong đoạn [a , b]

Bây giờ ta tìm đạo hàm bậc 2 của f(x):

x 1/(5+4 cos(x))

-5 -4 -3 -2 -1 0 1 2

x 32/(5+4 cos(x))3 sin(x)2+4/(5+4 cos(x))2 cos(x)

Trang 12

Từ đồ thị ta thấy rằng giá trị của f”(x) nằm trong khoảng [-4 , 1].Giá trị max vàmin của f”(x) xuất hiện tại f”’(x)=0.Phát biểu:

4 3

))xcos(

45(

)xsin(

4))xcos(

45(

)xcos(

)xsin(

96))xcos(

45

(

)xsin(

384

+

ư+

++

Ta rút gọn f3 và viết lại dưới dạng dễ đọc:

))xcos(

45(

)25)xcos(

80)xcos(

80)xsin(

96)(

xsin(

4

+

ư+

Mỗi hàng là một nghiệm của f”’(x).Lệnh:

format; % Default format of 5 digits

Zero cua f3

Trang 13

Điều này xảy ra do f”’(x) chứa số hạng sinx,bằng 0 tại các giá trị nguyên lần π nhưng hàm

solve(sin(x)) lại chỉ đưa ra giá trị 0 tại x = 0.Chúng ta có thể nhận được tất cả các nghiệm bằng

cách biến đổi zr = [0 zr(4) pi 2*pi -zr(4)] bằng cách nhân 2π và có zr = [zr-2*pi zr zr+2*pi] Bây giờ ta vẽ zr đã biến đổi lên đồ thị của f3:

x

Zero cua f3

Điểm 0 đầu tiên của f”’(x) tìm bởi

solve là tại x = 0.Chúng ta thay thế 0

vào biến chữ trong f2:

Trên đồ thị của f”(x) giá trị này chỉ

là cực tiểu địa phương.Ta thể hiển

Trang 14

Các phân tích trên cho thấy là phạm vi giá trị của f”(x) là từ [ -4 ,1].Ta tiếp tục kiểm tra các

điểm 0 khác cho bởi solve.Trước hết ta tách nghiệm thứ 4 trong z và gán nó cho một biến riêng:

để thấy được là s là điểm max.Giá trị max này là M1 = 1.0051

Bây giờ ta tích phân f”(x) hai lần bằng lệnh:

g = int(int(f2))

và có kết quả:

g =

-8/(tan(1/2*x)^2+9)

Trang 15

9

8)

xcos(

45

1

+

++

Ta có thể rút gọn d bằng lệnh simple(d) hay simplify(d).Cả hai cho kết quả:

ans =

1

Điều này minh hoạ cho khái niệm là đạo hàm hàm f(x) hai lần và rồi tích phân kết quả hai lần

ta nhận đ−ợc một hàm khác với f(x) bởi một hàm tuyến tính của x

x 2/3 atan(1/3 tan(1/2 x))

Trang 16

Cả 3 biểu thức này là các dạng biểu diễn toán học khác nhau của cùng một hàm toán học-đó là

đa thức bậc 3 theo x.Mỗi một dạng thích hợp với một dạng tính toán.Dạng thứ nhất f là dạng chung nhất thường được dùng biểu diễn đa thức.Nó đơn giản là một tổ hợp tuyến tính của các

số mũ của x.Dạng thứ 2,hàm g,là dạng phân tích thành thừa số.Nó biểu diễn nghiệm của đa thức.Tuy nhiên không phai đa thức nào cũng có nghiệm,nghĩa là có thể phân tích thành thừa số.Dạng thứ 2 là dạng Horner của đa thức.Nó rất tiện dùng để tính trị số của đa thức tại một giá trị nào đó của x

Symbolic Math Toolbox cung cấp một số hàm dùng để biến đổi các biểu thức đại số và lượng giác thành các biểu thức đơn giản hơn.Chúng gồm: collect,expand, horner, factor, simplify, và simple

x*(x*(x-6)+11)-6 x^3-6*x^2+11*x-6 (1+x)*t + x*t 2*x*t+t

b.expand:Phát biểu:

expand(f)

khai triển biểu thức.Sau đây là một số ví dụ:

f expand(f) a*(x+y) a*x+a*y

(x-1)*(x-2)*(x-3) x^3-6*x^2+11*x-6 x*(x*(x-6)+11)-6 x^3-6*x^2+11*x-6 exp(a+b) exp(a) + exp(b)

cos(x+y) cos(x)*cos(y)-sin(x)*sin(y)cos(3*acos(x)) 4*x^3-3*x

c.horner:Phát biểu:

horner(f)

biến đổi một đa thức thành dạng Horner hay biểu diễn lồng nhau.Ví dụ:

f horner(f) x^3-6*x^2+11*x-6 -6+(11+(-6+x)*x)*x

1.1+2.2*x+3.3*x^2 11/10+(11/5+33/10*x)*x

Trang 17

x^3–6*x^2+11*x–5 x^3–6*x^2+11*x–5 x^6+1 (x^2+1)*(x^4–x^2+1)

§©y lµ mét vÝ dô kh¸c vÒ ph©n tÝch ®a thøc xn +1 thµnh thõa sè:

Trang 18

e.simplify:Hµm simplify lµ mét hµm m¹nh,dïng rót gän c¸c biÓu thøc.Sau ®©y lµ mét sè

vÝ dô:

f simplify(f) x*(x*(x-6)+11)-6 x^3-6*x^2+11*x-6

f.simple: Hµm simple ®−a ra d¹ng ng¾n nhÊt cã thÓ cã cña mét biÓu thøc.Hµm nµy cã

nhiÒu d¹ng,mçi d¹ng tr¶ vÒ kÕt qu¶ kh¸c nhau.D¹ng:

Trang 19

2 Thay số: Có hai hàm dùng để thay trị là subexpr và subs

a subexpr:Lệnh :

syms a x

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

giải phương trình : x^3+a*x+1 = 0 theo x

Kết quả:

[ 1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)-2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3)]

[ -1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-

108+12*(12*a^3+81)^(1/2))^(1/3)+1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3))]

[ -1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-108+12*(12*a^3+81)^(1/2))^(1/3)-

1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3))]

Dùng lệnh pretty để nhận được dạng dễ đọc hơn:

[ 1/3 a ]

[ 1/6 %1 - 2 - ]

[ 1/3 ]

[ %1 ]

[ ]

[ 1/3 a 1/2 / 1/3 a \ ]

[- 1/12 %1 + - + 1/2 i 3 | 1/6 %1 + 2 - | ]

[ 1/3 | 1/3 | ] [ %1 \ %1 / ]

[ ]

[ 1/3 a 1/2 / 1/3 a \ ]

[- 1/12 %1 + - - 1/2 i 3 | 1/6 %1 + 2 - | ]

[ 1/3 | 1/3 | ] [ %1 \ %1 / ]

3 1/2

%1 := -108 + 12 (12 a + 81)

Lệnh pretty thừa kế khái niệm %n(n là một số nguyên) từ Maple để định nghĩ biểu thức con gặp hiều lần trong đối tượng chữ.Hàm subexpr cho phép ta lưu các biểu thức con này cũng như các

đối tượng chữ được viết trong biểu thức con.Các biểu thức con được lưu trong một ma trận cột

gọi là sigma

Tiếp tục ví dụ của ta:

r = subexpr(s)

cho ta

sigma =

-108+12*(12*a^3+81)^(1/2)

r =

[ 1/6*sigma^(1/3)-2*a/sigma^(1/3)]

[ -1/12*sigma^(1/3)+a/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)+2*a/sigma^(1/3))]

Trang 20

[ -1/12*sigma^(1/3)+a/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)+2*a/sigma^(1/3))]

ta thấy rằng subexpr tạo biến signma rg vùng làm việc của MATLAB

b.subs:Ta tìm giá trị riêng và vec tơ riêng của ma trận vòng A:

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

Chú ý là các biểu thức có S không bị ảnh hưởng gì cả,nghĩa là biến a trong S không được thay

bằng 10.Hàm subs là hàm hữu ích để thay thế nhiều giá trị của nhiều biến trong một biểu

thức.Ta xem S.Giả sử ngoài việc thay a =10 ta cũng muốn thay giá trị b = 2 và c = 10 vào biểu

Trang 21

t (1-t2) sech(t)

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

t

M P

Trang 22

Đ5 Dại số tuyến tính

1 Các toán tử đại số cơ bản:Các toán tử đại số cơ bản trong các đối t−ợng chữ cũng là các

toán tử trong các đối t−ợng số của MATLAB.điều này đ−ợc minh hoạ trong ví dụ sau.Biến đổi Givens tạo ra một mặt phẳng quay một góc t.Các phát biểu:

syms t;

G = [cos(t) sin(t); -sin(t) cos(t)]

tạo ra ma trận biến đổi:

G = [ cos(t), sin(t) ]

Trang 23

Điều này cho phép các toán tử kí hiệu sym(hilb(3)) trên H tạo ra kết quả tương ứng với ma trận

Hilbert có độ chính xác vô cùng,chứ không phải với độ chính xác của số thực dấu chấm

V = vpa(hilb(3))%vpa là kết quả tính chính xác theo Maple

Trang 24

tạo ra ma trận rỗng và hoán vị của ma trận đơn vị

Ta tìm giá trị s của H(1,1) để làm cho H suy biến.Lệnh:

8/9 Vậy:

inv(H)

tạo ra thông báo lỗi:

Trang 25

??? error using ==> inv

Error, (in inverse) singular matrix

v× H lµ ma trËn suy biÕn.Víi ma trËn nµy , Z = null(H) vµ C = colspace(H) lµ kh«ng tÇm

Trang 27

và nếu factor(p) ta đ−ợc chính nó,nghĩa là đa thức đặc tính không thể phân tích thành các thừa

số là đa thức hữu tỉ.Với ma trận Rosser đã biến đổi:

Chú ý là các giá trị này gần với các giá trị của ma trận Rosser ban đầu.Hơn nữa,giá trị số của F

là kết quả của phép tính dấu chấm động của Maple

Ta cũng có thể tính các giá trị riêng của ma trận chữ,nh−ng nghiệm dạng gần nhau là rất

hiếm.Biến đổi Givens đ−ợc tạo ra nh− là luỹ thừa của ma trận ban đầu Các lệnh Symbolic Math

Trang 28

combine để có kết quả cuối cùng

4 Dạng Jordan chính tắc:Dạng Jordan chính tắc xuất phát từ ý tưởng đường chéo hoá ma trận

bằng biến đổi đồng dạng.Với một ma trận đã cho A,tìm một ma trận không suy biến V,sao cho inv(V)*A*V hay ngắn gọn J = V\A*V là gần với với đường chéo.Đối với phần lớn các ma trận dạng Jordan chính tắc là ma trận đường chéo của các giá trị riêng và các cột của ma trận biến

đổi là các vec tơ riêng.Một vài ma trận không đối xứng không thể đường chéo hoá.Dạng Jordan

có các giá trị riêng trên đường chéo nhưng một số phần tử phía trên là 1 thay vì 0.Phát biểu:

Trang 30

Do các phần tử của ma trận A là tỉ số của hai số nguyên nhỏ nhất,vpa(A) tạo ra một biểu diễn

có độ chính xác thay đổi.Do vậy:

S = svd(vpa(A))

tính toán các giá trị kì dị với độ chính xác rất cao.Với n = 16 và digits(3) ta có kết quả:

S =

[ 1.20968137605668985332455685357 ] [ 2.69162158686066606774782763594 ] [ 3.07790297231119748658424727354 ] [ 3.13504054399744654843898901261 ] [ 3.14106044663470063805218371924 ] [ 3.14155754359918083691050658260 ] [ 3.14159075458605848728982577119 ] [ 3.14159256925492306470284863102 ] [ 3.14159265052654880815569479613 ] [ 3.14159265349961053143856838564 ] [ 3.14159265358767361712392612384 ] [ 3.14159265358975439206849907220 ] [ 3.14159265358979270342635559051 ] [ 3.14159265358979323325290142781 ]

Ngày đăng: 13/09/2012, 09:20

HÌNH ẢNH LIÊN QUAN

Bảng sau tổng hợp hàm diff và hàm jacobian - Sử dụng Symbolic Toolbox trong Mathlab
Bảng sau tổng hợp hàm diff và hàm jacobian (Trang 6)

TỪ KHÓA LIÊN QUAN

w