Công cụ nội suy

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 30 - 35)

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

3.2. Công cụ nội suy

3.2.1. Hàm nội suy một biến: Hàm interp1 Hàm interp1

Cú pháp:

yi = interp1(x,Y,xi) yi = interp1(x,Y,xi,method)

Trong đó:

x, Y là hai véc tơ có cùng kích thước xác định các điểm (xi, yi) véc tơ x phải tăng dần hoặc giảm dần

điểm xi cần nằm trong khoảng từ x(1) đến x(n)

method quy định phương pháp nội suy: các giá trị của nó là:

'linear' chế độ nội suy tuyến tính (default)

'nearest' chế độ nội suy sử dụng giá trị ở nút gần nhất 'spline' nội suy hàm spline bậc 3

'cubic' chế độ nội suy đa thức bậc 3

Ví dụ ta có các dữ liệu dân số của nước mỹ ở các thời điểm cách nhau 10 năm như sau

t = 1900:10:1990;

p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633];

hàm: interp1(t,p,1975) sẽ cho ta giá trị nội suy về dân số vào năm 1975: với kết quả là:

ans =

3.2.2. Hàm nội suy hai biến: a, Dùng hàm interp2 a, Dùng hàm interp2 Cú pháp ZI = interp2(X,Y,Z,XI,YI) ZI = interp2(Z,XI,YI) ZI = interp2(X,Y,Z,XI,YI,method) Mô tả

ZI = interp2(X,Y,Z,XI,YI) đưa ra ma trận ZI chứa các phần tử tương ứng với các phần tử quy định trong ma trận XI, YI và được xác định bởi phép nội suy của hàm hai biến xác định bởi các ma trận X, Y và Z. X, Y cần phải tăng hoặc giảm dần và có cùng kích cỡ, được cung cấp bởi lệnh meshgrid.

XI và YI có thể là các ma trận, khi đó interp2 sẽ đưa ra các giá trị tương ứng với các điểm (XI(i,j),YI(i,j)). Ngồi ra ta cũng có thể đưa vào các véc tơ hàng và cột xi và yi. Trong trường hợp này, interp2 sẽ chuyển đổi các véc tơ này thành các ma trận giống như ta sử dụng lệnh meshgrid(xi,yi).

ZI = interp2(Z,XI,YI) sẽ coi như các véc tơ X = 1:n và Y = 1:m, ở đây [m,n] = size(Z).

ZI = interp2(X,Y,Z,XI,YI,method) cho phép sử dụng các phương pháp nội suy khác nhau:

'linear' chế độ nội suy tuyến tính (default)

'nearest' chế độ nội suy sử dụng giá trị ở nút gần nhất 'spline' nội suy hàm spline bậc 3

'cubic' chế độ nội suy đa thức bậc 3

Để có thể nội suy nhanh hơn khi các mốc nội suy cách đều, chúng ta hãy dùng các chế độ '*linear', '*cubic', '*spline', hoặc '*nearest'.

Thí dụ:

Ta có dữ liệu về tiền lương của công nhân ở các năm từ 1950 đến 1999 theo thời gian phục vụ như sau: years = 1950:10:1990; service = 10:10:30; wage = [150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243];

Từ cơ sở dữ liệu này ta có thể xác định được tiền lương của cơng nhân ở năm 1975 với 15 năm phục vụ: w = interp2(service,years,wage,15,1975) w = 190.6287 b, Sử dụng hàm meshgrid

Tạo ra ma trận x và y dùng cho đồ thị ba chiều và xác định giá trị của hàm 2 biến

Cú pháp

[X,Y] = meshgrid(x,y) [X,Y] = meshgrid(x) [X,Y,Z] = meshgrid(x,y,z)

Mô tả

[X,Y] = meshgrid(x,y) Chuyển các véc tơ x và y thành các ma trân X và Y

dùng để tính giá trị của hàm 2 biến và đồ thị lưới ba chiều. Các hàng của ma trận X là copy của véc tơ x và các cột của ma trận Y là copy của véc tơ y.

[X,Y] = meshgrid(x) có ý nghĩa giống như [X,Y] = meshgrid(x,x). [X,Y,Z] = meshgrid(x,y,z) Tạo ra các mảng 3 chiều dùng để xác định giá

trị hàm 3 biến hoặc để vẽ đồ thị khối 3 chiều.

Chú ý

Hàm meshgrid tương tự như hàm ndgrid ngoại trừ trật tự hai tham số đầu vào và ra của hai hàm được đổi lẫn cho nhau, có nghĩa là câu lệnh

[X,Y,Z] = meshgrid(x,y,z)

sẽ cho cùng kết quả như câu lệnh [Y,X,Z] = ndgrid(y,x,z)

meshgrid chỉ dùng trong không gian hai hoặc 3 chiều.

Thí dụ [X,Y] = meshgrid(1:3,10:14) X = 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Y = 10 10 10

11 11 11 12 12 12 13 13 13 14 14 14

