Professional Documents
Culture Documents
Chapter 8 - Đa thức, xấp xỉ, nội suy - Slides
Chapter 8 - Đa thức, xấp xỉ, nội suy - Slides
NỘI SUY
• Biểu diễn đa thức
• Giá trị đa thức - Lệnh polyval
• Nghiệm của đa thức - Lệnh roots và lệnh poly
• Cộng, trừ, nhân, chia các đa thức
• Đạo hàm các đa thức
• Đường cong xấp xỉ bằng đa thức - Lệnh polyfit
• Đường cong xấp xỉ bằng các hàm khác đa thức
• Nội suy - Hàm interp1
• Giao diện Basic Fitting
• Ví dụ
BIỂU DIỄN ĐA THỨC
Trong MATLAB, các đa thức được biểu diễn bởi véc tơ hàng chứa các hệ số
của đa thức đó
polyval(p,x)
véc tơ hệ số của đa thức điểm cần tính giá trị đa thức,
có thể là số, véc tơ, ma trận
Ví dụ:
Cho đa thức p = x3 -2x2 + 3x + 4 200
>> polyval(p,2) 0
ans = 10
-50
>> x = -4:0.1:6;
>> y = polyval(p,x); -100
>> plot(x,y)
-150
-4 -3 -2 -1 0 1 2 3 4 5 6
NGHIỆM CỦA ĐA THỨC - LỆNH roots VÀ LỆNH poly
r = roots(p) p = poly(r)
Cộng, trừ
Yêu cầu các đa thức có cùng độ dài
>> p1 = [1, 3, 4, 2, 5];
>> p2 = [1, 2, 3];
Nhân
c = conv(a,b)
đa thức tích đa thức thừa số
>> pp = conv(p1,p2)
pp =
1 5 13 19 21 16 15
CỘNG, TRỪ, NHÂN, CHIA CÁC ĐA THỨC
Chia
[q,r] = deconv(u,v)
q là thương u là đa thức bị chia
r là phần dư v là đa thức chia
Lưu ý: r và u sẽ có cùng độ dài
>> b = polyder(p,q)
b = 12 -6 38 -10
đạo hàm của p*q là
>> a = polyint(p)
a= 1 2
0.5000 2.0000 0 a x 2x 0
2
>> b = polyint(p,3)
b=
1 2
0.5000 2.0000 3.0000 b x 2x 3
2
ĐƯỜNG CONG XẤP XỈ BẰNG ĐA THỨC - LỆNH polyfit
Bài toán:
Cho một dãy dữ liệu x, y. Tìm phương trình đường cong xấp xỉ gần đúng nhất dãy
dữ liệu đó
p = polyfit(x,y,n)
hệ số của đa thức xấp xỉ x,y là tọa độ điểm dữ liệu
n là bậc đa thức xấp xỉ
p = polyfit(x,y,3)
plot(x,y,'o',xp,yp)
xlabel('x'); ylabel('y')
p=
0.0220 -0.4005 2.6138 -1.4158
Lệnh polyfit có thể dùng để xấp xỉ dữ liệu bằng các hàm khác đa thức, sau
khi qua một số bước xử lý ban đầu
Các hàm xấp xỉ
Hàm lũy thừa
Hàm e mũ
Hàm logarit
Các hàm này được viết lại dưới dạng tuyến tính: v = p1u + p2
Sau đó, sử dụng lệnh polyfit(u,v,1) để tìm đa thức bậc nhất p = [p1, p2], chú ý
input cho polyfit lúc này không phải là x,y mà là các giá trị u, v tương ứng trong
dạng viết lại. Sau đó dùng p1, p2 để tính lại m,b và dựng lại hàm xấp xỉ gốc.
ĐƯỜNG CONG XẤP XỈ BẰNG CÁC HÀM KHÁC ĐA THỨC
Ví dụ: Tìm hàm w = w(t) xấp xỉ dãy dữ liệu cho trong bảng
Lời giải
Vẽ đồ thị dữ liệu
Các điểm dữ liệu chưa
thằng hàng
Vẽ thêm các đồ thị với các
hệ trục tọa độ theo thang
logarit để tìm dạng hàm
xấp xỉ phù hợp
ĐƯỜNG CONG XẤP XỈ BẰNG CÁC HÀM KHÁC ĐA THỨC
Bài toán: Cho một dãy dữ liệu x, y. Tìm các giá trị nằm giữa các điểm dữ liệu
Với bài toán nội suy 1 chiều, có thể tìm đường cong xấp xỉ đi qua mọi điểm dữ
liệu. Tuy nhiên nhưng đã biết, cách này chưa chắc cho giá trị nội suy chính xác, vì
đường cong có thể rất nhấp nhô
Phương pháp tốt hơn: thay vì sử dụng tất cả các điểm dữ liệu, chỉ sử dụng một
số điểm dữ liệu lân cận với điểm cần nội suy
yi = interp1(x,y,xi,’method’)
giá trị nội suy x là biến dữ liệu độc lập phương pháp nội
y là biến dữ liệu phụ thuộc suy (optional)
xi là điểm cần nội suy
x phải là véc tơ tăng dần hoặc giảm dần, xi có thể là 1 số hoặc 1 véc tơ
Các phương pháp nội suy
‘nearest’ trả lại giá trị dữ liệu gần nhất với điểm cần nội suy
‘linear’ nội suy tuyến tính (mặc định)
‘spline’ nội suy bậc 3 (sử dụng đa thức xấp xỉ bậc 3)
‘pchip’ nội suy rời rạc bậc 3 Hermite
Với ‘nearest’ và ‘linear’, xi phải nằm trong x. Với ‘spline’ và ‘pchip’ thì xi có thể
nằm ngoài x, và khi đó hàm interp1 sẽ thực hiện ngoại suy
‘spline’ có thể cho sai số lớn trong trường hợp dữ liệu phân bố không đều (có
những điểm gần nhau hơn so với những điểm khác)
NỘI SUY - HÀM interp1
Ví dụ: Cho dãy dữ liệu ứng với hàm số f(x) = 1.5x cos(2x)
Sử dụng các phương pháp linear, spline và pchip để nội suy các giá trị
nằm giữa các điểm dữ liệu. Vẽ đồ thị so sánh độ chính xác của từng
phương pháp
x = 0:1:5;
y = [1, -0.6242, -1.4707, 3.2406, -0.7366, -6.3717];
xi = 0:0.1:5;
yi_lin = interp1(x,y,xi,'linear');
yi_spl = interp1(x,y,xi,'spline');
yi_pch = interp1(x,y,xi,'pchip');
subplot(1,3,1)
plot(x,y,'o',xi,y_fun,xi,yi_lin,'--');
subplot(1,3,2)
plot(x,y,'o',xi,y_fun,xi,yi_spl,'--');
subplot(1,3,3)
plot(x,y,'o',xi,y_fun,xi,yi_pch,'--');
SO SÁNH XẤP XỈ VÀ NỘI SUY
Để mở Basic Fitting, trước hết cần vẽ dữ liệu, rồi chọn Basic Fitting từ Tools menu
GIAO DIỆN BASIC FITTING
GIAO DIỆN BASIC FITTING
Một số thao tác
- Select data: dùng để chọn một tập hợp điểm dữ liệu dùng để xấp xỉ trong trường hợp
có nhiều tập dữ liệu trên một hình vẽ. Tại mỗi thời điểm chỉ có thể tiến hành xấp xỉ
cho một tập dữ liệu, nhưng có thể lựa chọn nhiều phương pháp khác nhau cùng một
lúc
- Center and scale x data: khi box này được check thì dữ liệu sẽ được chuẩn hóa về giá
trị trung bình bằng 0 với độ lệch chuẩn đơn vị
Ví dụ 1.
Hộp bằng nhôm có kích thước bao ngoài 24x12x4
(in). Độ dày thành hộp là x.
Tìm công thức liên hệ giữa trọng lượng hộp và x
Tính độ dày của hộp có trọng lượng 15 lb, biết
trọng lượng riêng của nhôm là 0.101 lb/in3
Lời giải
Vrong 24 2 x 12 2 x 4 x
Vvo 24 12 4 Vrong
Vvo Vnhom 24 12 4 Vnhom Vrong 0
Vnhom = 15/0.101;
a = [-2, 24]; b = [-2, 12]; c = [-1, 4]; x=
Vrong = conv(c, conv(a,b)); 10.8656 + 4.4831i
eq = [0, 0, 0, 24*12*4 - Vnhom] - Vrong; 10.8656 - 4.4831i
x = roots(eq) 0.2687
VÍ DỤ
Ví dụ 2.
Cho dãy dữ liệu nhiệt độ, độ nhớt như trong bảng. Tìm hàm xấp xỉ biểu diễn dãy
dữ liệu này
Lời giải
Đồ thị dữ liệu được vẽ để tìm hàm xấp xỉ phù
hợp. Hình bên có nhiệt độ theo thang tuyến
tính, và độ nhớt theo thang logarit.
Vì dữ liệu chưa thẳng hàng nên hàm số e mũ
y = bexm chưa phù hợp
Lựa chọn hàm xấp xỉ dạng be
a2T 2 a1T
ln a2T 2 a1T ln b
sử dụng lệnh polyfit(T, log(muy), 2)
VÍ DỤ
T = [-20:20:120];
muy = [4, 0.38, 0.095, 0.032, 0.015, 0.0078, 0.0045, 0.0032];
TK = T + 273;
p = polyfit(TK,log(muy),2)
Tplot = 273 + [-20:120];
muyplot = exp(p(1)*Tplot.^2 + p(2)*Tplot + p(3));
semilogy(TK,muy,'o',Tplot,muyplot)
p=
0.0003 -0.2685 47.1673