You are on page 1of 32

ĐA THỨC, XẤP XỈ,

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 đó

Đa thức Cách viết trong MATLAB


GIÁ TRỊ ĐA THỨC - LỆNH polyval

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

a) Tính p(2) 150

b) Vẽ đồ thị p trên đoạn [-4, 6] 100

>> p = [1, -2, 3, 4]; 50

>> 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

véc tơ cột chứa các


nghiệm của đa thức

r = roots(p) p = poly(r)

véc tơ hệ số của đa thức

>> p = [1, -10, 35, -50, 24]; >> r = [1, 2, 3, 4];


>> r = roots(p) >> p = poly(r)
r= p=
4.0000 1 -10 35 -50 24
3.0000
2.0000 >> poly([1, 2])
1.0000 ans =
1 -3 2
>> roots([1, -3, 2])
ans =
2
1
CỘNG, TRỪ, NHÂN, CHIA CÁC ĐA THỨC

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];

>> p = p1 + [0, 0, p2]


p=
1 3 5 4 8

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

>> u = [2, 9, 7, -6];


>> v = [1, 3];
>> [a, b] = deconv(u, v)
a = 2 3 -2 Đa thức phần dư b và đa thức
b= 0 0 0 0 bị chia u có cùng độ dài (=4)

>> p = [2, -13, 0, 75, 2, 0, -60];


>> q = [1, 0, -5];
>> [c, d] = deconv(p, q)
c = 2 -13 10 10 52 Đa thức phần dư d và đa thức
d = 0 0 0 0 0 50 200 bị chia p có cùng độ dài (=7)
ĐẠO HÀM CÁC ĐA THỨC

k = polyder(p) k là đạo hàm bậc nhất của p

k = polyder(a,b) k là đạo hàm bậc nhất của đa thức tích của a và b

[n,d] = polyder(u,v) n là đa thức tử số, d là đa thức mẫu số của đạo


hàm bậc nhất của phân thức u/v

>> p = [3, -2, 4]; q = [1, 0, 5];


>> a = polyder(p)
a = 6 -2 đạo hàm của p là

>> b = polyder(p,q)
b = 12 -6 38 -10
đạo hàm của p*q là

>> [tu,mau] = polyder(p,q)


tu = 2 22 -10
mau = 1 0 10 0 25 đạo hàm của là
TÍCH PHÂN CÁC ĐA THỨC

a = polyint(p) a là tích phân của p, với hằng số = 0

a = polyint(p,k) a là tích phân của p, với hằng số = k

>> p=[1,2] p  x2


p=
1 2

>> 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 đó

Cách tiếp cận bằng xấp xỉ đa thức


Các đa thức có thể được sử dụng để xây dựng đường cong xấp xỉ theo hai cách:
1. Đường xấp xỉ đi qua mọi điểm của dữ liệu cần xấp xỉ
2. Đường xấp xỉ không đi qua mọi điểm của dữ liệu cần xấp xỉ, nhưng cho sai số
tốt
ĐƯỜNG CONG XẤP XỈ BẰNG ĐA THỨC - LỆNH polyfit

1. Đường xấp xỉ đi qua mọi điểm của dữ liệu cần xấp xỉ


Để tạo đường xấp xỉ cho dữ liệu có n điểm tọa độ (xi , yi)
sẽ cần một đa thức bậc n - 1
2. Đường xấp xỉ không đi qua mọi điểm của dữ liệu cần xấp xỉ
Có thể tạo đường xấp xỉ cho dữ
liệu có n điểm với đa thức bậc có
bậc nhỏ hơn n-1 nhưng cho sai
số tốt bằng cách sử dụng các
phương pháp khác nhau.
Phương pháp phổ biến là bình
phương tối thiểu
ĐƯỜNG CONG XẤP XỈ BẰNG ĐA THỨC - LỆNH polyfit

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ỉ

Lệnh polyfit sử dụng phương pháp bình phương tối thiểu


Với m điểm dữ liệu thì có thể tạo đa thức xấp xỉ có bậc tối đa là m - 1. Khi bậc đa
thức là m - 1 thì đường cong xấp xỉ đi qua mọi điểm dữ liệu.
Lưu ý rằng không phải n càng cao thì độ chính xác càng cao, bởi khi n lớn thì
đường cong xấp xỉ có thể sẽ rất nhấp nhô
ĐƯỜNG CONG XẤP XỈ BẰNG ĐA THỨC - LỆNH polyfit

x = [0.9, 1.5, 3, 4, 6, 8, 9.5];


y = [0.9, 1.5, 2.5, 5.1, 4.5, 4.9, 6.3];

p = polyfit(x,y,3)

xp = 0.9 : 0.1 : 9.5;


yp = polyval(p,xp);

plot(x,y,'o',xp,yp)
xlabel('x'); ylabel('y')

p=
0.0220 -0.4005 2.6138 -1.4158

n = 4, 5 cho kết quả tốt hơn n = 6


ĐƯỜNG CONG XẤP XỈ BẰNG CÁC HÀM KHÁC ĐA THỨC

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

Hàm phân thức

Các hàm này được viết lại dưới dạng tuyến tính: v = p1u + p2

Hàm lũy thừa


Hàm e mũ
Hàm phân thức

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

Function Dạng viết lại tuyến tính polyfit m, b