3.2.3. Phép nội suy 3 biến và n biến

a, Sử dụng hàm interpn Cú pháp VI = interpn(X1,X2,X3,...,V,Y1,Y2,Y3,...) VI = interpn(V,Y1,Y2,Y3,...) VI = interpn(V,ntimes) VI = interpn(...,method) Mô tả

VI = interpn(X1,X2,X3,...,V,Y1,Y2,Y3,...) Nội suy để tìm giá trị VI của hàm nhiều biến V tại các điểm đưa ra bằng các véc tơ Y1, Y2, Y3.. . Để định nghĩa V ta cần dùng các mảng X1, X2, .. Xn. để định nghĩa các điểm mà tại đó dữ liệu của hàm được đưa ra.

Y1, Y2, Y3,... Có thể là các ma trận, trong trường hợp này hàm interpn sẽ đưa ra véc

tơ VI với các giá trị tương ứng với các điểm (Y1(i,j) ,Y2(i,j),Y3(i,j),...). Ta có thể thay các mảng Y1, Y2, Y3... bằng các véc

tơ y1, y2, y3 ... Trong trường hợp này interpn sẽ thông dịch các véc tơ thành các ma trận giống như dùng hàm ndgrid(y1,y2,y3,...).

VI = interpn(V,Y1,Y2,Y3,...) Nội suy như trên và coi X1 = 1:size(V,1), X2 = 1:size(V,2), X3 = 1:size(V,3), ...

VI = interpn(...,method) xác định phương pháp nội suy.

'linear' đối với nội suy tuyến tính (mặc định) 'cubic' nội suy đa thức bậc 3

'spline' nội suy spline bậc ba

'nearest' . nội suy lấy giá trị nút gần nhất

b, Sử dụng hàm ndgrid

Tạo ra mảng n chiều dùng để xác định giá trị của hàm nhiều biến và nội suy.

Cú pháp

[X1,X2,X3,...] = ndgrid(x1,x2,x3,...) [X1,X2,...] = ndgrid(x)

[X1,X2,X3,...] = ndgrid(x1,x2,x3,...) Chuyển các véc tơ x1, x2, x3... thành các mảng X1, X2, X3 ... dùng để xác định giá trị của hàm nhiều biến hoặc nội suy hàm nhiều biến. Chiều thứ i của mảng Xi là copy của các phần tử véc tơ xi.

[X1,X2,..] = ndgrid(x) có cùng kết quả như [X1,X2,...] = ndgrid(x,x,...). Ví dụ Sử dụng hàm ndgrid để vẽ đồ thị lưới hàm : 22 2 1 . 1 x x e x Z    . [X1,X2] = ndgrid(-2:.2:2, -2:.2:2); Z = X1 .* exp(-X1.^2 - X2.^2); mesh(Z) Hình 3.1. Đồ thị lưới sử dụng hàm ndgrid Chú ý

Hàm ndgrid được dùng gần giống như hàm meshgrid ngoại trừ hai đối số đầu của các biến vào, ra được tráo đổi cho nhau. Có nghĩa là câu lệnh

[X1,X2,X3] = ndgrid(x1,x2,x3)

cho kết quả cũng giống như câu lệnh

[X2,X1,X3] = meshgrid(x2,x1,x3).

3.2.4. Nội suy bằng hàm polyfit Cú pháp: Cú pháp:

p = polyfit(x,y,n) [p,s] = polyfit(x,y,n) Mô tả:

Hàm p = polyfit(x,y,n) tìm ra các hệ số của đa thức p(x) bậc n phù hợp với dữ liệu x, y trong ý nghĩa của độ lệch quân bình bình phương bé nhất. kết quả là véc tơ p có chiều dài n+1 chứa các hệ số của đa thức theo trật tự giảm dần của số mũ:

[p,s] = polyfit(x,y,n) đưa ra đa thức hệ số p, s dùng để ước lượng sai số.

3.2.5. Nội suy bằng hàm spline Cú pháp Cú pháp

yy = spline(x,y,xx) pp = spline(x,y) Mô tả

Hàm spline Tạo ra hàm spline nhận các giá trị y(:,j) tại điểm x(j) với mọi j yy =

spline(x,y,xx) đưa ra các giá trị của hàm tại các điểm chỉ ra bằng véc tơ xx. pp = spline(x,y) đưa ra dạng pp của hàm nội suy bậc 3, mà có thể sử dụng với

lệnh ppval. Ví dụ Hai véc tơ t = 1900:10:1990; p = [ 75.995 91.972 105.711 123.203 131.669 ... 150.697 179.323 203.212 226.505 249.633 ];

Thể hiện dữ liệu về dân số của mỹ (tính bằng đơn vị triệu người), biểu thức

spline(t,p,2000)

Sử sụng hàm spline bậc 3 để ngoại suy và dự đoán dân số năm 2000. kết quả sẽ là: ans =

270.6060

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 30 - 35)

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

(97 trang)