You are on page 1of 35

BG Bài 4.4 (19.4).

Nội suy Spline


Cho dữ liệu (các giá trị hàm số, các
điểm trong mặt phẳng - xy)
(x0, f0), (x1, f1), …, (xn, fn)
có thể được nội suy bằng một đa thức
của bậc n hoặc nhỏ hơn để đường cong
pn(x) đi qua (n+1) điểm (xj, fj), ở đây fj =
f(xj), Xem Sec. 19.3.
Bây giờ nếu n lớn, có thể có vấn đề:
có thể có sự dao động lớn với x ở giữa
các điểm mốc. Do đó chúng ta gặp phải
sự không ổn định của đa thức nội suy
(Sec 19.1). Hình 434 cho thấy một ví dụ
nổi tiếng của C. Runge, trong đó sai số
tối đa có thể tăng lên rất cao(với các nút
được giữ bằng nhau và số của chúng tăng
lên).
1
Hình 435 cho thấy sự gia tăng của dao
động theo n cho một số hàm là tuyến tính
từng khúc.
Những dao động không mong muốn
này được tránh bằng phương pháp spline
do I. J. Schoenberg năm 1946 (Quarterly
of Applied Mathematics 4, trang 45-99,
112-141). Phương pháp này được sử
dụng rộng rãi trong thực tế. Nó cũng đặt
nền móng cho nhiều CAD hiện đại
(máy tính hỗ trợ thiết kế). Tên của nó
được mượn từ spline của một nhà soạn
thảo, đó là một thanh đàn uốn cong để đi
2
qua các điểm nhất định và giữ ở vị trí
bằng trọng lượng.

Ý tưởng toán học của phương pháp là


như sau:
Thay vì dùng một đa thức bậc cao trên
toàn khoảng a≤x≤b, có giá trị trùng với
giá trị hàm số tại các điểm mút:
(1) a=x0 < x1 < …<xn = b
Chúng ta dùng n đa thức bậc thấp, ví dụ
như đa thức bậc 3:
q0(x), q1(x), …, qn-1(x)
Mỗi một đa thức xác định trên 1
khoảng con nằm giữa 2 điểm mốc, đa
thức q0(x) xác định trên khoảng từ x0

3
đến x1, đa thức q1(x) trên khoảng từ x1
đến x2, …và cứ tiếp tục như vậy, đa
thức qn-1(x) xác định trên khoảng từ xn-1
đến xn.
Từ đó chúng ta tạo ra hàm nội suy
được gọi là hàm spline g(x) bằng cách
ghép các đa thức này lại với nhau tạo
thành hàm số liên tục duy nhất đi qua
các điểm đã cho, nghĩa là
(2) g(x0) = f(x0)=f0, g(x1) = f(x1)=f1, …,
g(xn) = f(xn)=fn.
Chú ý rằng, g(x) = q0(x) trên x0≤x≤x1,
g(x) = q1(x) trên x1≤x≤x2, …, và tiếp tục
như vậy, theo cách ta xây dựng g(x).
Vì vậy, nội suy spline là nội suy
từng khúc.

4
Đa thức bậc nhất là nội suy spline đơn
giản nhất. Tuy nhiên, đa thức nội suy bậc
nhất không trơn tại các điểm mốc, không
phù hợp với toàn cục, ví như khi ta thiết
kế thân tàu hỏa hoặc tàu thủy, …
Chúng ta xét đa thức nội suy bậc ba,
một trong những dạng nội suy quan trọng
nhất trong ứng dụng.
Theo định nghĩa, spline bậc 3 g(x) nội
suy trên tập dữ liệu (x0, f0), (x1, f1), …,
(xn, fn) là hàm liên tục trên khoảng
a=x0<x1<…<xn=b, có đạo hàm bậc
nhất và bậc hai liên tục và thỏa mãn
điều kiện (2); hơn nữa, giữa các điểm
mốc g(x) được cho bởi qj(x) đa thức bậc
ba hoặc nhỏ hơn.

5
Chúng ta tuyên bố rằng có spline bậc
3 như vậy. Và nếu cộng với điều kiện (2),
chúng ta còn yêu cầu:
(3) g’(x0) = k0, g’(xn)=kn.
(Cho hệ số góc của đường cong của g(x)
tại 2 đầu mút của khoảng a≤x≤b), khi đó
chúng ta có nội suy bậc 3 duy nhất.
Đây là nội dung định lý tồn tại duy nhất
nghiệm, sự chứng minh của nó sẽ chỉ ra
cách xác định spline bậc 3. (Điều kiện (3)
ta sẽ thảo luận sau khi chứng minh).
Định lý 1. Sự tồn tại và duy nhất đa
thức nội suy bậc 3
Giả sử (x0, f0), (x1, f1), …, (xn, fn), ở
đây xj và fj= f(xj), j=0, 1, …, n đã cho.
Khi đó tồn tại một và chỉ một đa thức

