58
Chương 3: Đưng Cong Khp Nguy„n Đøc Nghĩa, Vũ Văn Thi»u, Trnh Anh Phúc 1 1 Bº môn Khoa Hc Máy Tính, Vi»n CNTT & TT, Trưng Đ/i Hc Bách Khoa Hà Nºi. Ngày 13 tháng 12 năm 2012 Trnh Anh Phúc ( Bº môn Khoa Hc Máy Tính, Vi»n CNTT & TT, Trưng Đ/i Hc Bách Khoa Hà Nºi. ) Tính toán khoa hc Ngày 13 tháng 12 năm 2012 1 / 58

Tính toán khoa học: Chương 3: Đường cong khớp

Embed Size (px)

Citation preview

Page 1: Tính toán khoa học: Chương 3: Đường cong khớp

Chương 3: Đường Cong Khớp

Nguyễn Đức Nghĩa, Vũ Văn Thiệu, Trịnh Anh Phúc 1

1Bộ môn Khoa Học Máy Tính, Viện CNTT & TT,Trường Đại Học Bách Khoa Hà Nội.

Ngày 13 tháng 12 năm 2012

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 1 / 58

Page 2: Tính toán khoa học: Chương 3: Đường cong khớp

Giới thiệu

1 Đặt vấn đề

2 Nội suyNội suy LagrangeNội suy spline

3 Hồi quiHồi qui tuyến tínhĐương cong khớp bậc caoĐường cong khớp tổng quát

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 2 / 58

Page 3: Tính toán khoa học: Chương 3: Đường cong khớp

Đặt vấn đề

Vấn đề đặt ra là :

Giả sử cần tính xấp xỉ hàm f (x) không biết rõ công thức, tuy nhiên bằngthực nghiệm ta xác định được giá trị f (x) tại n + 1 điểm rời rạc

fi = f (xi ) i = 0, 1, · · · ,N

Cho bộ dữ liệu {(xi , fi ), i = 0,N}, cần tìm cách xấp xỉ hàm f (x) bởi mộthàm (có thể được tính theo công thức giải tích) p(x) sao cho ’khoảngcách’ giữa chúng trên bộ dữ liệu nhỏ nhất có thể.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 3 / 58

Page 4: Tính toán khoa học: Chương 3: Đường cong khớp

Đặt vấn đề (tiếp)

tiếp tục...

Để giải quyết vấn đề

Ta sẽ tìm hiểu hai phương pháp dùng để để xây dựng đường cong khớp(curve fitting)

Nội suy (Interpolation) : hàm p(x) phải đi qua tất cả các điểm thuộcbộ dữ liệu.

Hồi quy (Regression) dùng tiêu chí bình phương bé nhất (leastsquares) : cho trước dạng f (x) có tham số, ta phải điều chỉnh cáctham số này bằng cách cực tiểu nó theo tiêu chí nào đó.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 4 / 58

Page 5: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Mở đầu

Phép nội suy có thể thực hiện với các hàm p(x) là

Hàm đa thức

Hàm hữu tỷ

Hàm chuỗi Fourier

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 5 / 58

Page 6: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Nội suy

Định nghĩa : Ta nói hàm p(x) là hàm nội suy bộ dữ liệu{(xi , fi ), i = 0,N} nếu thực hiện các điều kiện sau

pi = fi i = 0, 1, · · · ,N

hệ N + 1 đẳng thức gọi là điều kiện nội suy. Sở dĩ hàm đa thức đượcchọn vì việc tính giá trị, đạo hàm, vi phân dễ dàng (tính chất giải tích củahàm rõ ràng).Đa thức nội suy bộ dữ liệu được gọi là đa thức nội suy (interpolatingpolynominal)Định nghĩa : Ta gọi đa thức bậc không quá K là hàm

pK (x) = a0 + a1x + · · ·+ aKxK

trong đó a0, a1, · · · , aK là các hằng số.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 6 / 58

Page 7: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Nội suy tuyến tính

Ta có hai điểm dữ liệu (x0, f0) và (x1, f1) cần nội suy bởi đa thứcp1(x) ≡ a0 + a1x thỏa mãn hệ phương trình

