MathLabs

Toán ứng dụng và Tính toán

Nội suy và xấp xỉ

Xây dựng hàm số đi qua các điểm dữ liệu cho trước, hoặc xấp xỉ sát một hàm phức tạp.

Trực giácTrực giác: nối các điểm dữ liệu bằng một đường cong

Một trạm thời tiết ghi lại nhiệt độ tại vài thời điểm trong ngày, một cảm biến báo cáo vài phép đo rời rạc, hay một kỹ sư có một bảng chỉ vài giá trị đã lập bảng — trong mọi trường hợp bạn có một danh sách hữu hạn các điểm (x0,y0),(x1,y1),…,(xn,yn)(x_0,y_0), (x_1,y_1), \dots, (x_n,y_n) và bạn muốn đoán giá trị ở giữa, hoặc vẽ một đường cong trơn đi qua tất cả chúng. Nội suy là nghệ thuật xây dựng một hàm số đi qua đúng từng điểm này, còn xấp xỉ theo nghĩa rộng hơn tìm một hàm giữ gần một hàm phức tạp mà không nhất thiết khớp từng điểm.

Một đường cong bậc ba đi đúng qua bốn điểm dữ liệu được đánh dấu, với các thanh trượt cho từng hệ số trong bốn hệ số.
Đường bậc ba P(x)=x3−x2−2x+2P(x)=x^3-x^2-2x+2 này là đa thức duy nhất có bậc không quá 33 đi qua bốn điểm (−1,2)(-1,2), (0,2)(0,2), (1,0)(1,0) và (2,2)(2,2): kéo a,b,c,da,b,c,d và quan sát chỉ bốn hệ số là vừa đủ để xác định một đường cong đi qua bốn điểm dữ liệu — bản chất của nội suy đa thức.

Đại họcĐịnh nghĩa: bài toán nội suy

Định nghĩa: Nội suy đa thức

Cho n+1n+1 nút phân biệt x0,x1,…,xnx_0, x_1, \dots, x_n và các giá trị y0,y1,…,yny_0, y_1, \dots, y_n (thường yi=f(xi)y_i=f(x_i) cho một hàm ff nào đó), bài toán nội suy yêu cầu một đa thức PP có bậc không quá nn với P(xi)=yiP(x_i)=y_i với mọi ii. Các đa thức cơ sở Lagrange LiL_i cho một cách xây dựng tường minh.

Li(x)=∏j≠ix−xjxi−xjL_i(x) = \prod_{j \ne i} \dfrac{x - x_j}{x_i - x_j}

Mỗi đa thức cơ sở LiL_i được xây dựng để triệt tiêu tại mọi nút khác và bằng 11 tại nút của chính nó: khi thay x=xjx=x_j với j≠ij\ne i thì thừa số ở tử số (xj−xj)=0(x_j-x_j)=0, cho Li(xj)=0L_i(x_j)=0, còn khi thay x=xix=x_i thì tử số và mẫu số giống hệt nhau, cho Li(xi)=1L_i(x_i)=1. Cộng các khối xây dựng này với trọng số là các giá trị mục tiêu cho trực tiếp đa thức nội suy.

P(x)=∑i=0nyi Li(x)P(x) = \sum_{i=0}^{n} y_i\, L_i(x)
So sánh các phương pháp nội suy và xấp xỉ
Phương phápÝ tưởngĐộ trơn qua các nútNhược điểm
LagrangeMột đa thức duy nhất P(x)=∑iyiLi(x)P(x)=\sum_i y_i L_i(x) đi qua mọi nútTrơn vô hạn (vì là một đa thức)Bậc cao với các nút cách đều dao động dữ dội (hiện tượng Runge)
Sai phân chia NewtonCùng đa thức như Lagrange, xây dựng dần từng nút mộtTrơn vô hạn (cùng đa thức)Thêm một nút thì rẻ, nhưng vẫn gặp dao động bậc cao tương tự
Spline bậc ba tự nhiênTừng đoạn bậc ba, một đa thức bậc ba trên mỗi khoảng con, nối trơnC2C^2 (liên tục tới đạo hàm cấp hai)Không có công thức toàn cục duy nhất; phải giải một hệ tuyến tính cho các đoạn

Đại họcCác định lý then chốt