6
nôi suy spline bậc 3 thỏa mãn các điều
kiện (1), (2) và (3).
Chứng minh
Theo định nghĩa, trên khoảng Ij:
xj≤x≤xj+1 spline g(x) bằng qj(x) và thỏa
mãn:
(4) qj(xj)=fj, qj(xj+1)=fj+1, j=0, 1, …, n-1
với đạo hàm của qj(x) thỏa mãn:
(5) q’j(xj)=kj, q’j(xj+1)=kj+1, j=0, 1, …,
n-1
ở đây, k0 và kn đã biết, còn k1, k2,
…, kn-1 được xác định sau.
Chú ý: Điều kiện (4) và (5) cho ta 4
phương trình để xác định qj(x).
1
c 
x j 1  x j , j=0, 1, …, n-1
j
(6*)

7
Chúng ta có thể kiểm tra đa thức bậc
3 duy nhất thỏa mãn (4) và (5) có công
thức:
q j ( x)  f j c 2j ( x  x j 1 )2 1  2c j ( x  x j ) 
 f j 1c 2j ( x  x j )2 1  2c j ( x  x j 1 ) 
(6)
 k j c 2j ( x  x j )( x  x j 1 )2  k j 1c 2j ( x  x j )2 ( x  x j 1 )

Lấy đạo hàm hai lần hàm qj(x) ta nhận


được:
q ' j ( x)  2 f j c 2j ( x  x j 1 ) 1  2c j ( x  x j )   2 f j c 3j ( x  x j 1 ) 2
 2 f j 1c 2j ( x  x j ) 1  2c j ( x  x j 1 )   2 f j 1c3j ( x  x j ) 2
 k j c 2j ( x  x j 1 )2  2k j c 2j ( x  x j )( x  x j 1 )
2k j 1c 2j ( x  x j )( x  x j 1 )  k j 1c 2j ( x  x j )2

8
q '' j ( x)  2 f j c 2j 1  2c j ( x  x j )   4 f j c 3j ( x  x j 1 )
4 f j c3j ( x  x j 1 )
 2 f j 1c 2j 1  2c j ( x  x j 1 )   4 f j 1c 3j ( x  x j )
4 f j 1c 3j ( x  x j )
2k j c 2j ( x  x j 1 )
2k j c 2j ( x  x j 1 )  2k j c 2j ( x  x j )
2k j 1c 2j ( x  x j 1 )  2k j 1c 2j ( x  x j )
2k j 1c 2j ( x  x j )
Đặt x=xj và x=xj+1 ta có:

9
q '' j ( x j )  2 f j c 2j 1  2c j ( x j  x j )   4 f j c 3j ( x j  x j 1 )
4 f j c 3j ( x j  x j 1 )
 2 f j 1c 2j 1  2c j ( x j  x j 1 )   4 f j 1c 3j ( x j  x j )
4 f j 1c 3j ( x j  x j )
2k j c 2j ( x j  x j 1 )
2k j c 2j ( x j  x j 1 )  2k j c 2j ( x j  x j )
2k j 1c 2j ( x j  x j 1 )  2k j 1c 2j ( x j  x j )
2k j 1c 2j ( x j  x j )
 2 f j c 2j  4 f j c 2j  4 f j c 2j  6 f j 1c 2j  2k j c j  2k j c j  2k j 1c j
 6 f j c 2j  6 f j 1c 2j  4k j c j  2k j 1c j

10
q '' j ( x j 1 )  2 f j c 2j 1  2c j ( x j 1  x j )   4 f j c 3j ( x j 1  x j 1 )
4 f j c 3j ( x j 1  x j 1 )
 2 f j 1c 2j 1  2c j ( x j 1  x j 1 )   4 f j 1c 3j ( x j 1  x j )
4 f j 1c 3j ( x j 1  x j )
2k j c 2j ( x j 1  x j 1 )
2k j c 2j ( x j 1  x j 1 )  2k j c 2j ( x j 1  x j )
2k j 1c 2j ( x j 1  x j 1 )  2k j 1c 2j ( x j 1  x j )
2k j 1c 2j ( x j 1  x j )
 6 f j c 2j  2 f j 1c 2j  4 f j 1c 2j  4 f j 1c 2j  2k j c j  2k j 1c j  2k j 1
 6 f j c 2j  6 f j 1c 2j  2k j c j  4k j 1c j
Vậy
q ''
(7) j j ( x )  6 f c
j j
2
 6 f j 1 j  4k j c j  2k j 1c j
c 2

q '' (
(8) j j 1x )  6 f c
j j
2
 6 f j 1 j  2k j c j  4k j 1c j