p1(x0) ≡ a0 + a1x0 = f0

p1(x1) ≡ a0 + a1x1 = f1

Giải ra, ta có

Khi x0 6= x1 xảy ra hai trường hợpI nếu f0 6= f1 thì p1(x) =

x1f0−x0f1x1−x0

+ f1−f0x1−x0

x

I nếu f0 = f1 thì lời giải là hằng số ⇒ đa thức bậc không.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 7 / 58

Page 8: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Nội suy tuyến tính (tiếp)

x

f

(4,3)

(9,6)

p1(x) = 0.6+ 0.6x

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 8 / 58

Page 9: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange

Cần xây dựng đường cong đi qua 3,4 hay nhiều điểm (xem hình).

x

f

(4,3)

(7,4)

(9,6)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 9 / 58

Page 10: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Xét đa thứcpM(x) = a0 + a1x + a2x

2 + · · ·+ aMxM

Vậy đa thức pM(x) nội suy bộ dữ liệu {(xi , fi ), i = 0,N} nếu các điều kiệnnội suy :

pM(x0) ≡ a0 + a1x0 + a2x20 + · · ·+ aMxM

0 = f0

pM(x1) ≡ a0 + a1x1 + a2x21 + · · ·+ aMxM

1 = f1

· · ·pM(xN) ≡ aN + a1xN + a2x

2N + · · ·+ aMxM

N = fN

Đây là một hệ phương trình tuyến tính nên ta có thể biểu diễn bằng côngthức dạng ma trận.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 10 / 58

Page 11: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Như vậy dạng ma trận của điều kiện nội suy1 x0 · · · xM

0

1 x1 · · · xM1

......

. . ....

1 xN · · · xMN

a0

a1...

aM

=

f0

f1...

fN

Giả thiết là x0, x1, · · · , xN là phân biệt, vậy theo lý thuyết giải hệ phươngtrình tuyến tính trong chương trước ta có

N=M : hệ phương trình có nghiệm duy nhất

M<N : có thể chọn bộ dữ liệu để nó vô nghiệm

M>N : nếu hệ có nghiệm thì nó có vô số nghiệm

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 11 / 58

Page 12: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Khi N = M ma trận hệ số của hệ phương trình trên là ma trậnVandermonde (Không phải Voldemort)

VN =

1 x0 · · · xM

0

1 x1 · · · xM1

......

. . ....

1 xN · · · xMN

Có định thức của Vn là :

VN =∏i>j

(xi − xj)

suy ra hệ có nghiệm khi x0, x1, · · · , xN là phân biệt từng đôi.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 12 / 58

Page 13: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Định lý (Tính duy nhất của đa thức nội suy) : Nếu các nút dữ liệux0, x1, · · · , xN là khác nhau từng đôi thì tồn tại duy nhất đa thức nội suypN(x) bậc không quá N nội suy bộ dữ liệu {(xi , fi ), i = 0,N}.

Bậc của đa thức nội suy có thể nhỏ hơn N

Ví dụ, khi 3 điểm dữ liệu (x0, f0), (x1, f1), (x3, f3) thằng hàng thì phươngtrình nội suy trở thành bậc không quá hai do nó là đường thẳng.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 13 / 58

Page 14: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Ví dụ 1 :

Xác định các hệ số của đa thức nội suy p2(x) = a0 + a1x + a2x2 nội suy

bộ dữ liệu {(-1,0),(0,1),(1,3)}, ta có điều kiện nội suy

a0 + (−1)a1 + (1)a2 = 0

a0 = 1

a0 + (1)a1 + (1)a2 = 3

Giải hệ phương trình ta có a0 = 1, a1 = 1.5 và a2 = 0.5 vậy đa thức nộisuy là

p2(x) = 1+ 1.5x + 0.5x2

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 14 / 58