Cho n+1n+1 nút phân biệt x0,x1,…,xnx_0, x_1, \dots, x_n và các giá trị y0,y1,…,yny_0, y_1, \dots, y_n, tồn tại đúng một đa thức PP có bậc không quá nn sao cho P(xi)=yiP(x_i)=y_i với mọi i=0,…,ni=0,\dots,n.

Vì sao đúng?

Một đa thức bậc n có đúng n+1 hệ số tự do, và việc cố định n+1 giá trị điểm dùng hết đúng bấy nhiêu bậc tự do — không hơn không kém — nên chỉ đủ chỗ cho một nghiệm và không đủ chỗ cho hai nghiệm khác nhau.

Chứng minh

Bước 1 (tồn tại). Cách xây dựng Lagrange P(x)=∑i=0nyiLi(x)P(x) = \sum_{i=0}^{n} y_i L_i(x) với Li(x)=∏j≠ix−xjxi−xjL_i(x) = \prod_{j\ne i} \dfrac{x-x_j}{x_i-x_j} đã thỏa P(xk)=ykP(x_k)=y_k với mọi kk, vì Li(xk)L_i(x_k) bằng 11 khi i=ki=k và 00 khi khác, nên tổng thu gọn thành một số hạng duy nhất yk⋅1=yky_k \cdot 1 = y_k. Vậy tồn tại ít nhất một PP hợp lệ, và mỗi LiL_i có bậc đúng bằng nn (tích của nn thừa số tuyến tính), nên PP có bậc không quá nn.

Bước 2 (giả sử có hai nghiệm). Giả sử QQ là bất kỳ đa thức nào khác có bậc không quá nn với Q(xi)=yiQ(x_i)=y_i với mọi ii. Xét hiệu D(x)=P(x)−Q(x)D(x) = P(x) - Q(x). Vì cả PP và QQ đều có bậc không quá nn, nên DD cũng vậy.

Bước 3 (đếm nghiệm của hiệu). Với mỗi nút xix_i, D(xi)=P(xi)−Q(xi)=yi−yi=0D(x_i) = P(x_i)-Q(x_i) = y_i - y_i = 0. Vì có n+1n+1 nút phân biệt x0,x1,…,xnx_0, x_1, \dots, x_n, DD có ít nhất n+1n+1 nghiệm phân biệt.

Bước 4 (buộc D đồng nhất bằng 0). Một đa thức khác không có bậc không quá nn có thể có nhiều nhất nn nghiệm (mỗi nghiệm góp một thừa số tuyến tính, và một đa thức bậc nn không thể chứa nhiều hơn nn thừa số như vậy). Vì DD có n+1n+1 nghiệm, nhiều hơn bậc của nó cho phép trừ khi DD là đa thức không, ta kết luận D(x)≡0D(x)\equiv0, tức Q=PQ=P. Vậy đa thức nội suy tìm được ở Bước 1 là duy nhất.

Cho ff khả vi liên tục (n+1)(n+1) lần trên một khoảng chứa các nút phân biệt x0,x1,…,xnx_0, x_1, \dots, x_n và một điểm xx, và cho PP là đa thức bậc nn nội suy ff tại các nút này. Khi đó tồn tại ξ\xi trong khoảng đó sao cho f(x)−P(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi)f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i).

Vì sao đúng?

Đa thức nội suy khớp chính xác với f tại các nút nhưng không biết gì về f ở giữa, nên sai số còn lại phải triệt tiêu tại mọi nút — đúng là điều số hạng tích buộc phải xảy ra — được nhân với một đạo hàm còn lại đo mức độ cong của f vượt quá những gì một đa thức bậc n có thể nắm bắt.

Chứng minh

Bước 1 (một hàm phụ khéo léo). Cố định một điểm xx không phải là một trong các nút (nếu là nút, sai số tầm thường bằng 00). Đặt w(t)=∏i=0n(t−xi)w(t) = \prod_{i=0}^{n} (t - x_i) và định nghĩa hằng số c=f(x)−P(x)w(x)c = \dfrac{f(x)-P(x)}{w(x)} (xác định tốt vì w(x)≠0w(x)\ne0). Định nghĩa hàm phụ g(t)=f(t)−P(t)−c w(t)g(t) = f(t) - P(t) - c\, w(t).

