Giáo trình Matlab trong điều khiển tự động (Phần 2)

§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: 85x = sym(ʹxʹ) a = sym(ʹalphaʹ) tạo ra các biến chữ là x 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 2 1+ 5 ρ = . Ta dùng lệnh: rho = sym(ʹ(1 + sqrt(5))/2ʹ) Bây giờ ta có thể thực hiên các phép toán khác nhau với rho. Ví dụ : f = rho^2 ‐ rho ‐ 1 f = (1/2+1/2*5^(1/2))^2‐3/2‐1/2*5^(1/2) Ta rút gọn biểu thức: simplify(f) 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: a = sym(ʹaʹ) b = sym(ʹbʹ) c = sym(ʹcʹ) x = sym(ʹxʹ) hay đơn giản là : syms a b c x 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.

pdf98 trang | Chia sẻ: thanhle95 | Lượt xem: 566 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Giáo trình Matlab trong điều khiển tự động (Phần 2), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 5: SYMBOLIC MATH TOOLBOXES  §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.  Tiện ích  Nội dung  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 tắc của ma trận.  Simplification  phương pháp rút gọn các biểu thức đại số  Solution of Equations  giải bằng chữ và bằng số các phương trình đại số  và vi phân  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  Special  Mathematical  Function  các hàm toán học đặc biệt của các ứng dụng toán  học kinh điển  Động  lực  tính  toán nằm dưới các  toolbox  là nhân Maple, một hệ  thống  tính toán được phát triển đầu tiên ở trường đại học Waterloo, Canada và sau  đó  tại Eidgenroessiche Technische Hochschule Zurich, Thuỵ  sĩ. Maple  được  thương mại hoá và hỗ trợ của công ty Waterloo Maple.  §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:  85 x = sym(ʹxʹ)  a = sym(ʹalphaʹ)  tạo ra các biến chữ là x 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  2 51+=ρ . Ta dùng lệnh:  rho = sym(ʹ(1 + sqrt(5))/2ʹ)  Bây giờ ta có thể thực hiên các phép toán khác nhau với rho. Ví dụ :  f = rho^2 ‐ rho ‐ 1     f =  (1/2+1/2*5^(1/2))^2‐3/2‐1/2*5^(1/2)  Ta rút gọn biểu thức:    simplify(f)     ans =  0  Bây giờ giả sử ta muốn giải phương trình bậc 2  cbxaxf 2 ++= . 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:  a = sym(ʹaʹ)  b = sym(ʹbʹ)  c = sym(ʹcʹ)  x = sym(ʹxʹ)  hay đơn giản là :  syms a b c x  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:   x = sym(ʹxʹ,ʹrealʹ);   y = sym(ʹyʹ,ʹrealʹ);  hay hiệu quả hơn:  86 syms x y real  z = x + i*y  tạo ra biến chữ x và y có thuộc tính là số thực. Đặc biệt:  f = x^2 + y^2  thực sự là số không âm. Như vậy z là biến phức và các lệnh:  conj(x)  conj(z)  expand(z*conj(z))  cho kết quả:  return the complex conjugates of the variables  x  x ‐ i*y  x^2 + y^2  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:  df = (subs(f,ʹxʹ,ʹx+hʹ) – f)/ʹhʹ  hay  syms x h  df = (subs(f,x,x+h)–f)/h  trả về:  df =  (f(x+h)‐f(x))/h  ứ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.  kfac = sym(ʹk!ʹ)  Để tính 6! hay k! ta viết (lưu trong ct5_1.m):  87 syms k n  subs(kfac,k,6)  ans =  720  subs(kfac,k,n)  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:  syms a b c  A = [a b c; b c a; c a b]  kết quả:  A =  [ a, b, c ]  [ b, c, a ]  [ c, a, b ]  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))   ans =  1  Bây giờ ta thay A(2,3) bằng beta và b bằng alpha:    syms alpha beta  A(2,3) = beta;  A = subs(A,b,alpha)  A =  [ a, alpha, c]  [ alpha, c, beta]  [ c, a, alpha]  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.  88 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:  Hàm toán học  Lệnh MATLAB  f = xn  f = x^n  g = sin(at+b)  g = sin(a*t+b)  h = Jv(z)  h = besselj(nu,z)  Nếu ta tìm đạo hàm của các hàm này nhưng không mô tả biến độc  lập  (nghĩa là đạo hàm theo biến nào) thì kết quả là:   f’ = nxn‐1   gʹ = acos(at + b)  hʹ =J v (z)(v/z)‐Jv+1(z).   Như vậy các biến độc lập là x, t và z. MATLAB hiểu các biến độc lập là  các chữ thường và nằm ở cuối bảng chữ cái như x, y, z. Khi không thấy các chữ  cái này, MATLAB sẽ tìm chữ gần nhất và coi đó là biến độc lập. Các biến khác  như n, a, b và v được coi  là hằng hay  thông số. Tuy nhiên  ta có  thể  lấy đạo  hàm của f theo n bằng cách viết rõ biến độc lập ra. Ta dùng các lệnh sau để tạo  ra các hàm( lưu trong ct5_2.m):  syms a b n nu t x z  f = x^n;  g = sin(a*t + b);  h = besselj(nu,z);  Để đạo hàm hàm f ta viết:    diff(f);    ans =       x^n*n/x  Trong ví dụ trên x là biến độc lập. Nếu muốn tính đạo hàm của f theo n ta cần  viết:  diff(f,n)     ans =       x^n*log(x)  4. Tạo các hàm toán học bằng chữ:  a. Dùng các biểu thức chữ: Các lệnh:  syms x y z  89 r = sqrt(x^2 + y^2 + z^2)  t = atan(y/x)  f = sin(x*y)/(x*y)  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  (sinc.m) có nội dung  như sau:  function z = sinc(x)  if isequal(x,sym(0))      z = 1;  else      z = sin(x)/x;  end  Ta có thể mở rộng các ví dụ như vậy cho các hàm và biến khác nhau.  §3. TÍNH TOÁN  1. Đạo hàm: Ta tạo biểu thức chữ:  syms a x  f = sin(a*x)  Vậy thì:  df = diff(f)  tính đạo hàm của hàm f(x) theo x. Kết quả là:  df =  cos(a*x)*a  Để tính đạo hàm của f theo a ta viết:  dfa = diff(f,a)  kết quả:  dfa=  cos(a*x)*x  Hàm toán học  Lệnh MATLAB  f = xn  f’ = nxn‐1 f = x^n  diff(f) hay diff(f,x)  g = sin(at+b)  g’ = acos(at+b)  g = sin(a*t+b)  diff(g) hay diff(g,t)  90 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)  ans =  ‐ sin(a*x)*x^2  Hàm diff có thể dùng đối số là ma trận. Trong trường hợp này đạo hàm được  thực hiện trên từng phần tử. Ví dụ:  syms a x  A = [cos(a*x),sin(a*x);‐sin(a*x),cos(a*x)]  kết quả:  A =  [ cos(a*x),   sin(a*x)]  [‐sin(a*x),   cos(a*x)]  lệnh :  dy = diff(A)  cho kết quả:  dy =  [ ‐sin(a*x)*a,   cos(a*x)*a]  [ ‐cos(a*x)*a,   ‐sin(a*x)*a]  Ta khảo sát biến đổi từ toạ độ Euclid(x,y,z) sang tạo độ cầu (r, λ, ϕ) thực hiện  bằng các công thức:  x = rcosλcosϕ  y = rcosλsinϕ  z= rsinλ  Để  tính ma  trận  Jacobi  J của phép biến đổi này  ta dùng hàm  jacobian. Định  nghĩa toán học của J là:  ),,r( )z,y,x(J ϕλ∂ ∂=   Để dễ  viết  ta dùng  kí  tự  l  thay  cho  λ  và  f  thay  cho ϕ. Các  lệnh  (lưu  trong  ct5_5.m):  syms r l f  91 x = r*cos(l)*cos(f);  y = r*cos(l)*sin(f);  z = r*sin(l);  J = jacobian([x; y; z], [r l f])  cho ta kết quả:  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)]  [ sin(l),       r*cos(l),                  0]  và lệnh :  detJ = simple(det(J))  cho:  detJ =  –cos(l)*r^2  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 df   diff(x) hay  diff(f,x)  da df   diff(f,a)  ad fd 2 2   diff(f,a,2)  r = u2 + v2 t = arctan(v/u)  syms r t u v  r = u^2 + v^2  t = atan(v/u)  )v,u( )t,r(J ∂ ∂=   J = jacobian([r ; t],[u , v])  2. Giới hạn: Đạo hàm của một hàm là giới hạn sau đây nếu nó tồn tại :  h )x(f)hx(flim)x(f 0h −+=′ →   92 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:  syms h n x  dc = limit( (cos(x+h) – cos(x))/h,h,0 )  cho kết quả:  dc =  –sin(x)  và :  limit( (1 + x/n)^n,n,inf )  cho:  ans =  exp(x)  minh  hoạ  2  trong  số  các  giới  hạn  quan  trọng  của  toán  học:đạo  hàm(trong  trường hợp cosx) và hàm mũ. Trong khi nhiều giới hạn :  )x(flim ax→   là “hai phía”(nghĩa là kết quả như nhau cho dù x tiến tới bên phải hay bên trái  của a) lại có những hàm giới hạn phải và trái khác nhau. Do đó 3 giới hạn:  x 1lim, x 1lim, x 1lim 0x0x0x +→−→→ 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)   cho:  ans =  NaN  Lệnh:  limit(1/x,x,0,ʹleftʹ)  cho:  ans =  –inf  Lệnh:  limit(1/x,x,0,ʹrightʹ)  cho:  ans =  inf  Như vậy limit(f) tương đương với limit(f,x,0). Bảng sau cho các giới hạn:  93 Hàm toán học  Lệnh MATLAB  )x(flim 0x→   limit(f)  )x(flim ax→   limit(f,x,a)  hay  limit(f,a)  )x(flim ax −→   limit(f,x,a,’left’)  )x(flim ax +→   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:  Hàm toán học  Lệnh MATLAB  1n xdxx 1n n += + ∫   int(x^n) hay int(x^n,x)  ∫ π =2 0 1dx)x2sin(   int(sin(2*x),0,pi/2) hay  int(sin(2*x),x,0,pi/2)  g = cos(at+b)  ∫ += )batsin(a 1dt)t(g   g = cos(a*t + b)  int(g) hay   int(g,t)  )z(Jdz)z(J 01 −=∫   int(besselj(1,z) hay  int(besselj((1,z),z)  Khi MATLAB không tìm được tích phân nó viết lạ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  . 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)kx(e− 2 1k =  và vẽ đồ thị của hàm bằng các  lệnh (  lưu trong ct5_6.m):  syms x  k = sym(1/sqrt(2));  f = exp(–(k*x)^2);  ezplot(f)  94 Tuy nhiên nhân Maple không coi k2 và x2 là những số dương mà chỉ là các biến  hình thức, không có thuộc tính toán học. Do vậy khi tính   bằng các  lệnh:  dxe 2)kx(∫ ∞ ∞− − syms x k;  f = exp(–(k*x)^2);  int(f,x,–inf,inf)   kết quả sẽ là:  Definite integration: Canʹt determine if the   integral is convergent.  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 =  int(exp(–k^2*x^2),x= –inf..inf)  Trong phần sau chúng ta sẽ xét cách làm cho MATLAB hiểu rằng k là số thực  và do đó coi k2 là số dương.  c. Các biến thực theo sym: Chú ý là Maple không thể xác định được dấu  của k2. Vậy chúng ta giải quyết khó khăn này như thế nào? Câu trả lời là làm  cho k trở thành số thực bằng 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  int(f,x,–inf,inf)  kết quả là:  ans =  signum(k)/k*pi^(1/2)  Chú ý  là k bây giờ là đối tượng chữ trong vùng làm việc của MATLAB và là  biến thực trong vùng làm việc của Maple. Khi nhập lệnh:     clear k   ta chỉ xoá được k trong vùng làm việc của MATLAB. Muốn là cho k không còn  là số thực trong vùng làm việc của Maple ta phải dùng lệnh:  syms k unreal.  Ta có bảng sau:  95 Hàm toán học  Lệnh MATLAB  kxe)x(f −=   syms k  x  f = exp(‐k*x)  ∫ dx)x(f   int(f) hay int(f,x)  ∫ dk)k(f   int(f,k)  ∫ 1 0 dx)x(f   int(f,0,1) hay  int(f,x,0,1)  2)kx(e)x(g −=   syms k x real  g=exp(‐(k*x)^2)  ∫ ∞ ∞− dx)x(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 :  ⋅⋅⋅+++ 22 3 1 2 11   cho tổng là π2/6 còn chuỗi :    1 + x2 + x3 +. . .  cho tổng là 1/(1‐x). Các tổng được tính như sau (lưu trong ct5_7.m):  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)  5. Chuỗi Taylor: Cho hàm f(x). Phát biểu:  T = taylor(f,8)  cho kết quả:  T =  1/9+2/81*x^2+5/1458*x^4+49/131220*x^6  là khai  triển Taylor của  f(x)  lân cận x = 0(khai  triển MacLaurin) có chứa 8 số  hạng khác 0. Phát biểu:  syms x  g = exp(x*sin(x))  96 t = taylor(g,12,2)  tạo ra khai triển Taylor của f(x) tại x = 2 và chứa đến 12 số hạng khác 0. Ta vẽ  các hàm này  lên  cùng một  đồ  thị  để  thấy  được  khả năng  xấp  xỉ  của  chuỗi  Taylor với hàm thực g (lưu trong ct5_8.m):   xd = 1:0.05:3;   yd = subs(g,x,xd);   ezplot(t, [1,3]);   hold on;   plot(xd, yd, ʹr‐.ʹ)   title(ʹXap xi Taylor ʹ);   legend(ʹHamʹ,ʹTaylorʹ)  Tiếp đó ta dùng lệnh:  1 1.5 2 2.5 3 1 2 3 4 5 6 x Xap xi Taylor Ham Taylor pretty(T)  để in kết quả dưới dạng các biểu thức toán học dễ đọc.  6. Tính toán mở rộng: Ta xét hàm:  xcos45 1)x(f +=   Các lệnh:  syms x  f = 1/(5+4*cos(x))  lưu biểu thức chữ định nghĩa hàm f(x).    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ố  97 (ezplot và ezplot3) và 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 vi  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):  f2 = diff(f,2)  f2 =  32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)  Ta có thể nhập lệnh:  f2 = diff(f,x,2).  Ta vẽ đồ thị của f2:  ezplot(f2)  axis([–2*pi 2*pi –5 2])  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:  f3 = diff(f2);  cho   32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)  và :   pretty(f3)  cho:  234 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:  f3 = simple(f3);  pretty(f3)  Kết quả là:   4 22 ))xcos(45( )25)xcos(80)xcos(80)xsin(96)(xsin(4 + −++   Bây giờ ta tìm các giá trị zero cuả f3 bằng lệnh:  z = solve(f3)  kết quả cho ta ma trận:  98 z =  [                                0]  [ atan((–255–60*19^(1/2))^(1/2)  ,  10+3*19^(1/2))]  [ atan(–(–255–60*19^(1/2))^(1/2),          10+3*19^(1/2))]  [ atan((–255+60*19^(1/2))^(1/2)/(10–3*19^(1/2)))+pi]  [ –atan((–255+60*19^(1/2))^(1/2)/(10–3*19^(1/2)))–pi]  Mỗi hàng là một nghiệm của f”’(x). Lệnh:  format;   zr = double(z)  converts the zeros to double form.  zr =      0      0  0      2.4483                      –2.4483  Như vậy  ta đã  tìm được 5 nghiệm. Tuy nhiên đồ  thị của f3 cho thấy ta chưa  tìm đủ nghiệm của nó (lưu trong ct5_9.m).  ezplot(f3)  hold on;  plot(zr,0*zr,ʹroʹ)  plot([–2*pi,2*pi], [0,0],ʹg‐.ʹ);  title(ʹZeros of f3ʹ)  Đ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:  plot(zr,0*zr,ʹkxʹ)  Đ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:    f20 = subs(f2,x,0)  để tìm giá trị tương ứng của f”(0). Kết quả là:    f20 =       0.0494  Trên đồ  thị của  f”(x) giá  trị này chỉ  là cực  tiểu địa phương. Ta  thể hiểu điều  này trên đồ thị bằng các lệnh:  99 clf  ezplot(f2)  axis([–2*pi2*pi –4.25 1.25])  ylabel(ʹf2ʹ);  title(ʹVe do thi f2 = fʹʹʹʹ(x)ʹ)  hold on  plot(0,double(f20),ʹroʹ)  text(–1,–0.25,ʹLocal minimumʹ)  Từ đồ thị ta thấy rằng điểm cực tiểu xảy ra tại x gần ±π. Ta có thể tính chính  xác  là điểm cực  tiểu đúng  tại ±π bằng cách dùng các  lệnh  theo  trình  tự sau.  Trước hết ta thay ±π vào f”’(x):  simple([subs(f3,x,–sym(pi)),subs(f3,x,sym(pi))])  Kết quả:  ans =  [ 0, 0]  Như vậy x = ±π là điểm đặc biệt của f”’(x). Ta thấy rằng x = ±π là điểm cực tiểu   toàn cục của f2.  m1 = double(subs(f2,x,‐pi));   m2 = double(subs(f2,x,pi));  plot(‐pi,m1,ʹgoʹ,pi,m2,ʹgoʹ)  text(‐1,‐4,ʹGlobal minimaʹ)  Giá trị cực tiểu đó là:  [m1 m2]  ans =        ‐4    ‐4  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:  s = z(4)  và nhận được kết quả:  s =  atan((–255+60*19^(1/2))^(1/2)/(10–3*19^(1/2)))+pi  Thực hiện:  sd = double(s)  để nhận được giá trị số của s  sd =  100 2.4483  Ta vẽ điểm (s,f2(s) theo f2:  M1 = double(subs(f2,x,s));  plot(sd,M1,ʹkoʹ)  text(‐1,1,ʹGlobal maximumʹ)  để 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)  Đây không phải là hàm f(x) ta xét ban đầu. Sai khác giữa g(x) và f(x) là:    d = f ‐ g  cho ta:  d =  1/(5+4*cos(x))+8/(9+tan(1/2*x)^2)  pretty(d)  2)x2/1tan(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.    Cuối cùng tích phân f(x) một lần ta có:    F = int(f)  F =  2/3*atan(1/3*tan(1/2*x))  bao gồm  cả hàm  arctan.Như vậy F(x)  là nguyên hàm  của một hàm  liên  tục  nhưng bản thân lại là hàm không liên tục mà có đồ thị như sau:  ezplot(F)  Hàm F(x) gián đoạn tại ±π.  §4. RÚT GỌN VÀ THAY SỐ  1. Rút gọn biểu thức: Ta xét 3 biểu thức khác nhau (lưu trong ct5_10.m):  101 syms x  f = x^3‐6*x^2+11*x‐6  g = (x‐1)*(x‐2)*(x‐3)  h = x*(x*(x‐6)+11)‐6  Thực hiện các lệnh:  pretty(f), pretty(g), pretty(h)  ta nhận được:    f = x3 ‐ 6x2 +11x‐6    g = (x‐1)(x‐2)(x‐3)    h = x(x(x‐6)+11)‐6  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ứ
Tài liệu liên quan