Page 15: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Việc dùng giải trực tiếp hệ phương trình điều kiện nội suy dùng phép khửGauss chẳng hạn cần đòi hỏi nhiều tính toán O(N3). Thêm nữa, vì lũythừa của hệ số x có thể rất cao nên độ sai số lại càng lớn do hiệu ứng việclàm tròn số, thậm chí còn tràn số (nhớ lại là số dấu phẩy động IEEE754/85 độ chính xác kép chỉ là ≈ ±1038).⇒ ta có thể dùng công thức nội suy Lagrange để tính hằng số của đathức nội suy mà không cần giải hệ phương trình tuyến tính trên.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 15 / 58

Page 16: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Xét bộ dữ liệu {(xi , fi ), i = 0,N} dạng Lagrange của đa thức nội suy đốivới bộ dữ liệu là như sau :

pN(x) = f0V0(x) + f1V1(x) + · · ·+ fNVN(x)

trong đó Vi (x) : i = 0, 1, · · · ,N là các đa thức bậc N thỏa mãn điều kiện :

Vi (xj) =

{1, i = j

0, i 6= j

Họ các đa thức Vi (x) : i = 0, 1, · · · ,N được gọi là họ các đa thức cơ sở.Dễ dàng kiểm tra được rằng :

pN(xi ) = fi i = 0, 1, · · · ,N

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 16 / 58

Page 17: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Một trong lớp đa thức cơ sở có thể xây dựng theo công thức như sau

Vi (x) =(x − x0)(x − x1) · · · (x − xi−1)(x − xi+1) · · · (x − xn)

(xi − x0)(xi − x1) · · · (xi − xi−1)(xi − xi+1) · · · (xi − xn)

rõ ràng thỏa mãn

Vi (xj) =

{1, i = j

0, i 6= j

Vậy ta có thể tóm tắt lại công thức trên như sau

Vi (x) =

∏i 6=j(x − xj)∏i 6=j(xi − xj)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 17 / 58

Page 18: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Công thức nội suy Lagrange (tiếp)

Vậy công thức nội suy Lagrange

pN(x) =(x − x1)(x − x2) · · · (x − xN)

(x0 − x1) · · · (x0 − xN)f0

· · ·

+(x − x0)(x − x1) · · · (x − xi−1)(x − xi+1) · · · (x − xn)

(xi − x0)(xi − x1) · · · (xi − xi−1)(xi − xi+1) · · · (xi − xn)fi (1)

· · ·

+(x − x0)(x − x1) · · · (x − xN−1)

(xN − x0) · · · (xN − xN−1)fN

Công thức (1) tuy dài nhưng dễ nhớ và tính toán hơn.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 18 / 58

Page 19: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Cài đặt Vi(x) bẳng Matlab

v = polyinterp(x,y,u) tính v(j) = P(u(j)) trong đó P là đa thức bậc d =length(x) - 1 thỏa mãn P(x(i)) = y(i). Sử dụng công thức nội suyLagrange. Hai vectơ x,y chứa hoàng độ và tung độ của bộ dữ liệu.

function v = polyinterp(x,y,u)n = length(x);v = zeros(size(u));for k = 1:n

w = ones(size(u));for j = [1:k-1 k+1:n]

w = (u-x(j))./(x(k)-x(j)).*w;endv = v + w*y(k);

end

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 19 / 58

Page 20: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Cài đặt Vi(x) bẳng Matlab (tiếp)

function v = polyinterp(x,y,u)n = length(x);v = zeros(size(u));for k = 1:n

w = ones(size(u));for j = [1:k-1 k+1:n]

w = (u-x(j))./(x(k)-x(j)).*w;endv = v + w*y(k);

end

Hai vectơ x,y chứa hoàng độ và tung độ của bộ dữ liệu.

u là vec tơ chứa các hoàng độ của các điểm cần tính theo công thứcnội suy Lagrange.

v là vectơ chứa giá trị hàm nội suy tại các điểm cho trong u

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 20 / 58

Page 21: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Ví dụ 2 :

x = [0 1 2 3];y = [-5 -6 -1 16];u= [0.25:0.01:3.25];v = polyinterp(x,y,u);plot(x,y,’o’,u,v,’-’)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 21 / 58

Page 22: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 22 / 58

Page 23: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Sai số nội suy

Định nghĩa : Sai số của đa thức nội suy g(x) được xác định bởi công thức :

e(x) = f (x)− g(x)

Độ lớn của e(x) phụ thuộc vào

Hoàng độ của các điểm dữ liệu.

Kích thước của miền nội suy D = xn − x0.

Bậc của đa thức nội suy

Đối với đa thức nội suy Lagrange, sai số được xác định bới công thức :

e(x) = f (x)− g(x) = L(x)f (N+1)(ξ)

trong đó f (N+1) là đạo hàm bậc N + 1 của hàm f (x) còn

L(x) = (x−x0)(x−x1)···(x−xn)(N+1)!

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 23 / 58

Page 24: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy

Sai số nội suy (tiếp)

tiếp tục ... công thức :

e(x) = f (x)− g(x) = L(x)f (N+1)(ξ)

ξ phụ thuộc x nhưng thỏa mãn điều kiện x0 < ξ < xN . Cũng theo côngthức trên nếu f(x) là đa thức bậc không quá N thì đạo hàm f (N+1) sẽ triệt

tiêu, nghĩa là sai số bằng không. Do L(x) = (x−x0)(x−x1)···(x−xn)(N+1)! nên ta có

các kết luận sau

Với một lưới cách đều, biên độ dao động của L(x) nhỏ nhất tại tâmvà tăng dần về biên của miền nội suy.

Kích thước nội suy tăng lên, độ lớn của dao động tăng nhanh chóng.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 24 / 58

Page 25: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy Lagrange

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 25 / 58

Page 26: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Đặt vấn đề

Trong trường hợp này ta xét phép nội suy bởi một tập các các đa thứcbậc thấp thay vì một đa thức bậc cao duy nhất

Nội suy bởi spline tuyến tính

Nội suy bởi spline bậc ba

Nhớ lại công thức đánh giá sai số nội suy Lagrange

f (x)− pN(x) = [wN+1(x)/(N + 1)!]f (N+1)(ξx)

trong đó wN+1(x) = (x − x0)(x − x1) · · · (x − xN) và ξx là một giá trịtrong khoảng (x0, xN).

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 26 / 58

Page 27: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Đặt vấn đề (tiếp)

tiếp tục ... Giả sử mọi điểm dữ liệu xi ∈ [a, b] thì ta có

maxx∈[a,b]

|f (x)− pN(x)| ≤ |b − a|N+1 ×maxx∈[a,b] |f (N+1)(x)|

N!

Đánh giá này cho biết nếu muốn giảm sai số mà vẫn giữ nguyên số lượngđiểm dữ liệu N thì cần tìm cách giảm kích thước của |b − a|. Hướng tiếpcận của ta là xấp xỉ đa thức từng khúc (piecewise polynominalapproximation) : Như vậy đoạn [a, b] sẽ được chia thành nhiều đoạn nhỏkhông đè nhau và các đa thức khác nhau sẽ được xấp xỉ trên từngđoạn con.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 27 / 58

Page 28: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline tuyến tính từng khúc

Đối với bộ dữ liệu{(xi , fi ) : i = 0, · · · ,N}

trong đó

a = x0 < x1 < · · · < xN = b, h ≡ maxi|xi − xi−1|,

spline tuyến tính S1,N(x) là hàm liên tục nội suy dữ liệu đã cho và được

xây dựng từ các hàm tuyến tính được xác định bởi các đa thức nội suy haiđiểm dữ liệu :

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 28 / 58

Page 29: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline tuyến tính từng khúc (tiếp)

tiếp tục...

S1,N(x) =

f1−f0x1−x0

(x − x1) + f1, nếux ∈ [x0, x1]...fi−fi−1

xi−xi−1(x − xi ) + fi , nếux ∈ [xi−1, xi ]

...fN−fN−1

xN−xN−1(x − xN) + fN , nếux ∈ [xN−1, xN ]

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 29 / 58

Page 30: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline tuyến tính từng khúc (tiếp)

Sử dụng công thức sai số cho đa thức nội suy với x ∈ [a, b] cho từng đoạn[xi−1, xi ] ta được

maxz∈[xi−1,xi ]

|f (z)− S1,N(z)| ≤|xi − xi−1|2

8× max

x∈[xi−1,xi ]|f (2)(x)|

≤ h2

8× max

x∈[xi−1,xi ]|f (2)(x)|

trong đó h ≡ maxi |xi − xi−1|.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 30 / 58

Page 31: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Ví dụ 3 :

Cho bộ dữ liệu {(-1,0),(0,1),(1,3)}, ta xây dựng spline tuyết tính như sau

S1,2(x) =

{f1−f0x1−x0

(x − x1) + f1, nếu x ∈ [x0, x1]f2−f1x2−x1

(x − x2) + f2, nếu x ∈ [x1, x2]

suy ra với bộ dữ liệu tương ứng

S1,2(x) =

{1−0

0−(−1)(x − 0) + 1, nếu x ∈ [−1, 0]3−11−0(x − 1) + 3, nếu x ∈ [0, 1]

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 31 / 58

Page 32: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Ví dụ 4 :

» clear;» x=1:6;» y=[16 18 21 17 15 12];» plot(x,y,’o’)» hold on; grid on;» axis([-1 7 10 22])» xx = [1:0.01:6];» yy = piecelin(x,y,xx);» plot(xx,yy,’r’)» hold off» xlabel(’x-axis’);ylabel(’y-axis’);» title(’Linear Spline Interpolation’);

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 32 / 58

Page 33: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 33 / 58

Page 34: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline bậc ba

Sự khác biệt là thay vì nội suy từng đoạn bậc nhất thì ta dùng một đathức bậc ba để ’uốn’ đường cong trơn hơn. Ta cũng có bộ dữ liệu

{(xi , fi ) : i = 0, · · · ,N}

trong đó

a = x0 < x1 < · · · < xN = b, h ≡ maxi|xi − xi−1|,

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 34 / 58

Page 35: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy Lagrange

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 35 / 58

Page 36: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline bậc ba (tiếp)

Định nghĩa : Spline bậc ba S3,N(x) nội suy bộ dữ liệu đã cho

S3,N(x) là hàm bậc ba giữa hai nút [xi−1, xi ]

S3,N(x) =

p1(x) = a1,0 + a1,1x + a1,2x2 + a1,3x

3, nếux ∈ [x0, x1]...

pi (x) = ai ,0 + ai ,1x + ai ,2x2 + ai ,3x

3, nếux ∈ [xi−1, xi ]...

pN(x) = aN,0 + aN,1x + aN,2x2 + aN,3x

3, nếux ∈ [xN−1, xN ]

S3,N(x) là hàm liên tục có đạo hàm cấp một và hai liên tục trên đoạn

[x0, xN ] (kể cả tại các nút)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 36 / 58

Page 37: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline bậc ba (tiếp)

Với xi−1 < x < xi , S3,N(x) có giá trị Với xi < x < xi+1, S3,N(x) có giá trị

pi (x) = ai,0 + ai,1x + ai,2x2 + ai,3x

3 pi+1(x) = ai+1,0 + · · ·+ ai+1,3x3

Giá trị của S3,N(x) khi x → x−i Giá trị của S3,N(x) khi x → x+i

pi (xi ) pi+1(xi )

p′i (xi ) p′i+1(xi )

pi”(xi ) pi+1”(xi )

Nhận xét :

Điều kiện về tính trơn tại điểm xi thì

p′i (xi ) = p′i+1(xi ); pi”(xi ) = pi+1”(xi ); i = 1, 2, · · · ,N − 1

Điều kiện nội suy dữ liệu đảm bảo

pi (xi ) = pi+1(xi ) = fi ; i = 0, 1, 2, · · · ,N − 1

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 37 / 58

Page 38: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Spline bậc ba (tiếp)

Điều kiện biên tự nhiên (Natural Boundary Condition)

p1”(x) = 0; pN”(x) = 0;

Điều kiện đạo hàm cấp hai (Second Derivative Condition)

p1”(x0) = f ”(x0); pN”(xN) = f ”(xN);

Điều kiện sát biên (Not-a-knot Condition)

p1”(x1) = p2”(x1); pN−1”(xN−1) = pN”(xN−1);

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 38 / 58

Page 39: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Ví dụ 4 :

» x = 0:10; y = sin(10*x);» p = spline(x,y);» xx = linspace(0,10,200);» yy = ppval(p,xx);» plot(x,y,’o’,xx,yy)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 39 / 58

Page 40: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline cấp 3

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 40 / 58

Page 41: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Ví dụ 5 :

» x = 0:10; y = sin(10*x);» xx = linspace(0,10,200);» coef = polyfit(x,y,10);Warning: Polynomial is badly conditioned. Remove repeated datapoints or try centering and scaling as described in HELP POLYFIT.(Type "warning off MATLAB:polyfit:RepeatedPointsOrRescale" tosuppress this warning.)» yy = polyval(coef,xx);» plot(x,y,’o’,xx,yy,’r’)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 41 / 58

Page 42: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline cấp 3

Như vậy khi ta nôi suy bằng spline bậc 3 thì tốt hơn nội suy đa thức vớihàm sin(10x)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 42 / 58

Page 43: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline

Ví dụ 6 :

Công suất tiêu thụ điện của một thiết bị trong 12 giờ như sau

1 2 3 4 5 6

54.4 54.6 67.1 78.3 85.3 88.7

7 8 9 10 11 12

96.9 97.6 84.1 80.1 68.8 61.1

Dùng spline bậc ba để nội suy tập điểm dữ liệu trên, ta có được

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 43 / 58

Page 44: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline cấp 3

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 44 / 58

Page 45: Tính toán khoa học: Chương 3: Đường cong khớp

Nội suy spline cấp 3

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 45 / 58

Page 46: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Đặt vấn đề

Cho bộ dữ liệu {(xi , fi ), i = 1, · · · ,N}, cần tìm cách xấp xỉ hàm f (x) bởimột hàm p(x). Ta cần quan tâm đo sai số tổng công trên toàn đoạn

Sai số cực đại E∞(f ) = max1≤k≤n |f (xk)− yk |Sai số trung bình E1(f ) =

1n

∑nk=1 |f (xk)− yk |

Căn bậc hai của tổng các bình phương sai số

E2(f ) =

(1

n

n∑k=1

(f (xk)− yk)2

)1/2

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 46 / 58

Page 47: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Hồi qui tuyến tính

Hồi qui tuyến tính là việc tìm một đường thẳng khớp với các điểm dữ liệutheo nghĩa bình phương tối thiểu.

Cho tập N cặp điểm dữ liệu {(xi , fi ) : i = 1, · · · ,N}

Tìm hệ số m và hằng số tự do b của đường thẳng

y(x) = mx + b

sao cho đường thẳng này khớp với dữ liệu theo tiêu chí bình phươngtối thiểu.

L(m, b) =N∑

i=1

(fi − (mxi + b))2

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 47 / 58

Page 48: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Hồi qui tuyến tính (tiếp)

Nghĩa là ta cần tìm m và b để đạt cực tiểu hàm

L(m, b) =N∑

i=1

(fi − (mxi + b))2

để tìm cực tiểu này, ta cần giải hệ phương trình tìm điểm dừng

∂L

∂m=

N∑i=1

2(fi − (mxi + b))(−xi ) = 0

∂L

∂b=

N∑i=1

2(fi − (mxi + b))(−1) = 0

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 48 / 58

Page 49: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Hồi qui tuyến tính (tiếp)

[N∑

i=1

x2i

]m +

[N∑

i=1

xi

]b =

N∑i=1

xi fi[N∑

i=1

xi

]m +

[N∑

i=1

1

]b =

N∑i=1

fi

hay dưới dạng ma trận,(∑Ni=1 x2i

∑Ni=1 xi∑N

i=1 xi N

)(m

b

)=

(∑Ni=1 xi fi∑Ni=1 fi

)

Giải hệ phương trình ta có được hệ số m và b.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 49 / 58

Page 50: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Ví dụ 6 :

Xây dựng đường cong khớp cho bộ dữ liệu sau

i 1 2 3 4

xi 1 3 4 5

fi 2 4 3 1

Vậy hệ phương trình cần giải là

13m + 4b = 10

51m + 13b = 31

từ đó tìm được b = 107/35 và m = −6/35, đường thẳng cần tìm lày = (−6/35)x + 107/35

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 50 / 58

Page 51: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Đường cong khớp bậc cao

Xây dựng đường cong khớp

pM(x) = a0 + a1x + a2x2 + · · ·+ aMxM

khớp với bộ dữ liệu {(xi , fi )i = 1, · · · ,N} theo tiêu chí bình phương tốithiểu

σM ≡ (pM(x1)− f1)2 + (pM(x2)− f2)

2 + · · ·+ (pM(xN)− fN)2

Giải hệ phương trình tìm điểm dừng

∂a0σM = 0;

∂a1σM = 0; · · · ∂

∂aMσM = 0;

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 51 / 58

Page 52: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Đường cong khớp bậc cao (tiếp)

Viết dưới dạng ma trận hệ phương trình chuẩn∑N

i=1 1∑N

i=1 xi · · ·∑N

i=1 xMi∑N

i=1 xi∑N

i=1 x2i · · ·∑N

i=1 xM+1i

......

. . ....∑N

i=1 xMi

∑Ni=1 xM+1

i · · ·∑N

i=1 x2Mi

a0

a1...

aM

=

∑N

i=1 fi∑Ni=1 fixi...∑N

i=1 fixMi

Điểm đặc biệt của ma trận trên là bán xác định đương nên ta có thể dùngphép khử Gauss mà không cần thay đổi dòng, để giải hệ phương trìnhchuẩn.

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 52 / 58

Page 53: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Ví dụ 7 :

Xác định các tham số a, b, c ccủa đường cong

y = ax2 + bx + c

khớp với bộ dữ liệu sau

x 1 2 3 4 5 6 7 8

y 1 8 27 64 125 216 350 560

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 53 / 58

Page 54: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Ví dụ 7 : (tiếp)

x = [1 2 3 4 5 6 7 8];y = [1 8 27 64 125 216 350 560];s0 = length(x); s1 = sum(x); s2 = sum(x.2);s3 = sum(x.3); s4 = sum(x.4);A = [s4 s3 s2; s3 s2 s1; s2 s1 s0];b = [sum(x.2.*y); sum(x.*y);sum(y)];c0 = A b;c = polyfit(x,y,2);c0cxx = 1:0.1:8;yy = polyval(c0,xx);plot(x,y,’o’,xx,yy)

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 54 / 58

Page 55: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 55 / 58

Page 56: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Đường cong khớp tổng quát

Giả sử ta muốn khớp N điểm đa cho {(xi , fi ) : i = 1, · · · ,N} bởi họ gồmm hàm độc lập tuyến tính ϕj(x), j = 1, 2, · · · ,m tức là hàm f (x) cần tìmcó dạng

f (x) =m∑

j=1

cjϕj(x)

Chẳng hạn các họ hàm sau

ϕj(x) = x j , j = 1, 2, · · · ,mϕj(x) = sin(jx), j = 1, 2, · · · ,mϕj(x) = cos(jx), j = 1, 2, · · · ,m

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 56 / 58

Page 57: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Đường cong khớp tổng quát (tiếp)

Ta cần xác định các số c1, c2, · · · , cm để cực tiểu hóa sai số căn bậc haicủa tổng các bình phương sai số :

E (c1, c2, · · · , cm) =n∑

k=1

(f (xk)− fk)2 =

n∑k=1

m∑j=1

cjϕj(x)

− fk

2

Để tìm các hệ số c1, c2, · · · , cm, ta cần giải hệ phương trình

∂E

∂cj= 0, j = 1, 2, · · · ,m

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 57 / 58

Page 58: Tính toán khoa học: Chương 3: Đường cong khớp

Hồi qui

Trịnh Anh Phúc ( Bộ môn Khoa Học Máy Tính, Viện CNTT & TT, Trường Đại Học Bách Khoa Hà Nội. )Tính toán khoa học Ngày 13 tháng 12 năm 2012 58 / 58