Bước 2 (đếm nghiệm của g). Tại mỗi nút xix_i, cả f(xi)−P(xi)=0f(x_i)-P(x_i)=0 (theo tính chất nội suy) và w(xi)=0w(x_i)=0 (theo định nghĩa của ww), nên g(xi)=0g(x_i)=0 với tất cả n+1n+1 nút. Ngoài ra, theo cách chọn cc, g(x)=f(x)−P(x)−c w(x)=f(x)−P(x)−[f(x)−P(x)]=0g(x) = f(x)-P(x) - c\,w(x) = f(x)-P(x) - [f(x)-P(x)] = 0. Vậy gg có n+2n+2 nghiệm phân biệt: n+1n+1 nút cộng thêm chính xx.

Bước 3 (áp dụng định lý Rolle nhiều lần). Giữa mỗi cặp nghiệm liên tiếp của gg (có n+1n+1 khoảng như vậy giữa n+2n+2 nghiệm), định lý Rolle cho một điểm nơi g′g' triệt tiêu, nên g′g' có ít nhất n+1n+1 nghiệm. Lặp lại lập luận này trên g′,g′′,…g', g'', \dots mất đi một nghiệm mỗi lần lấy đạo hàm, nên sau n+1n+1 lần áp dụng, g(n+1)g^{(n+1)} có ít nhất một nghiệm ξ\xi trong khoảng.

Bước 4 (lấy đạo hàm và giải sai số). Vì PP có bậc không quá nn, đạo hàm cấp (n+1)(n+1) của nó là 00; và ww là đa thức monic bậc n+1n+1, nên w(n+1)(t)=(n+1)!w^{(n+1)}(t) = (n+1)! với mọi tt. Lấy đạo hàm gg cho g(n+1)(t)=f(n+1)(t)−0−c (n+1)!g^{(n+1)}(t) = f^{(n+1)}(t) - 0 - c\,(n+1)!, và đặt g(n+1)(ξ)=0g^{(n+1)}(\xi)=0 cho c=f(n+1)(ξ)(n+1)!c = \dfrac{f^{(n+1)}(\xi)}{(n+1)!}. Nhớ lại c=f(x)−P(x)w(x)c=\dfrac{f(x)-P(x)}{w(x)} và giải sai số cho đúng f(x)−P(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi)f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i).

Cho n+1n+1 điểm (x0,y0),…,(xn,yn)(x_0,y_0),\dots,(x_n,y_n) với x0<x1<⋯<xnx_0<x_1<\dots<x_n, tồn tại duy nhất một hàm SS là đa thức bậc ba trên mỗi khoảng con [xi,xi+1][x_i,x_{i+1}], khả vi liên tục hai lần trên toàn bộ [x0,xn][x_0,x_n], thỏa S(xi)=yiS(x_i)=y_i với mọi ii, và thỏa các điều kiện biên tự nhiên S′′(x0)=S′′(xn)=0S''(x_0)=S''(x_n)=0.

Vì sao đúng?

Một đa thức bậc cao duy nhất đi qua nhiều điểm có xu hướng lượn sóng, nhưng khâu nhiều mảnh bậc ba nhẹ nhàng lại với nhau và chỉ yêu cầu chúng khớp trơn tru tại các mối nối cho vừa đủ tự do để khớp dữ liệu mà không có dao động dữ dội nào, và các điều kiện biên tự nhiên cung cấp đúng hai phương trình bổ sung cần thiết để làm cho toàn bộ hệ giải được.

Chứng minh

Bước 1 (ẩn số: đạo hàm cấp hai tại các nút). Đặt Mi=S′′(xi)M_i = S''(x_i) với i=0,…,ni=0,\dots,n. Các điều kiện biên tự nhiên cố định ngay M0=0M_0=0 và Mn=0M_n=0, còn lại n−1n-1 ẩn số M1,…,Mn−1M_1,\dots,M_{n-1} cần xác định.

Bước 2 (dựng lại mỗi mảnh bậc ba từ các giá trị M). Trên [xi,xi+1][x_i,x_{i+1}], vì SS là bậc ba, S′′S'' là tuyến tính, nên nó phải là đường thẳng qua (xi,Mi)(x_i,M_i) và (xi+1,Mi+1)(x_{i+1},M_{i+1}). Lấy tích phân hàm tuyến tính này hai lần và cố định hai hằng số tích phân bằng cách dùng S(xi)=yiS(x_i)=y_i và S(xi+1)=yi+1S(x_{i+1})=y_{i+1} xác định hoàn toàn SS trên mảnh đó, theo Mi,Mi+1,yi,yi+1M_i, M_{i+1}, y_i, y_{i+1} và khoảng cách hi=xi+1−xih_i=x_{i+1}-x_i. Vậy khi mọi MiM_i đã biết, SS hoàn toàn được xác định.

