Tìm điểm của hàm số

Một phần của tài liệu Tài liệu ứng dụng máy tính trong thiết kế ô tô (Trang 36 - 43)

Chương 3 Các công cụ tốn học thơng thường của Matlab

3.3. Tối ưu các hàm số

3.3.2. Tìm điểm của hàm số

Sử dụng hàm fzero

z = fzero('fun',x,tol) Mô tả

Hàm fzero('fun',x, tol) tìm điểm mà tại đó hàm fun nhận giá trị 0

Trong lệnh này :

fun là một chuỗi chỉ ra tên của tệp dùng để định nghĩa hàm số thực

Nếu x là một giá trị vơ hướng thì fzero sẽ tìm ra điểm 0 gần với giá trị của x của hàm được định nghĩa

Nếu x là một véc tơ có 2 phần tử, fzero sẽ tìm ra điểm khơng nằm trong khoảng giá trị giữa hai phần tử đó

tol : quy định sai số tương đối của nghiệm tìm ra. Nếu khơng quy định giá trị

tol, máy sẽ nhận giá trị sai số tương đối mặc định

Ví dụ

Tìm nghiệm của phương trình X3-2X-5=0 ở gần điểm x=2 Trước hết ta phải viết một M.file định nghĩa hàm f:

function y = f(x) y = x.^3-2*x-5;

Để xác định nghiệm gần x=2 ta gọi lệnh sau trong môi trường Matlab: z = fzero('f',2)

z = 2.0946

Chú ý:

hàm fzero xác định điểm mà tại đó đồ thị hàm số cần khảo sát cắt trục hồnh, khơng phải là khi đồ thị tiếp xúc với trục hoành

3.3.3. Sử dụng hàm fmin

Dùng để xác định cực tiểu của hàm 1 biến

Cú pháp

x = fmin('fun',x1,x2)

x = fmin('fun',x1,x2,options)

Mô tả

x = fmin('fun',x1,x2)

Trong đó fun là chuỗi chỉ tên hàm khảo sát được định nghĩa trong tệp M.file sẽ đưa ra giá trị x tại đó hàm fun sẽ đạt giá trị cực tiểu cục bộ trong khoảng khảo sát x1<=X<=x2 . trong trường hợp này chúng ta khơng đưa vào tuỳ chọn option, chế độ tính tốn sẽ dựa trên các giá trị mặc định của thông số điều khiển.

x = fmin('fun',x1,x2,options) Cho phép chúng ta xác định các thông số

options(1) -- Nếu giá trị của nó khác 0, máy sẽ hiển thị các kết quả tính

trong quá trình tìm cực tiểu, giá trị mặc định bằng 0.

options(2) -- quy định sai số tương đối. Giá trị mặc định là 1.e-4. options(14) -- quy định số bước tính tối đa. Giá trị mặc định là 500.

Ví dụ

Xác định cực tiểu của hàm f= X3-2X-5=0 ở trong khoảng từ 0 đến 2. Trước hết ta phải viết một M.file định nghĩa hàm f:

function y = f(x) y = x.^3-2*x-5; Để xác định cực tiểu ta gọi hàm x = fmin('f', 0, 2) Sẽ đưa ra kết quả x = 0.8165

Và giá trị của hàm tại điểm cực trị là

y = f(x) y = -6.0887 3.3.4. Sử dụng hàm fmins Cú pháp x = fmins('fun',x0) x = fmins('fun',x0,options) Mơ tả

x = fmins('fun',x0) Trong đó x0 là một véc tơ các giá trị thực sẽ trả kết quả

là véc tơ x xác định cực tiểu cục bộ cuả hàm nhiều biến định nghĩa bằng Mfile 'fun' gần điểm x0 . Các thông số điều khiển q trình tính tốn sẽ nhận giá trị mặc định

x = fmins('fun',x0,options) Cho phép ta ấn định giá trị của các thơng số

điều khiển q trình tính tốn. ý nghĩa của các thơng số này cũng tương tự như ở hàm fmin

Thí dụ

Hàm có cực tiểu tại (1,1) và giá trị cực tiểu =0. Điểm ước lượng ban đầu là (- 1.2,1). M-file banana.m sẽ dùng để định nghĩa hàm trên.

function f = banana(x) f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2; Câu lệnh [x,out] = fmins('banana',[-1.2, 1]); x out(10) Sẽ cho kết quả là x = 1.0000 1.0000 ans = 165 Các chú ý:

để quá trình tìm kiếm cực trị hội tụ, hàm nhiều biến phải thoả mãn các yếu tố sau: Hàm khơng có điểm gián đoạn

Hàm không trả ra các giá trị phức, inf hoặc NaN Cần chọn điểm xuất phát tìm kiếm hợp lý

Các biến của hàm cần chuyển đổi sao cho các giá trị của biến gần tương đương nhau về độ lớn

Để giải các bài tốn tìm cực trị có ràng buộc ta phải sử dụng các hàm 'penalty'

3.4. Tích phân và đạo hàm các hàm số:

3.4.1. Tích phân các hàm số

a, Sử dụng hàm trapz

Tích phân số các hàm số bằng phương pháp hình thang

Cú pháp

Z = trapz(X,Y) Z=trapz(Y)

Mô tả

Z = trapz(X,Y) tính tích phân của hàm đưa ra bởi véc tơ y phụ thuộc vào

Z = trapz(Y) tính tích phân của hàm đưa bới véc tơ y với trục hồnh có

khoảng chia là đơn vị. Trong trường hợp trục hoành được chia đều với khoảng cách khác đơn vị, giá trị của tích phân sẽ là giá trị của hàm nhân với trị số của chiều dài khoảng chia.

Ví dụ

Giá trị chính xác của hàm là 2.

Để tính gần đúng tích phân này bằng phương pháp số ta sử dụng các câu lệnh sau:

X = 0:pi/100:pi; Y = sin(x);

Sau đó 2 câu lệnh sau:

Z = trapz(X,Y) Và Z = pi/100*trapz(Y)

Sẽ đưa ra cùng kết quả:

Z =

1.9998

+ Tích vi phân bằng hàm int - Nếu S là biểu thức Symbolic thì:

int(S) tích phân khơng xác định của S theo biến mặc nhiên (muốn biết biến mặc nhiên này ta dựng hàm findsym).

int(S,v) tích phân khơng xác định của S theo v. int(S,a,b) tích phân xác định của S trên cận [a,b]

int(S,v,a,b) tích phân xác định của S theo v trên cận [a,b]

Ví dụ: Tính

>>syms x

>>S=2*x^2*(19+12*x^2)/(7*(x^2+1))

>>y=int(S,x,0,1) % tích phân S theo x trên cận [0,1] >>subs(y) % đổi sang kiểu số

b, Sử dụng hàm cumtrapz

Cú pháp

Z = cumtrapz(Y) Z = cumtrapz(X,Y)

Mô tả

Z = cumtrapz(Y) Tính tốn tích phân số tích luỹ của hàm đưa ra bởi véc

Z = cumtrapz(X,Y) Tính tốn tích phân số tích luỹ của hàm đưa ra bởi

véc tơ y với đối số đưa ra bởi véc tơ x . X và y cần có cùng chiều dài. Hoặc x là véc tơ cột và y là mảng 2 chiều Ví dụ: Nếu Y = [0 1 2; 3 4 5] cumtrapz(Y,1) Cho kết quả là ans = 0 1.0000 2.0000 1.5000 2.5000 3.5000 và cumtrapz(Y,2) ans = 0 0.5000 2.0000 3.0000 3.5000 8.0000 c, Sử dụng hàm quad, quad8 Cú pháp: q = quad('fun',a,b) q = quad('fun',a,b,tol) q = quad8(...) Mô tả

Các hàm Quad cho phép tính diện tích bên dưới đồ thị của hàm số bằng các phương pháp số. Đó chính là tích phân: b a dx ) x ( F q

q = quad('fun',a,b) trả kết quả của phép tích phân số của hàm 'fun' trong khoảng giới hạn giữa a và b. 'fun' cần phải trả ra các giá trị một véc tơ khi giá trị đầu vào là một véc tơ.

q = quad('fun',a,b,tol) cho phép quy định sai số tương đối của phép tích phân. Giá trị mặc định của nó là 1.e-3. Hãy sử dụng véc tơ 2 phần tử tol = [rel_tol abs_tol], để quy định đồng thời cả sai số tương đối và tuyệt đối.

Chú ý: Hàm Quad và Quad8 đều sử dụng phương pháp simson để tính tích phân,

Trong đó hàm quad8 sử dụng phương pháp bậc cao.

3.4.2. Đạo hàm các hàm số

Tính tốn độ lệch và xấp xỉ các đạo hàm Cú pháp Y = diff(X) Y = diff(X,n) Y = diff(X,n,dim) Mô tả

Y = diff(X) tính ra độ lệch giữa các phần tử kề nhau của véc tơ X.

Nếu X là véc tơ kết quả đưa ra là véc tơ ít hơn X 1 phần tử:

[X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)]

Nếu X là ma trận , hàm diff(X) đưa ra kết quả là ma trận cột các độ lệch :

[X(2:m,:)-X(1:m-1,:)]

Y = diff(X,n) Đưa ra véc tơ độ sai lệch bậc n : như vậy diff(X,2) cho ra cùng kết quả

với diff(diff(X)).

Chú ý

Giá trị diff(y)./diff(x) đưa ra kết quả đạo hàm của hàm số y(x) Ví dụ: x = [1 2 3 4 5]; y = diff(x) y = 1 1 1 1 z = diff(x,2) z = 0 0 0

CHƯƠNG 4: LẬP TRÌNH ỨNG DỤNG TRONG MATLAB

Một phần của tài liệu Tài liệu ứng dụng máy tính trong thiết kế ô tô (Trang 36 - 43)

Tải bản đầy đủ (PDF)

(97 trang)