c 2

Theo định nghĩa, hàm g(x) có đạo hàm


cấp 2 liên tục, nên ta có điều kiên:
11
q ''j 1 ( x j )  q ''j ( x j ) , j=1, 2, …, n-1
Trong (8) ta thay j bởi j-1 và sử dụng
đẳng thức trên ta có:
q '' j ( x j )  6 f j c 2j  6 f j 1c 2j  4k j c j  2k j 1c j
 q '' j 1 ( x j )  6 f j 1c 2j 1  6 f j c 2j 1  2k j 1c j 1  4k j c j 1
Nghĩa là
6 f j c 2j  6 f j 1c 2j  4k j c j  2k j 1c j
 6 f j 1c 2j 1  6 f j c 2j 1  2k j 1c j 1  4k j c j 1

Chia 2 vế cho 2 và chuyển sang bên trái


các ẩn kj, ta nhận được hệ n pht
k j 1c j 1  2(c j 1  c j )k j  k j 1c j
(9)  3 f j c 2j 1  f j 1c 2j 
Ở đây f j  f ( x j )  f ( x j 1 ) ,
f j 1  f ( x j 1 )  f ( x j ) j =1, 2, …, n-1.
Hệ n – 1 phương trình này có
12
nghiệm duy nhất do ma trận hệ số có
các phần tử nằm trên đường chéo
chính có trị tuyệt đối lớn hơn hẳn trị
tuyệt đối của các phần tử nằm ngoài
đường chéo chính. Theo tính chất
của ma trận như thế, thì định thức
của nó phải khác 0. Bởi vậy, ta có
thể xác định duy nhất các giá trị k1,
k2, …, kn-1, chính là các giá trị đạo
hàm bậc nhất của g(x) các các điểm
mốc. Điều này hoàn tất chứng minh
định lý.

Storage and Time Demands in


solving (9) are modest, since the
matrix of (9) is sparse (has few
nonzero entries) and tridiagonal
(may have nonzero entries only on
13
the diagonal and on the two adjacent
“parallels” above and below it).
Pivoting (Sec. 7.3) is not necessary
because of that dominance. This
makes splines efficient in solving
large problems with thousands of
nodes or more. For some literature
and some critical comments, see
American Mathematical Monthly
105 (1998), 929–941.

Yêu cầu về lưu trữ dữ liệu và thời


gian giải hệ phương trình (9) là
không nhiều, vì ma trận của (9) là
thưa (có ít phần tử khác 0) và có
dạng tam giác (có thể chỉ có các
phần tử khác không trên đường chéo
và trên hai đường “song song” liền
14
kề ở trên và dưới đường chéo
chính ). Sử dụng phần tử trục xoay
(Phần 7.3) là không cần thiết
vì đặc điểm đó. Điều này làm cho
phương pháp nội suy splines hiệu
quả trong việc giải các bài toán lớn
với hàng nghìn nút trở lên. Đối với
một số tài liệu và một số bình luận
phê bình, hãy xem tạp chí hàng
tháng của Toán học Hoa Kỳ 105
(1998), 929–941.

Điều kiện(3) bao hàm cả điều kiện đã


được công bố (10)
(10) g’(x0)=k0, g’(xn)=kn
chính là hệ số góc của tiếp tuyến tại hai
đầu mút đã được cho.

15
Còn điều kiện nữa ta cần quan tâm là giá
trị đạo hàm bậc hai của g(x) tại hai đầu
mút. Khi đó có 2 sự lựa chọn, hoặc ta
điều kiện tư do hoặc điều kiện tự nhiên:
(11) g’’(x0) = 0, g’’(xn) = 0.
(geometrically: zero curvature at the
ends, as for the draftman’s spline), giving
a natural spline. These names are
motivated by Fig. 293 in Problem Set
12.3.

(về mặt hình học: độ cong bằng không ở


các đầu, như đối với spline của người
kéo), tạo ra một spline tự nhiên. Những
cái tên này được gợi ý bởi Hình 293
trong phần bài tập của 12.3.

16
Determination of Splines. Let k0 and kn
be given. Obtain k1, k2, …, kn-1 by
solving the linear system (9). Recall that
the spline g(x) to be found consists of n
cubic polynomials q0, q1, …, qn-1. We
write these polynomials in the form

Xác định Splines. Cho k0 và kn được cho.


Có được k1, k2, …, kn-1 bằng cách giải hệ
phương trình tuyến tính (9). Nhớ lại rằng,
spline g(x) cần tìm bao gồm n đa thức
bậc ba q0, q1, …, qn-1. Chúng ta viết các
đa thức này dưới dạng
(12) qj(x)=aj0+aj1(x-xj)+aj2(x-xj)2+aj3(x-xj)3
ở đây, j=0, 1, …, n-1.
Áp dụng khai triển Taylo, chúng ta
nhận được:
17
a j 0  q j  x j   f j theo( 2)

