Pikachu – Vietdown.org Ch−¬ng C¬ së Matlab 1.1 Tỉng quan vỊ Matlab 1.1.1 Kh¸i niƯm vỊ Matlab Matlab lμ ngôn ngữ lập trình thực hnh bậc cao đợc sử dụng để giải bi toán kỹ thuật.Matlab tích hợp đợc việc tính toán, thể 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ó đợc ứng dụng sau ã Sử dụng hm có sẵn th viện, phép tính toán học thông thờng ã Cho phép lập trình tạo ứng dụng ã Cho phép mô mô hình thực tế ã Phân tích, khảo sát v hiển thị 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 số phần mềm khác nh C++, Fortran 1.1.2 Tỉng quan vỊ cÊu tróc d÷ liƯu cđa MATLAB, ứng dụng Matlab l hệ thống tơng giao,các phần tử liệu l mảng( mảng ny không đòi hỏi kích thớc ) Chúng cho phép giải vấn đề liên quan đến lập trình máy tính,đặc biệt sử dụng phép tính ma trËn hay vÐc tor vμ cã thĨ sư dơng ng«n ngữ C học Fortran lập trình thực ứng dụng lập trình câu lệnh goị từ MATLAB MATLAB đợc viết tắt từ chữ matrix laboratory tức l th viện ma trận, từ phần mềm MATLAB đợc viết nhằm cung cấp cho việc truy cập vo phần mềm ma trận cáh dễ dng, phần mềm ma trận ny đợc phát triển công trình Linpack v Eispack Ngy MATLAB đợc phát triển Lapack v Artpack tạo nên nghệ thuật phần mềm cho ma trận a.Dữ liệu Dữ liệu MATLAB thể dới dạng ma trận( mảng tổng quát), v có kiểu liệu đợc liệt kê sau ã Kiểu đơn single , kiểu ny có lợi nhớ liệu đòi hỏi byte nhớ hơn, kiểu liệu ny không đợc sử dụng phép tính toán học, độ xác ã Kiểu double kiểu ny l kiểu thông dụng biến MATLAB ã Kiểu Sparse • KiĨu int8, uint8, int16 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt • KiĨu char vÝ dơ ‘Hello’ • Kiểu cell ã Kiểu Structure Trong MATLAB kiểu liệu double l kiểu mặc định sử dụng phép tính số học Các bạn tham khảo kiểu liệu khác đĩa CD Help MATLAB 6.0 b ứng dụng MATLAB tạo điều kiện thuận lợi cho: • C¸c kho¸ häc vỊ to¸n häc • C¸c kü s, nh nghiên cứu khoa học ã Dùng MATLAB để tính toán ,nghiên cứu tạo sản phẩm tốt sản xuất c.Toolbox l công cụ quan trọng Matlab Công cụ ny đợc MATLAB cung cấp cho phép bạn ứng dụng kỹ thuật để phân tích, thiết kế , mô mô hình Ta tìm thấy toolbox mô trờng lm việc ã Mạng nơron ã Logic mê • Simulink 1.1.3 HƯ thèng MATLAB HƯ thèng giao diện MATLAB đợc chia thnh phần ã Môi trờng phát triển Đây l nơi đặt công cụ, phơng tiện giúp sử dụng lệnh v file, ta liệt kê sè nh− sau + Desktop + Command Window + Command History + Browsers for viewinghelp ã Th viện, hm to¸n häc Bao gåm c¸c cÊu tróc nh− tÝnh tỉng, sin cosin atan, atan2 etc , phép tính đơn giản đến phép tính phức tạp nh tính ma trận nghich đảo, trị riêng, chuyển đổi furier ,laplace , symbolic library ã Ngôn ngữ MATLAB Đó l ngôn ngữ cao ma trận v mảng, với dòng lệnh, hm, cấu trúc liệu vo , lập trình hớng đối tợng ã Đồ hoạ MATLAB Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Bao gồm câu lệnh thể đồ hạo môi trờng 2D v 3D, tạo hình ảnh chuyển động, cung cấp giao diện tơng tác ngời sử dụng v máy tính ã Giao tiếp với ngôn ngữ khác MATLAB cho phép tơng tác với ngôn ngữ khác nh C , Fortran 1.1.4 Lμm quen víi matlab Tr−íc tiªn để khởi động MATLAB bạn kích đúp (hoặc đơn) v biểu tợng file MATLAB.exe ,trên mn hình xuất cửa sổ sau.( Xem hình vẽ 1.1 ) Cửa sổ chứa công cụ( giao diện ngời v máy) cần thiết cho việc quản lý files, biến ,cưa sỉ lƯnh, cã thĨ coi desktop lμ c¸c panel gồm ô, vùng, quản lý v tác dụng cửa sổ nhỏ đợc quản lý desktop Hình vẽ 1.1 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Trên hình vẽ ta thÊy cưa sỉ desktop(cưa sỉ lín nhÊt), vμ c¸c cưa sỉ phơ cđa nã 1.1.5 Lμm viƯc víi c¸c cưa sổ MATLAB đợc quản lý desktop a Cửa sỉ Command window : Lμ cưa sỉ giao tiÕp chÝnh Matlab l nơi nhập giá trị biến, hiển thị giá trị,tính toán giá trị biểu thức, thực thi hm có sẵn th viện (dạng lệnh), hm(dạng function) ngời dùng lập trình M-files Các lệnh đợc đợc nhập sau dÊu nh¾c ‘ >> ‘, vμ nÕu cã sai sãt trình gõ(nhập) lệnh hÃy nhấn phím Enter nhận đợc dấu nhắc >> Thực thi lƯnh b»ng nhÊn phÝm Enter Gâ c¸c lƯnh sau: >> A= pi/2 ; >> B= sin(A) B= Hoặc chơng trình soạn thảo M-file dới đây: % Chuong trinh M-file x= 0:pi/6:2*pi; y=sin(x); plot(x,y); % chuong trinh đợc lu với tên file l ve_sin.m thực thi chơng trình cửa sổ Command window dòng lệnh sau >> ve_sin Chóng ta thÊy râ h¬n mơc “ Sư dơng lƯnh trùc tiÕp “ ë phÇn sau b Cửa sổ command History Các dòng m bạn nhập vo cửa sổ Command window ( dòng ny l dòng nhập biến ,hoặc l dòng lệnh thực hm no ) đợc giữ lại cưa sỉ Command History ,vμ cưa sỉ nμy cho phép ta sử dụng lại lệnh cách kích Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt đôi chuột lên lệnh biến, nh bạn muốn sử dụng lại biến Xem hình 1.2 Kích đôi chuột lên lênh biến để sử dụng lại Hình 1.2 c Cửa sổ Workspace: L cửa sổ thể tên biến bạn sử dụng với kích thơc vùng nhớ(số bytes), kiểu liệu(lớp) ,các biến đợc giải phóng sau lần tắt chơng trình.(xem hình 1.3) Kích đôi chuột lên biến để xem Yêu liệu(hoặc thay đổi giá trị) Hình 1.3 Ngoi cho phép thay đổi gi¸ tri , cịng nh− kÝch th−íc cđa biÕn b»ng cách kích đôi chuột lên biến Hoặc kích vo nút bên trái cạnh nút save Ví dụ chọn biến(giả thử l biến b) kích đúp(hoặc kích chuột vo nút cạnh nút save) ta đơc cửa sổ sau gäi lμ Array Editor: xem h×nh 1.4 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Tiêu đề l tên biến b , định dạng liệu ô có tên l: Numeric format, mặc định l dạng short, Kích thớc size l by (tøc lμ mét hμng vμ cét) ta thay đổi kích thớc ny cách thay ®ỉi sè cã « kÝch th−íc size + Dïng cửa sổ ny để lu biến dới l liệu biến b, ta thay đổi chúng cách thay đổi giá trị ô ®ã H×nh 1.4 VÝ dơ NhËp biÕn >>b=[1 ]; >>x=pi; Tất biến đợc lu Workspace thể kích thớc (Size), số Bytes v kiểu liệu(class) (8 bytes cho phần tư d÷ liƯu kiĨu double thĨ lμ 24 bytes dμnh cho b vμ bytes dμnh cho a) d Cửa sổ M-file L cửa sổ dùng để soạn thảo chơng trình ứng dụng, để thực thi chơng trình viết M-file cách gõ tên file chứa chơng trình cửa sổ Commandwindow Khi chơng tr×nh viÕt M-file, th× t theo øng dơng thể, tuỳ theo ngời lập trình m chơng trình có thĨ viÕt d−íi d¹ng sau +D¹ng Script file :Tøc lμ chơng trình gồm tập hợp câu lệnh viết dới dạng liệt kê ,không có biến liệu vo v biến lấy giá trị +Dạng hm function có biến liệu vo v biến e Đờng dẫn th mục: Nơi lu giữ file chơng trình 1.2 Nhập biÕn,lƯnh trùc tiÕp tõ cưa sỉ Command Window: Sau xt hiƯn dÊu nh¾c >> cưa sỉ command window điều đồng nghĩa cho phép bạn nhập biến thực câu lệnh mong muốn Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Do liệu MATLAB đợc thể dới dạng matrận biến dùng MATLAB liƯu cđa nã cịng thĨ hiƯn d−íi d¹ng ma trËn, việc đặt tên biến không đợc đặt cáh tuỳ tiện m phải đặt theo quy định ã Tên ma trận(biến) phải bắt đầu chữ cái, v chứa đến 19 ký tự l số chữ ã Bên phải dấu l giá trị ma trận ã Dấu chấm phẩy(; )l để phân cách hng, giá trị hng đợc phân cách dấu phẩy(,) dấu cách( phím space) • KÕt thóc nhËp ma trËn th−êng cã dÊu chấm phẩy không tuỳ theo bạn muốn thể kết hay không a Nhập biến, matrận, lệnh liệt kê trực tiếp Thông thờng Matlab sử dụng vị trí sau dấu phẩy cho số thập phân có dấu phẩy chấm động, v sử dơng biÕn “ ans “ cho kÕt qu¶ cđa phÐp tính Ta đăng ký biến thể kết ny riêng Xét tập lệnh sau: Ví dụ trờng hợp không sử dụng biến lu kết quả, biến ans tự động đợc gán >> 8+9 ans = 17 NhËp biÕn r = 8/10 cöa sỉ CommandWindow nh− sau: >> r = 8/10 r=0.8000 B¹n cã thĨ sư dơng c¸c biÕn nμy cho c¸c phÐp tÝnh tiÕp theo vÝ dô nh−: >> s=10*r s= VÝ dơ nhËp trùc tiÕp c¸c sè liƯu nh− sau >> a=[1 2;3 4] a = Matlab có hng trăm hm đợc định nghĩa sẵn ví dô nh− hμm tÝnh sin >> x=pi; %nhËp biÕn x >> sin(x) % nhËp lƯnh sin(x), Ên enter ®Ĩ thùc hiƯn lƯnh tÝnh sin(x) ans = 1.2246e-016 + C¸c phÐp tÝnh sư dơng Matlab : Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Trong MATLAB sử dụng phép toán thông thờng đợc liệt kê bảngsau Ký tự Lệnh Matlab ý nghÜa + * / \ ^ Céng a + b Trừ a - b Nhân ab Chia phải a a/b= b Chia tr¸i a b\a = b Mị a^b a+b a-b a*b a/b b/a a^2 Thø tù −u tiªn phép toán: Tất biểu thức toán học đợc thực từ trái qua phải, ta có bảng thứ tự u tiên nh sau: Thứ tự u tiên Các phép Dấu ngoặc biểu thức To¸n tư mị ^ , thùc thi tõ tr¸i qua phải Toán tử nhân, chia có mức u tiên,thực từ trái sang phải Cộng , trõ VÝ dô1 : >> a=[1 2;3 4]; >> b=[5 6;7 8]; >> a+b^2 ans = 68 80 94 110 Ví dụ2 Giải phơng trình bậc hai, lệnh nhập cđa sỉ CommandWindow >>a= 1; >>b=-2; >>c=1; >>delta= b^2- 4*a*c; >>x1=(-b+ sqrt(delta) )/(4*a); >>x2=(-b- sqrt(delta) )/(4*a); Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Chú ý : + Các lệnh đợc kết thúc b»ng dÊu chÊm phÈy, Matlab sÏ kh«ng thĨ hiƯn kÕt mn hình, ngợc lại dấu chấm phẩy Matlab thể kết + Trong trình nhập ma trận phần tử hng di ta xuống dòng toán tư ba chÊm( ) VÝ dơ >>Number_apples=10;Number_Oranges=25,Number_bananas=34; >>Fruit_Purchased= Number_apples+ Number_Oranges+ Number_bananas 1.3 Sư dơng c¸c lƯnh gián tiếp từ file liệu Nh đà trình by phần cửa sổ M-file, tập hợp lệnh MATLAB đợc soạn thảo cửa sổ M-file dới dạng Script file dạng hm function(có biến đầu vo v ra), v đợc ghi (lu)vo file liệu có phần mở rộng l m (Thông thờng chơng trình soạn thảo M-file thờng đợc lu theo đờng dẫn C:\matlab\ work\Tên_file ), muốn thực thi chơng trình soạn thảo ®ã ta gäi lƯnh cưa sỉ Commandwindow, t theo chơng trình viết dạng Script file hay function m cửa sổ ta có cách gọi nh sau: ã Đối với chơng trình viết dạng Script file >> tên_file ; a=1; b=-2; c=1; delta=b^2-4*a*c; x1=(-b+sqrt(delta))/(2*a) x2=(-b-sqrt(delta))/(2*a) % l−u vμo file GPTB2.m Ví dụ giải phơng trình bậc hai tìm nghiƯm x1 vμ x2 viÕt M-file d¹ng Scriptfile: Thùc thi chơng trình cửa sổ CommandWindow lệnh >>GPTB2 ã Đối với chơng trình viết dạng function ,có tham số đầu vo v ra,ta phải truyền đủ tham số cần thiết Ví dụ : Giải phơng trình bậc hai với ba tham số đầu vo l hệ số a , b, c v hai biến đầu l nghiệm phơng trình x1 v x2 (Xem c¸ch viÕt hμm function ë mơc sau) function [x1, x2] =GPTB2(a,b,c) x1=(-b+sqrt(delta))/(2*a); %Tinh nghiem x1 x2=(-bsqrt(delta))/(2*a); CuuDuongThanCong.com Trang https://fb.com/tailieudientucntt Thực bi toán Command window nh sau: >>a= 1; >>b=-2; >>c=1; >>[x1,x2]=GPTB2 (a,b,c) % cÊu tróc chung l [x1,x2]=Tên_file (a,b,c) ( [x1,x2]=GPTB2(1,-2,1) ) Lu ý viết chơng trình M-file, bạn muốn ghi thích ta dùng ký tự % đặt trớc dòng thÝch nh− sau % dßng chó thÝch -VÝ dô %ViÕt M-file(d¹ng Script file) x=0:0.1:10 ; %T¹o vector x y=cos(x); plot(x,y); % Vẽ đồ thị hm cosin %lu vo file cã tªn lμ dai1.m Thùc thi hμm trªn cưa sổ commandwindow lệnh >> dai1 Viết chơng trình M-file đợc dùng l chủ yếu ,đặc biệt chơng trình di , phức tạp bạn nên viết M-file 1.4 Dòng nhắc gán giá trị biên Đối với bạn đà học lập trình Pascal, bạn muốn nhập giá trị thực thi chơng trình bạn dùng cặp lệnh: writeln( 'Nhập giá trị a='); readln(a); Nhng MATLAB bạn thấy đơn giản chØ dïng mét lƯnh nhÊt ®ã lμ : a=input(‘Nhap gia tri cua a=’); VÝ dơ: Trong cưa sỉ Commandwindow ta gâ lÖnh >> a =input(‘nhap a=’); Trang 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt C= [ -b2/(-a1*b2+b1*a2), a2/(-a1*b2+b1*a2)] [ b1/(-a1*b2+b1*a2), -a1/(-a1*b2+b1*a2)] >> KQ=C*B KQ = [ -b2/(-a1*b2+b1*a2)*c1+a2/(-a1*b2+b1*a2)*c2] [ b1/(-a1*b2+b1*a2)*c1-a1/(-a1*b2+b1*a2)*c2] 6.3.5 Giải hệ phơng tr×nh phi tun:( LƯnh solve) VÝ dơ: sin(x)+y^2+log(z)=7 3*x+2^y+z^3=4 x+y+z=2 >>[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 = x^2 - 4*x + = >>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + = 0') x= [ 1] [ 3] y= [ 1] [ -3/2] 6.3.6 Gi¶i hệ phơng trình tham số: >>[a,u] = solve('a*u^2 + v^2= 0','u - v = 1','a,u') a= -v^2/(v^2+2*v+1) u= v+1 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt >>[a,v] = solve('a*u^2 + v^2','u - v = 1','a,v') a= -(u^2-2*u+1)/u^2 v= u-1 6.3.7 Giải hệ phơng trình vi phân thờng: ( lệnh dsolve) >>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 6.3.8 Giải hệ phơng trình vi phần theo hm có sẵn Matlab: Ví dụ: Cho hệ phờng trình vi phân Chơng trình mô tả phơng trình vi phân dạng M-file: function dy = rigid(t,y) dy = zeros(3,1); dy(1) = y(2) * y(3); dy(2) = -y(1) * y(3); dy(3) = -0.51 * y(1) * y(2); Thời gian giải phơng trình vi phân Tspan =[0 12], vector điều kiện đầu [0 1] >>options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e5]); >>[t,y] = ode45('rigid',[0 12],[0 1],options); >>plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.') Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.5 0.5 -0.5 -1 -1.5 10 12 6.4 LÖnh vμ hμm symbolic Matlab: Symbolics Matlab lμ th− viÖn phép tính toán kiểu ký tự đợc đa vo môi trờng tính học Matlab Ta cần ý r»ng, viÕt mét lÖnh hay mét hμm Matlab phải viết chữ thờng 6.4.1 Tính toán (Calculus): ã Tính đạo hm (diff): ắ diff(S): Đạo hm biểu thức symbolic S với biến đạo hm tự ắ diff(S,v) hay diff(S,sym(v)): Đạo hm biểu thức symbolic S với biến lấy đạo hm l biến symbolic v ắ diff(S,n) : Đạo hm 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 cña hμm t6 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Y = 720 VÝ dô: >>syms u v >>y = u^2*v - u*v^3; >> y2u = diff(y,u,2) %dao ham cap theo u >> y3u = diff(y,v,3) %dao ham cap theo v y2u = 2*v y3u = -6*u • Tính tích phân( int): ắ int(S): Tích phân không xác ®Þnh cđa biĨn thøc symbolic S víi biÕn tù mặc định Muốn biết biến mặc định ta dùng lệnh fìndsym ắ int(S,v): Tích phân không xác định 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 biểu thức symbolic S víi biÕn tù 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 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 = ∫ ∞ e −( sx ) dx −∞ >>Syms x s real Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt >>f = exp(-(s*x)^2); >>I = int(f,x,-inf,inf)% inf lμ v« cïng lín I= 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) = s>0; sign(s) = s =0; sign(s) = -1 s>syms x a t h >>limit(sin(x)/x) ans = >>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 dÃy số l 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 lệnh findsym từ 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ừ k - Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt ¾ symsum(S,a,b), symsum(S,v,a,b): Tỉng 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 d·y S1 = + 1 + + … 2 S2 = + 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 hm 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 hm ngợc 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 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 hm symbolic f quanh điểm a Đối số l giá trị số, hm symbolic hay xâuNếu không cho gía trị n mặc nhiªn Matlab n = Vi dơ: Khai triĨn Taylor cđa hμm f = exsin(x) quanh ®iĨm x0 = (NÕu x0 = ta cã khai triÓn Maclaurin) >>syms x >> f = exp(x*sin(x)); >>t = taylor(f,4,2)% khai triển số hạng khác o v xung quanh điểm x0 = 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)^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 ta cã thĨ vÏ hμm ®· cho vμ hμm ®· khai triển chuỗi Taylor quanh điểm x0 = 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 hm lm đơn giản hoá biểu thức: Gom số hạng, biến(collect): ắ collect(S): S l đa thức, gom số hạng chứa biến x ắ collect(S,v): S l đa thức, gom số hạng chøa biÕn v Trang 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 thnh 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) ã Phân tích đa thức 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 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= d= 4-x >>[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 đ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 CuuDuongThanCong.com https://fb.com/tailieudientucntt ans = >>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 hm vô hớng f với biến độc lập f v cho ta hm qua phép biến đổi nyl w ắ F = fourier(f,v): F l hm biến v thay biế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 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 hm mục tiêu vô hớng F với biến độc lập w phép biến đổi ngợc ny l hm x ắ f = ifourier(F,u): f lμ hμm cñabiÕn u thay thÕ biÕn x ắ f = ifourier(F,v,u): F l hm cđa v vμ f lμ hμm cđa u chóng thay biến w v x tơng ứng Trang 14 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 hm F với biế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 biến s ắ L = laplace(F,w,z): L lμ hμm cña z vμ F lμ hμm cña w, thay biến symbolic 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt >>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 hm symbolic L với biế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 biến t ắ F = ilaplace(L,y,x): F lμ hμm cña x vμ L lμ hμm cña y, thay biến symbolic 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 -2 syms x >>ezplot(erf(x)) >>grid • ezplot3( vÏ đờng chiều) ắ ezplot3(x,y,z): Vẽ hm x = x(t), y = y(t), vμ z = z(t) víi miền mặc định lt < t < ¾ ezplot3(x,y,z,[tmin,tmax]): VÏ c¸c hμm x = x(t), y = y(t), v z = z(t) khoảng giá trị tmin < t < tmax VÝ dô: >>syms t; ezplot3(sin(t), cos(t), t,[0,6*pi]) Trang 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt • VÝ dơ : Cho hμm f(x) = víi x ∈ [a,b] + cos( x) ắ Vẽ đồ thị v đạo hm bậc 1, bậc miền xác định symbolic Matlab lμ − 2π ≤ x ≤ 2π HÃy vo cửa sổ soạn thảo v cửa sổ ny ta viết chơng trình nh sau: syms x f1 = 1/(5+4*cos(x)); f2 = diff(f1); % dao ham bac cua f1 f3 = diff(f2); % dao ham bac cua f1 subplot(2,2,1) ezplot(f1) subplot(2,2,2) ezplot(f2) subplot(2,2,3) ezplot(f3) ¾ Tìm điểm x lm cho đạo hm bậc hm f(x) = không v vẽ đồ thị HÃy vo cửa sổ soạn thảo v cửa sổ ny ta viết chơng trình nh sau: syms x f = 1/(5+4*cos(x)); f3 = diff(f,3); % dao ham bac cua f pretty(f3); %dua ve dang quyen toan hoc f3 = simplify(f3); pretty(f3); z = solve(f3); %Giai phuong trinh f3 = format; %lay chu so so le zr = double(z); %chuyen ma tran, bieu thuc symbolic ve dang so ezplot(f3) %ve ham f3 hold on; %luu thi da ve Trang 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt + cos( x) plot(zr,0*zr,'ro') % ve diem "o" mau cho cac diem co gia tri thuc de f3 = plot([-2*pi,2*pi],[0,0],'g-.') Trang 19 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... Trong MATLAB kiĨu d÷ liƯu double lμ kiĨu mặc định sử dụng phép tính số học Các bạn tham khảo kiểu liệu khác đĩa CD Help MATLAB 6.0 b ứng dụng MATLAB tạo điều kiện thuận lợi cho: ã Các khoá học. .. Các khoá học toán học ã Các kỹ s, nh nghiên cứu khoa học ã Dùng MATLAB để tính toán ,nghiên cứu tạo sản phẩm tốt sản xuất c.Toolbox l công cụ quan trọng Matlab Công cụ ny đợc MATLAB cung cấp cho... thảo chơng trình ứng dụng, để thực thi chơng trình viết M-file cách gõ tên file chứa chơng trình cửa sổ Commandwindow Khi chơng trình viết M-file, th× t theo øng dơng thĨ, t theo ngời lập trình m