Bước 3 (khớp hệ số góc cho một hệ tuyến tính). Theo cách xây dựng, SS và S′′S'' đã liên tục qua mỗi nút. Yêu cầu đạo hàm cấp một S′S' cũng khớp từ hai phía tại mỗi nút trong xix_i (i=1,…,n−1i=1,\dots,n-1) tạo ra một phương trình tuyến tính cho mỗi nút trong liên hệ ba ẩn liên tiếp: hi−1Mi−1+2(hi−1+hi)Mi+hiMi+1=6(yi+1−yihi−yi−yi−1hi−1)h_{i-1} M_{i-1} + 2(h_{i-1}+h_i) M_i + h_i M_{i+1} = 6\left(\dfrac{y_{i+1}-y_i}{h_i} - \dfrac{y_i-y_{i-1}}{h_{i-1}}\right). Điều này cho n−1n-1 phương trình tuyến tính trong n−1n-1 ẩn M1,…,Mn−1M_1,\dots,M_{n-1} (dùng M0=Mn=0M_0=M_n=0).

Bước 4 (hệ có nghiệm duy nhất). Ma trận hệ số của hệ này là ba đường chéo với các mục trên đường chéo 2(hi−1+hi)2(h_{i-1}+h_i) và các mục ngoài đường chéo hi−1h_{i-1} và hih_i; vì 2(hi−1+hi)>hi−1+hi2(h_{i-1}+h_i) > h_{i-1}+h_i (do mọi khoảng cách hi>0h_i>0), ma trận chiếm ưu thế đường chéo chặt, và một ma trận chiếm ưu thế đường chéo chặt luôn khả nghịch. Vậy hệ tuyến tính cho M1,…,Mn−1M_1,\dots,M_{n-1} có đúng một nghiệm, và theo Bước 2 điều này xác định đúng một spline SS, chứng minh cả sự tồn tại lẫn duy nhất.

Đại họcỨng dụng thực tiễn và Ví dụ minh họa

Nội suy xuất hiện ở mọi nơi dữ liệu được lấy mẫu nhưng cần một đường cong liên tục: phông chữ máy tính và đường chuyển động hoạt hình được vẽ bằng spline, máy thu GPS nội suy vài chục phép đo vệ tinh thành một quỹ đạo trơn, việc lấy mẫu lại ảnh và âm thanh nội suy giữa các điểm ảnh hoặc mẫu khi thay đổi kích thước hay tốc độ phát, và các kỹ sư nội suy các bảng thưa thớt tính chất vật liệu hay dữ liệu nhiệt động chỉ đo tại vài nhiệt độ hoặc áp suất. Các nhà phân tích tài chính nội suy một đường cong lợi suất từ giá trái phiếu chỉ quan sát được tại vài kỳ hạn để định giá các công cụ đáo hạn ở giữa.

Ví dụ: Dự đoán một xu hướng từ ba phép đo bằng nội suy Lagrange

Một phòng thí nghiệm ghi lại ba phép đo (0,1)(0,1), (1,3)(1,3), (2,7)(2,7). Dùng đa thức nội suy Lagrange qua ba điểm này, ước lượng giá trị tại x=3x=3.

Lời giải

Bước 1: viết ba đa thức cơ sở tính tại x=3x=3. Với các nút x0=0,x1=1,x2=2x_0=0,x_1=1,x_2=2: L0(3)=(3−1)(3−2)(0−1)(0−2)=22=1L_0(3)=\dfrac{(3-1)(3-2)}{(0-1)(0-2)}=\dfrac{2}{2}=1, L1(3)=(3−0)(3−2)(1−0)(1−2)=3−1=−3L_1(3)=\dfrac{(3-0)(3-2)}{(1-0)(1-2)}=\dfrac{3}{-1}=-3, L2(3)=(3−0)(3−1)(2−0)(2−1)=62=3L_2(3)=\dfrac{(3-0)(3-1)}{(2-0)(2-1)}=\dfrac{6}{2}=3.

Bước 2: nhân trọng số mỗi giá trị cơ sở với giá trị dữ liệu tương ứng. Các giá trị là y0=1,y1=3,y2=7y_0=1, y_1=3, y_2=7, nên ước lượng là P(3)=y0L0(3)+y1L1(3)+y2L2(3)=1(1)+3(−3)+7(3)P(3) = y_0 L_0(3) + y_1 L_1(3) + y_2 L_2(3) = 1(1) + 3(-3) + 7(3).