y = bxm ln(y) = m*ln(x) + ln(b) p = polyfit(log(x), log(y), 1) m = p(1), ln(b) = p(2)
y = bemx ln(y) = mx + ln(b) p = polyfit(x, log(y), 1) m = p(1), ln(b) = p(2)
y = b10mx log10(y) = mx + log10(b) p = polyfit(x, log10(y), 1) m = p(1), log(b) = p(2)
y = m*ln(x) + b y = m*ln(x) + b p = polyfit(log(x), y, 1) m = p(1), b = p(2)
y = m*log10(x) + b y = m*log10(x) + b p = polyfit(log10(x), y, 1) m = p(1), b = p(2)
y = 1/(mx + b) 1/y = mx + b p = polyfit(x, 1./y, 1) m = p(1), b = p(2)
ĐƯỜNG CONG XẤP XỈ BẰNG CÁC HÀM KHÁC ĐA THỨC
Cách lựa chọn hàm xấp xỉ: vẽ dữ liệu trong các hệ trục tọa độ khác nhau, nếu
như dữ liệu xếp thành đường thẳng trong hệ tọa độ nào thì có thể chọn hàm
xấp xỉ tương ứng
Các lệnh vẽ đồ thị với hệ trục
logarit: loglog, semilogx, semilogy
tuyến tính tuyến tính
logarit logarit

tuyến tính logarit


logarit tuyến tính

tuyến tính tuyến tính

Một số quy tắc thông dụng:


- Hàm e mũ không đi qua gốc tọa độ
- Hàm e mũ chỉ có thể dùng để xấp xỉ dữ liệu y > 0
- Hàm logarit không thể xấp xỉ dữ liệu có x < 0 hoặc x = 0
- Hàm đa thức có y = 0 khi x = 0
- Hàm phân thức không thể xấp xỉ dữ liệu có y = 0
ĐƯỜ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

Hàm logarit bị loại vì có dữ liệu t = 0


Hàm lũy thừa bị loại vì w khác 0 khi t = 0
Còn lại hàm e mũ và phân thức
Vẽ các đồ thị dưới dạng viết lại tương e mũ
ứng của hai hàm này (t, ln(w) và (t, 1/w)
semilogy(t, w), plot(t, 1./w)
Hàm e mũ được chọn vì cho dữ liệu
thẳng hàng trong hệ tọa độ logarit
Kết luận: chọn xấp xỉ theo hàm e mũ
Phân thức
y= bemx
với b,m được tìm bởi lệnh
p = polyfit (x , log(y) , 1)
m = p(1), ln(b) = p(2)
ĐƯỜNG CONG XẤP XỈ BẰNG CÁC HÀM KHÁC ĐA THỨC
t = 0:0.5:5;
w = [6, 4.83, 3.7, 3.15, 2.41, 1.83, 1.49, 1.21, 0.96, 0.73, 0.64];
p = polyfit(t,log(w),1);
m = p(1), b = exp(p(2))
tm = 0:0.1:5; wm = b*exp(m*tm); m = -0.4580
plot(t,w,'o',tm,wm) b = 5.9889
NỘI SUY - HÀM interp1

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

Nếu chỉ sử dụng 2 điểm dữ liệu lân cận,


ta có nội suy tuyến tính
Sử dụng 3 điểm dữ liệu -> nội suy bậc 2
Sử dụng 4 điểm dữ liệu -> nội suy bậc 3
NỘI SUY - HÀM interp1

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

Lời giải linear spline pchip


NỘI SUY - HÀM interp1

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');

y_fun = 1.5.^xi.*cos(2*xi); % Phương trình gốc của dữ liệu

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

ĐƯỜNG CONG XẤP XỈ ĐƯỜNG CONG NỘI SUY


Không nhất thiết đi qua các điểm Chắc chắn đi qua toàn bộ các điểm dữ
dữ liệu liệu
Khi xây dựng sử dụng toàn bộ các Khi xây dựng chỉ sử dụng những điểm
điểm dữ liệu dữ liệu lân cận của điểm nội suy
GIAO DIỆN BASIC FITTING

MATLAB trang bi giao diện Basic Fitting cho phép:


- Tạo đường cong xấp xỉ sử dụng đa thức đến bậc 10, nội suy spline và Hermite
- Vẽ các đường nội suy theo các phương pháp khác nhau trên cùng một đồ thị
để so sánh
- Vẽ sai số của các đa thức xấp xỉ
- Tính toán giá trị của các điểm cụ thể với các phương pháp nội suy khác nhau
- Đưa phương trình của đa thức nội suy vào đồ thị
GIAO DIỆN BASIC FITTING

Để 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ị

Các thao tác với Plot fits


- Check to display fits on figure: lựa chọn các phương pháp xấp xỉ sẽ sử dụng
- Show equations: hiển thị phương trình của đa thức xấp xỉ
- Plot residuals: vẽ các sai số lên hình vẽ
- Show norm of residuals: vẽ chuẩn của sai số. Chuẩn này càng nhỏ thì đường xấp xỉ
càng tốt

Các thao tác với Numerical Results


- Fit: lựa chọn phương pháp để kiểm tra tính toán số
- Coefficients and norm of residuals: hiển thị kết quả tính toán số cho đa thức xấp xỉ đã
chọn trong Fit. Kết quả này bao gồm các hệ số của đa thức và chuẩn của sai số. Kết quả
có thể được lưu bằng cách check vào hộp Save to workspace
- Find y=f(x): cung cấp giá trị trung bình của các điểm nội suy được chỉ định
GIAO DIỆN BASIC FITTING
VÍ DỤ

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

You might also like