a j1  q j ’  x j   k j theo (5)

(13) a  1 q '' ( x )  3 f c 2  3 f c 2  2k c  k c theo (7)
 j2 2 j j j j j 1 j j j j 1 j


a j 3  q j ’’’  x j  / 6  3 ( f j  f j 1 )  2 (k j 1  k j )
2 1
 hj hj

Với aj3 nhận được bằng cách tính q ( x ''


j j 1 )

từ (12) và thay kết quả vào (8), nghĩa


là:
6 2
q ( x j 1 )  2a j 2  6a j 3h j  2 ( f j  f j 1 )  (k j  2k j 1 )
''
j
hj hj

và ta thế từ biểu thức này aj2 được cho


trong (13) và rút gọn.
Trong trường hợp đặc biệt, khi các mốc
cách đều, ta có hệ phương trình:
2
(14) k j 1  4k j  k j 1  ( f j 1  f j 1 ), j  1,..., n  1
h

18
Ví dụ 1.
Nội suy hàm f(x)=x4, với các mốc cách
đều x0=-1, x1=0, x2=1, và thỏa mãn các
điều kiện:
f(x0)=f0= 1, f(x1)=f1= 0, f(x2)=f2=1
g’(-1)=f’(-1)=-4, g’(1)=f’(1)=4
Giải
Theo điều kiện của đầu bài, ta có:
k0=-4, k2=4, với h=1 ta có:
k0+4k1+k2=3(f2-f0) →-4+4k1+4=0→k1=0
Đến đây ta đủ điều kiện để tìm q0(x) và
q1(x).
Trước hết ta tìm q0(x):
a00=f0=1
a01=k0=-4

19
1
a j2  q '' j ( x j )  3 f j c 2j  3 f j 1c 2j  2k j c j  k j 1c j
2
= -3+8=5
1
a j 3  q ''' j ( x j )  2 f j c 3j  2 f j 1c 3j  k j c 2j  k j 1c 2j
6

=2-4=-2
Vậy: q0(x)=1-4(x+1)+5(x+1)2-2(x+1)3

Tương tự, ta tìm q1(x):


a10=f1=0
a11=k1=0
1
a j2  q '' j ( x j )  3 f j c 2j  3 f j 1c 2j  2k j c j  k j 1c j
2

20
= 3-4=-1
1
a j 3  q ''' j ( x j )  2 f j c 3j  2 f j 1c 3j  k j c 2j  k j 1c 2j
6

=-2+4=2
Vậy: q1(x)=-x2+2x3

21
22
Ví dụ 2.
Natural Spline. Arbitrarily Spaced
Nodes
Find a spline approximation and a
polynomial approximation for the curve
of the cross section of the circularshaped
Shrine of the Book in Jerusalem shown
in Fig. 437.

23
Spline tự nhiên. Các điểm mốc có
khoảng cách tùy ý
Tìm một phép xấp xỉ spline và một đa
thức xấp xỉ cho đường cong của mặt cắt
ngang của Đền thờ Sách ở Jerusalem
được thể hiện trong Hình 437.

Giải
Thirteen points, about equally distributed
along the contour (not along the x-axis!),
give these data:

24
Mười ba điểm mốc, được phân bổ đều
dọc theo đường bao (không dọc theo trục
Ox), ta nhận được các dữ liệu sau:

The figure shows the corresponding


interpolation polynomial of 12th degree,
which is useless because of its
oscillation. (Because of roundoff your
software will also give you small error
terms involving odd powers of x.)
The polynomial is
Hình vẽ cho thấy đa thức nội suy tương
ứng bậc 12, ta thấy là không phù hợp vì
dao động của nó. (Vì làm tròn phần mềm
của bạn cũng sẽ đưa đến cho bạn các sai
số nhỏ với các từ có lũy thừa lẻ theo x.)

25
Đa thức là:

The spline follows practically the contour


of the roof, with a small error near the
nodes -0.8 and 0.8. The spline is
symmetric. Its six polynomials
corresponding to positive x have the
following coefficients of their
representations (12). (Note well that (12)
is in terms of powers of x – xj, not x!)
Spline thực tế theo đường viền của mái,
với sai số nhỏ gần các nút -0.8 và 0,8.
Spline là đối xứng. Sáu đa thức của nó
tương ứng với x dương có các hệ số biểu
diễn (12). (Lưu ý rằng (12) là biểu diễn
theo lũy thừa của x – xj, không phải x!)

26
27
28
Sử dụng hệ pt (14):
kj-1 +4kj + kj = 3 (fj+1 – fj-1)

29
30
31
32
33
34
35

You might also like