Bước 3: cộng lại. P(3)=1−9+21=13P(3) = 1 - 9 + 21 = 13.

Bước 4: kiểm tra với đa thức tường minh. Giải trực tiếp cho đa thức bậc hai qua ba điểm cho P(x)=x2+x+1P(x)=x^2+x+1, và quả thực P(3)=9+3+1=13P(3)=9+3+1=13, xác nhận phép tính dạng Lagrange mà không cần viết ra các hệ số của đa thức.

Ví dụ: Vì sao sai số nội suy bùng nổ gần biên: cái nhìn đầu tiên về hiện tượng Runge

Lấy 55 nút cách đều x0=−1,x1=−0.5,x2=0,x3=0.5,x4=1x_0=-1, x_1=-0.5, x_2=0, x_3=0.5, x_4=1 trên [−1,1][-1,1]. Tính đa thức nút w(x)=∏i=04(x−xi)w(x)=\prod_{i=0}^{4}(x-x_i) tại một điểm gần tâm, x=0.1x=0.1, và tại một điểm gần biên, x=0.9x=0.9, rồi so sánh độ lớn của chúng.

Lời giải

Bước 1: tính w(0.1)w(0.1). w(0.1)=(0.1+1)(0.1+0.5)(0.1−0)(0.1−0.5)(0.1−1)=(1.1)(0.6)(0.1)(−0.4)(−0.9)w(0.1)=(0.1+1)(0.1+0.5)(0.1-0)(0.1-0.5)(0.1-1) = (1.1)(0.6)(0.1)(-0.4)(-0.9), nhân ra được 0.023760.02376.

Bước 2: tính w(0.9)w(0.9). w(0.9)=(0.9+1)(0.9+0.5)(0.9−0)(0.9−0.5)(0.9−1)=(1.9)(1.4)(0.9)(0.4)(−0.1)w(0.9)=(0.9+1)(0.9+0.5)(0.9-0)(0.9-0.5)(0.9-1) = (1.9)(1.4)(0.9)(0.4)(-0.1), nhân ra được −0.09576-0.09576, nên ∣w(0.9)∣=0.09576|w(0.9)|=0.09576.

Bước 3: so sánh. ∣w(0.9)∣≈0.0958|w(0.9)| \approx 0.0958 lớn hơn khoảng 44 lần ∣w(0.1)∣≈0.0238|w(0.1)| \approx 0.0238, mặc dù 0.90.9 và 0.10.1 đều nằm thoải mái trong [−1,1][-1,1].

Bước 4: liên hệ với công thức sai số. Vì sai số nội suy là f(x)−P(x)=f(n+1)(ξ)(n+1)!w(x)f(x)-P(x)=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}w(x), ∣w(x)∣|w(x)| lớn hơn gần biên trực tiếp làm phồng chặn sai số ở đó; với một hàm như f(x)=11+25x2f(x)=\dfrac{1}{1+25x^2} có đạo hàm bậc cao tăng rất nhanh, sự khuếch đại ở biên này (càng tệ hơn khi thêm nhiều nút cách đều) chính là điều tạo ra các dao động dữ dội gọi là hiện tượng Runge — động lực để dùng spline bậc ba hoặc các nút cách không đều (Chebyshev) thay vì tăng bậc của một đa thức cách đều duy nhất.

Cho 55 điểm dữ liệu phân biệt, bậc của đa thức nội suy duy nhất được đảm bảo bởi định lý tồn tại-duy nhất là bao nhiêu?

Giá trị của đa thức cơ sở Lagrange Li(xi)L_i(x_i) tại chính nút xix_i của nó là bao nhiêu?

Một kỹ sư khớp một đa thức bậc 88 duy nhất qua 99 phép đo cách đều của độ dẫn nhiệt một vật liệu. Gần hai đầu khoảng đo, đường cong khớp dao động dữ dội dù độ dẫn nhiệt thực biến thiên trơn tru. Cách khắc phục chuẩn là gì?

Nếu ∣f(n+1)(x)∣≤M|f^{(n+1)}(x)| \le M trên một khoảng và đa thức nút thỏa ∣w(x)∣≤W|w(x)| \le W ở đó, công thức sai số Lagrange cho chặn nào cho ∣f(x)−P(x)∣|f(x)-P(x)|?