GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP. HỒ CHÍ MINH
KHOA TOÁN
MÔN: PHƯƠNG PHÁP TÍNH
Chủ Đề 3:
THUẬT TOÁN XÁC ĐỊNH CÔNG THỨC TÍNH GIÁ TRỊ
CỦA ĐA THỨC, GHI Ở DẠNG CHÍNH TẮC, TRÊN CƠ SỞ
DÙNG CÔNG THỨC NỘI SUY NEWTON
Giảng viên hướng dẫn: TS. TRỊNH CÔNG DIỆU
Sinh viên thực hiện:
1. BÙI THỊ THƠM
2. TRẦN VĂN TÂN
3. NGUYỄN THỊ CHÍ THANH
BÀI TIỂU
LUẬN
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
TÓM TẮT NỘI DUNG
Phần 1: MỞ ĐẦU
Phần 2: CƠ SỞ LÝ LUẬN
I. Lũy thừa suy rộng bậc n của số thực a với bước nhảy h
II. Các dạng biểu diễn đa thức
III. Định lý 1 (Định lý Bezout)
IV. Định lý 2
V. Hệ quả
VI. Xây dựng bài toán chuyển đa thức từ dạng chuẩn tắc suy rộng về chính tắc bằng
phương pháp Hoocne ngược
VII. Sai phân:
1. Định nghĩa
2. Bảng sai phân dùng tính sai phân các cấp của hàm f tại điểm
0
x
3. Công thức tính sai phân
VIII. Nội suy NEWTON:
1. Đa thức nội suy NEWTON
2. Đa thức nội suy NEWTON có mốc nội suy cách đều
a. Định lý của công thức nội suy NEWTON thứ nhất
b. Công thức nội suy NEWTON thứ hai
IX. Cách chuyển từ bài toán có các mốc nội suy không đều về bài toán có mốc cách đều
Phần 3: THUẬT TOÁN
I. Dạng bảng:
1. Dạng bảng của công thức tìm giá trị của đa thức ở dạng chuẩn tắc suy rộng bằng
phép nội suy Newton.
2. Dạng bảng của thuật toán chuyển từ dạng chuẩn tắc suy rộng về dạng chính
tắc bằng phương pháp Hoocne ngược.
3. Dạng bảng của thuật toán chuyển từ dạng chuẩn tắc suy rộng về dạng chính
tắc theo nhóm 2
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
II. Thuật toán:
1.Trường hợp 1: Khi các mốc nội suy cách đều (bước nhảy h đều)
2. Trường hợp 2: Khi các mốc nội suy không cách đều
III. Mã giả
Phần 4: MỘT SỐ VÍ DỤ CHI TIẾT
Phần 5: ĐOẠN CHƯƠNG TRÌNH
NHẬN XÉT CHUNG
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
PHẦN 1: MỞ ĐẦU
Trong toán học, ta thường gặp những bài toán khảo sát và tính giá trị của hàm số y = f(x) nhưng
trên thực tế, nhiều trường hợp ta chỉ nhận được những giá trị rời rạc: y
0
, y
1
, … y
n
tại các điểm
tương ứng x
0
, x
1
, … x
n
. (Các giá trị này được cung cấp qua thực nghiệm hay tính toán). Vấn đề đặt
ra là xác định giá trị của hàm số tại các điểm còn lại.
Cần xây dựng hàm
()gx
sao cho:
( ) ( ), 0,
( ) ( ), , ,
i i i
i i i i
g x y f x i n
g x y f x x a b x x
Vì vậy cần xây dựng hàm
()gx
. Do đó nhóm đã sử dụng công thức nội suy Newton để tìm ra công
thức của hàm để giải quyết bài toán sau:
Bài toán: Cho
Px
là đa thức bậc
n
biết:
x
0
x
1
x
…….
……
n
x
Px
0
y
n
y
……
…….
n
y
Mục tiêu của đề tài là sử dụng công thức nội suy Newton thứ nhất để tìm công thức xác định giá trị
P(x) ghi ở dạng chuẩn tắc suy rộng và chuyển công thức trên về dạng chính tắc.
PHẦN 2: CƠ SỞ LÝ LUẬN
I. Lũy thừa suy rộng bậc n của số thực a với bước nhảy h :
Cho
*
,,a h n
. Ta gọi lũy thừa suy rộng bậc
n
của số thực
a
với bước nhảy
h
là số:
ế
ế
Quy ước: Trường hợp h =1 ta viết a
(n)
thay cho a
(n;h)
và đọc vắn tắt là lũy thừa suy rông bậc
n của a
II. Các dạng biểu diễn đa thức:
Cho
Px
là đa thức bậc n theo biến x
Dạng chính tắc của P(x) là:
0
n
i
i
i
P x a x
với
01
,a , ,a
n
a
là các hằng số.
Dạng chuẩn tắc của
Px
là:
0
0
n
i
i
i
P x b x x
với
01
, , ,
n
b b b
là các hằng số.
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Dạng chính tắc suy rộng của
Px
là:
0
n
i
i
i
P x c x
với
01
,c , ,c
n
c
là các hằng số.
Dạng chuẩn tắc suy rộng của
Px
là:
,
0
0
n
ih
i
i
P x d x x
với
01
,d , ,d
n
d
là các hằng số.
Nhận xét : Dạng chuẩn tắc suy rộng là dạng tổng quát của 3 dạng trên.
Khi
0
0, 0xh
thì dạng chuẩn tắc suy rộng trở thành dạng chính tắc.
Khi
0h
thì dạng chuẩn tắc suy rộng trở thành dạng chuẩn tắc.
Khi
0
0, 1xh
thì dạng chuẩn tắc suy rộng trở thành dạng chính tắc suy rộng.
Vì vậy nếu đã có thuật toán tính giá trị đa thức có dạng biểu diễn chuẩn tắc suy rộng thì ta
cũng tính được giá trị đa thức có dạng biểu diễn thuộc ba dạng còn lại.
III. Định lý 1 (Định lý Bezout):
Cho
,P x R x
là đa thức ở dạng chính tắc
1
0
n
n
i
i
P x a x
. Khi đó dư của phép chia
P(x) cho
x
là
P
.
Chứng minh:
Nếu ta chia P(x) cho
x
dư hoặc bằng 0 hoặc một đa thức bậc 0 vì bậc
x
bằng 1. Vậy dư
là một phần tử
r
. Ta có
P x x q x r
Thay x bằng
ta được:
0.P q x r
hay
Pr
IV. Định lý 2:
Cho P(x) là một đa thức dạng chính tắc
1
0
n
n
i
i
ax
,
là một số thực bất kỳ. Khi đó, ta có đẳng thức:
1
1
00
nn
n i n i
i i n
ii
P x a x b x x b
Trong đó:
00
1
,i 1,2, ,n
i i i
ba
b a b
Chứng minh:
Theo định lý Bezout thì đẳng thức trên tồn tại.
Ta chỉ cần chứng minh đẳng thức truy hồi:
1 1 1
1
0 0 1
0 0 1 0 1
n n n n n
n i n i n n i n i n n i
i i n i n i i i
i i i i i
VP b x b x b b x b x b b x b x b b x
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Đồng nhất hệ số của hai vế, ta có:
00
1
,i 1,2, ,n
i i i
ba
b a b
V. Hệ quả:
Cho Q(x) là đa thức hệ số thực có dạng chính tắc
1
1
0
,
n
ni
i
i
ax
Khi đó, ta có đẳng thức:
1
1
00
nn
n i n i
i n i
ii
a x x a b x
(I)
+ Biến đổi từ vế trái sang vế phải của (I) đó chính là dùng phương pháp dùng sơ đồ hoocner ngược
với các hệ số cho bởi :
00
1
,i 1,2, ,n
i i i
ba
b a a
+ Biến đổi từ vế phải sang vế trái (I) đó chính là phương pháp dùng sơ đồ hoocner với các hệ số
cho bởi
00
1
b ,i 1,2, ,n
i i i
ab
aa
VI. Xây dựng bài toán chuyển đa thức từ dạng chuẩn tắc suy rộng về chính tắc bằng
phương pháp Hoocne ngược:
Xây dựng thuật toán:
Dạng chuẩn tắc suy rộng:
( ; )
0
0
( ) ( )
n
ih
i
i
P x d x x
Dạng chính tắc:
0
()
n
i
i
i
P x a x
Bước 1:
Đặt
,
0 0 0 0 0 0 0
00
1 1
nn
ih
i
ii
x x P x x x x x x h x x x x h x x n h
Đặt:
0
10
2 0 0
0 0 0
1
( )( )
( )( h) ( 1 h)
n
P
P x x
P x x h x x
P x x x x x x n
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Dùng so đồ Hoocne ngược để chuyển các
i
P
về dạng chính tắc
0
, 0,1, ,
i
ij
i ij
j
P a x i n
Áp dụng định lý 2 ta có:
0 00
11Pb
10 00
1 0 0 0 0
11 0 00 0
1
( ) ( ) ,
.
bb
P x x x x P x
b x b x
2 0 0 0 1 0
20 10
21 0 0 0 10 11
22 0 0 0 11
( h)( ) ( h) ,
1
h ( h).
h . ( h). 0
P x x x x x x P x h
bb
b x x x b b
b x x x b
……
1
1 2 1
1 ( 1)0 ( 1)1 ( 1)(n 1) ( 1) j
0
n
n n n j
n n n n n
j
P b x b x b b x
1
0 1 n j
0
n
n n n j
n n n n n
j
P b x b x b b x
Với
0 ( 1)0
0
1 1 1
1
1 , 0,1, ,
nn
nj
n j n j
bb
b x n h b b j n
Sau đó ta tính
0
, 0,1, ,
i
ij
i ij
j
P a x i n
Để đơn giản khi tính toán ta trình bày dạng bảng như sau:
0
0
1
0
10
x
1
0
x
0
20
xh
1
00
x h x
00
x h x
0
…….
1
…
…….
….
………
1
( 1)1i
b
( 1)2i
b
…
0
1
i
x i h
1
2 ( 1)1
.1
i i i
bb
2 ( 1)1 ( 1)2
.
i i i i
b b b
…
………
1
…
…….
0
1
n
x n h
1
1n
b
2n
b
…
nn
b
Bảng 1:Ttính các hệ số
ij
b
của đa thức
i
P
viết ở dạng chính tắc bằng sơ đồ Hoocne ngược
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Bước 2:
Ta có:
,
0
00
nn
ih
i
ii
x x P
Mà
0
, 0,1, ,
i
ij
i ij
j
P a x i n
,
0
00
nn
ih
i i i
ii
d x x d P
Đặt
0
, 0,1, ,
i
ij
i i i ij
j
Q d P c x i n
, (0,1, , ),i 0,1, ,n
ij i ij
c d b j i
Bảng tính các hệ số của
i
Q
:
0
d
00
c
1
d
10
c
11
c
…
….
….
….
i
d
0i
c
1i
c
…
….
……
…
….
….
…
….
n
d
0n
c
1n
c
……
…….
nn
c
Bảng 2: xác định các hệ số
ij
c
của
i
Q
Bước 3 Ta tính các hệ số
i
a
bằng công thức
0
, 0,1, ,
i
ij
n j i j
j
a c i n
ta có bảng tính sau:
0
00
c
1
10
c
11
c
…
….
….
….
I
0i
c
1i
c
…
….
……
…
….
….
…
n-1
( 1)0n
c
( 1)1n
c
n
0n
c
1n
c
2n
c
…….
nn
c
i
a
0n
a
1n
a
2n
a
…
nn
a
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Bảng 3: xác định các hệ số
ij
a
của
Px
Ta tính các
i
a
bằng cách cộng các
i
c
theo đường chéo như bảng phía trên.
Như vậy sau 3 bước ta được công thức ở dạng chính tắc của
Px
như sau:
1
0 1 1
nn
nn
P x a x a x a x a
=
0
n
i
i
i
ax
VII. Sai phân:
1. Định nghĩa:
Định nghĩa 1:
Cho f là hàm số thực, biến số thực:
0
,xh
Giả sử f xác định tại
00
,x x h
. Sai phân của f tại
0
x
, bước nhảy h, là số định bởi công thức:
0 0 0h
f x f x h f x
. (Để đơn giản ghi
0h
fx
thay cho
0h
fx
)
Hàm số thực định bởi
: ( )
hh
f x f x
được gọi là hàm sai phân của f với bước nhảy h
Toán tử sai phân bước nhảy h là ánh xạ:
:
hh
ff
Chú ý: Khi f là hàm hằng, ta có:
0
0
h
fx
tại mọi x
Định nghĩa 2:
Sai phân cấp hai của f tại
0
x
, bước nhảy h của hàm f là:
2
00h h h
f x f x
.
Hàm sai phân cấp hai bước nhảy h là:
22
:
hh
f x f x
.
Toán tử sai phân cấp hai, bước nhảy h là ánh xạ:
22
:
hh
ff
.
Định nghĩa tương tự cho các sai phân cấp cao hơn.
Khi cần nhấn mạnh cấp của sai phân, ta gọi sai phân của hàm f trong định nghĩa là sai phân
cấp một của hàm f, hơn nữa để đơn giản trong trình bày ta quy ước gọi hàm f là sai phân cấp 0
của hàm f. Ký hiệu: hàm sai phân cấp i (
0,in
), bước nhảy h, của hàm f là:
i
h
f
Quy ước: Khi h = 1 ta bỏ bớt nhóm từ “bước nhảy h” trong các thuật ngữ trên và khi đó ta ký hiệu
f
thay cho
1
f
2. Bảng sai phân dùng tính sai phân các cấp của hàm f tại điểm
0
x
:
Giả sử cần tính sai phân các cấp 1, 2, , n của hàm f, bước nhảy h, tại
0
x
.Đặt:
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
0
; 1,
; 0,
i
ii
x x ih i n
y f x i n
.
Sai phân các cấp của hàm f tại
0
x
có thể được xác định bởi bảng sau:
i
x
ii
y P x
hi
Px
2
hi
Px
…
1n
hi
Px
n
hi
Px
0
x
0
y
0 1 0
t y y
0 1 0
u t t
….
0 1 0
s r r
0 1 0
z s s
1
x
1
y
1 2 1
t y y
1 2 1
u t t
….
1 2 1
s r r
….
….
….
…
…
…
2n
x
2n
y
2 1 2n n n
t y y
2 1 2n n n
u t t
1n
x
1n
y
11n n n
t y y
….
n
x
n
y
Ví dụ 1: Lập bảng sai phân của hàm f biết:
i
x
4
6
8
i
y
93
259
569
Giải:
Áp dụng công thức tính sai phân, ta có bảng sai phân của hàm f như sau:
i
x
i
y
2 i
fx
2
2 i
fx
4
93
166
144
6
259
310
8
569
3. Công thức tính sai phân:
Mệnh đề 1:
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
i.
h h h
f g f g
với
,
là các hằng số.
ii.
.
h h h h h
f g x f x h g x f x g x f x g x f x g x h
iii.
hh
h
f x g x - f x g x
f
x=
g g x g x+h
iv.
m n m n
ff
với
, , , 0m n m n
Mệnh đề 2 ( Sai phân hàm lũy thừa ) :
i. Cho
,
n
f x x n h
. Khi đó:
!,
nn
h
f x n h x
và
0,
i
h
f x i n
ii. Cho
,
*
00
,,
nh
f x x x n x h
. Khi đó:
1,
0
nh
n
f x nh x x
.
Chứng minh:
i. Ta chứng minh
0,
i
h
f x i n
(*)bằng phương pháp quy nạp
Với
1n
, ta có
()f x x
. Khi đó:
2
( ) ( )
( ) ( ( )) 0
h
h h h h
f f x h f x h
f x f x h
Do đó (*) đúng.
Giả sử (*) đúng với
1nk
, tức là ta có
()
k
f x x
thì
( ) 0
i
h
fx
,
ik
Ta cần chứng minh
1k
f x x
thì
0
i
h
fx
,
1ik
Ta có:
1
1
11
1
1
k
k
k j j k j
hk
j
f x f x h f x x h x C h x
Suy ra:
11
2 1 1 1 1 1
11
11
0
kk
k k k j j k j j j k k j
h h h h k k h
jj
f x f x C h x C h x
(do giả thiết quy nạp)
Như vậy ta đã chứng minh được (*)
Ta chứng minh:
( ) !
nn
h
f x n h
(**) bằng phương pháp quy nạp
Với
0, ( ) 1n f x
. Khi đó:
00
( ) ( ) 1 0!
h
f x f x h
Với
0nk
, giả sử (**) đúng. Nghĩa là ta có:
( ) !
kk
h
F x k h
với
()
k
f x x
(1)
Với
1nk
, ta chứng minh (**) đúng
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Tức là ta chứng minh:
11
( ) ( 1)!
kk
h
f x k h
với
1
()
k
f x x
(2)
Ta có:
11
1 1 1 1
11
11
( ) ( ) ( )
kk
k k i i k i i
h k k i
ii
f x x h x C h x C h g x
Với
1
( ) , 1, 1
ki
i
g x x i k
Theo cách đặt thì
deg( ) , 1, 1
i
g k i k
Theo giả thiết quy nạp và theo (*) ta có:
! ,( 1)
()
0, 2, 1
k
k
hi
k h k
gx
ik
Suy ra:
1
1 1 1 1
1 1 1
1
( ) ( ( )) ( ) ( ) ( 1). . !. ( 1)!.
k
k k i i k k k k
h h h k h i k h
i
f x f x C h g x C h g x k hk h k h
Do đó, (2) đúng
Vậy ta đã chứng minh
( ) !.
nn
h
f x n h
ii. Giả sử
[ . ]
0
( ) ( )
nh
F x x x
=
1
0
0
()
n
i
x x ih
Suy ra:
( ) ( ) ( )
h
F x F x h F x
11
00
00
( ) ( )
nn
ij
x h x ih x x jh
11
00
00
( ( 1) ) ( )
nn
ij
x x i h x x jh
0 0 0 0 0 0 0 0
( )( )( 3 ) ( ( 1) ) ( )( )( 2 ) ( ( 1) )x x h x x x x h x x n h x x x x h x x h x x n h
0 0 0 0 0 0
[( )( )( 2 ) ( ( 2) )][( ) ( ( 1) )]x x x x h x x h x x n h x x h x x n h
2
0
0
( ). .
n
i
x x ih n h
[ 1, ]
0
( ) . .
nh
x x nh
VIII. Nội suy Newton :
1. Đa thức nội suy Newton:
Theo cách của Newton, ta có:
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
0
0
0
( ) ( )
[ , ]
f x f x
xx
f x x
, do đó:
0 0 0
( ) ( ) ( ) [ , ]f x f x x x f x x
(1)
Ta lại có:
01
0 0 1
1
,
,,[ ] [ ]
[ , ]
f x x f x x
xx
f x x x
, từ đó ta có:
0 0 1 1 0 1
[ , ] [ , ] ( ) [ , , ]f x x f x x x x f x x x
Tương tự như trên:
0 1 0 1 2 2 0 1 2
, , ,[ , ] [ , ] ( ) [ , , ]f x x x f x x x x x f x x x x
0 1 0 1 0 11
, , , , , , ,[ , ] [ , ] ( ) [ , , ]
n n n n
f x x x x f x x x x x f x x x x
Lần lượt thay vào (1) ta được:
0 0 0 1 0 1 0 1 2
0 1 1 0 1
0 1 1 0 1
( ) ( ) ( ) [ , ] ( )( ) [ , , ]
( )( ) ( ) [ , , , ]
( )( ) ( )( ) [ , , , , ]
nn
n n n
f x f x x x f x x x x x x f x x x
x x x x x x f x x x
x x x x x x x x f x x x x
(2)
Trong công thức (2) nếu đặt:
0 0 0 1 0 1 0 1 2
0 1 1 0 1
( ) ( ) ( ) [ , ] ( )( ) [ , , ]
( )( ) ( ) [ , , , ]
nn
n
x f x x x f x x x x x x f x x x
x x x x x x f x x x
P
(3)
Và
0 1 1 0 1
( ) ( )( ) ( )( ) [ , , , , ]
n n n
x x x x x x x x x f x x x xR
(4)
Thì
( ) ( ) ( )
n
f x x xPR
(5)
()
n
xP
là đa thức bậc n. Ta cần chứng minh
()
n
xP
thoả mãn điều kiện (*)
Thật vậy, từ (5) ta có:
0,
0,
( ) ( ) ( ) ( )
( ) ( ) ( )
i i i
i i i
n
n
n
ny
f x x x i
x x i
PR
PR
Mặt khác, dễ dàng thấy được
0,( ) 0 ( )
i
nxiR
Nên
0, ( ) ( )
iin
ny xiP
(thoả điều kiện (*))
Công thức (3) được viết lại như sau:
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
0
1
1 1 0
0
0
( ) ( ) [ , , , ] ( )
i
n
n
j
ii
i
j
x f x f x x x x xP
2. Đa thức nội suy Newton có mốc nội suy cách đều:
a. Định lý của công thức nội suy Newton thứ nhất:
Cho bộ
( , )
ii
xy
trong đó
0i
x x ih
(
, 0,h i n
). Giả sử P là một hàm đa thức có bậc bé
hơn hoặc bằng n sao cho
()
ii
P x y
. Khi đó:
,
00
0
1
!
n
ih
i
h
i
i
P x P x x x
ih
.
Chứng minh:
Ta xây dựng công thức tính P(x) ở dạng:
, 1, 2, ,
0 0 1 0 2 0 0
0
( )
n
i h h h n h
in
i
P x d x x d d x x d x x d x x
Như vậy, ta chỉ cần xác định
( 0, )
i
d i n
.
Ta có thể thấy ngay
00
d P x
.
Ta xác định
1
d
:
Theo mệnh đề 1 và 2 ta có:
0, 1, 1,
1 0 2 0 0
1
0
0 1 1
.1. .2. . .
h h n h
hn
h
h
P x d h x x d h x x d n h x x
Px
P x d h d
h
Ta xác định
2
d
:
0, 1, 2,
2 2 2 2
2 0 3 0 0
1
2
0
2 2 2
0 2 2 0
22
.2.1. 3.2. . . 1 .
1
.2.1.
2.1. 2!
h h n h
hn
h
hh
P x d h x x d h x x d n n h x x
Px
P x d h d P x
hh
Ta xác định
3
d
0, 3,
3 3 3
3 0 0
1
3
0
3 3 3
0 3 3 0
33
.3.2.1. 1 2 .
1
.3.2.1.
3.2.1. 3!
h n h
hn
h
hh
P x d h x x d n n n h x x
Px
P x d h d P x
hh
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Tiếp tục quá trình trên ta sẽ có được:
0
1
!
i
ih
i
d P x
ih
Khi đó:
,
00
0
1
!
n
ih
i
h
i
i
P x P x x x
ih
.
b. Công thức nội suy Newton thứ hai:
Nếu đặt
n
n
xx
i x x ih
h
thì từ công thứ (2*):
Công thức:
[ , ]
0
( 1)
1
( ) ( )( )
!
n
ih
i
nn
ni
i
h
i
ix f x x x
ih
hP
Như vậy ta đã có được công thức tính P(x) ghi ở dạng chuẩn tắc suy rộng. Sau đó, áp dụng thuật
toán ở chủ đề 2 để đưa công thức tìm được về dạng chính tắc.
IX. Cách chuyển từ bài toán có các mốc nội suy không đều về bài toán có mốc cách đều:
Nếu bài toán đa thức nội suy không cách đều ta chỉ cần thêm các mốc nội suy sao cho được
các mốc mới cách đều, sau đó dùng công thức nội suy Lagange để tính các giá trị hàm số.
Lúc này bài toán sẽ chuyển về bài toán nội suy có bước nhảy cách đều.
Việc thêm mốc nội suy sẽ là đơn giản nếu các mốc nội suy có giá trị không quá lớn, lúc này
ta sẽ chọn bước nhảy h sao cho ít phải thêm các mốc mới nhất
Ví dụ: Ta có bảng giá trị sau:
i
x
0
1
2
4
i
y
2
3
-1
0
Trong bài toán này ta sẽ chọn
1h
, và chỉ cần thêm mốc nội suy mới là
3x
là ta có các mốc nội
suy cách đều nhau.
Tuy nhiên trên thực tế ta gặp nhiều bài toán
, 0,1, ,
i
f x i n
với các mốc nội suy không
đều và ta gặp rất nhiều khó khăn trong vấn đề chọn mốc mới. Với bài toán này thì ta sẽ chọn
mốc nội suy ban đầu là
0
0x
,
1h
để đơn giản trong việc tính toán.
Ví dụ:
x
i
1
2
6
9
()
ii
P x y
3
2
293
5
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Ở ví dụ này ta sẽ thêm
0
0x
,
3x
vào công thức nội suy Lagrange để tính các giá trị
i
y
và ta sẽ
có bảng giá trị mới:
x
i
0
1
2
3
()
ii
P x y
-1
3
17
47
PHẦN 3: THUẬT TOÁN
I. Dạng bảng:
1. Dạng bảng của công thức tìm giá trị của đa thức ở dạng chuẩn tắc suy rộng bằng
phép nội suy Newton:
i
x
ii
y P x
hi
Px
2
hi
Px
…
1n
hi
Px
n
hi
Px
1
!
i
i
m
ih
0
1
!
i
ih
i
d P x
ih
0
x
0
y
0 1 0
t y y
0 1 0
u t t
….
0 1 0
s r r
0 1 0
z s s
1
00
dy
1
x
1
y
1 2 1
t y y
1 2 1
u t t
….
1 2 1
s r r
….
1
m
1 1 0
.d m t
….
….
…
…
…
….
…
2n
x
2n
y
2 1 2n n n
t y y
2 1 2n n n
u t t
….
1n
x
1n
y
11n n n
t y y
….
….
….
n
x
n
y
n
m
0
.
nn
d m z
2. Thuật toán dạng bảng chuyển từ dạng chuẩn tắc suy rộng về dạng chính
tắc dùng Hoocne ngược:
0
0
1
0
10
x
1
0
x
0
20
xh
1
00
x h x
00
x h x
0
…….
1
…
…….
….
………
1
( 1)1i
b
( 1)2i
b
…
0
1
i
x i h
1
2 ( 1)1
.1
i i i
bb
2 ( 1)1 ( 1)2
.
i i i i
b b b
…
………
1
…
…….
0
1
n
x n h
1
1n
b
2n
b
…
nn
b
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Bảng 1: Tính các hệ số
ij
b
của đa thức
i
P
viết ở dạng chính tắc bằng sơ đồ Hoocne ngược
0
d
00
c
1
d
10
c
11
c
…
….
….
….
i
d
0i
c
1i
c
…
….
……
…
….
….
…
….
n
d
0n
c
1n
c
……
…….
nn
c
Bảng 2: Xác định các hệ số
ij
c
của
i
Q
0
00
c
1
10
c
11
c
…
….
….
….
i
0i
c
1i
c
…
….
……
…
….
….
…
n-1
( 1)0n
c
( 1)1n
c
n
0n
c
1n
c
2n
c
…….
nn
c
i
a
0n
a
1n
a
2n
a
…
nn
a
Bảng 3: Xác định các hệ số
ij
a
của
Px
3. Dạng bảng của thuật toán chuyển từ dạng chuẩn tắc suy rộng về dạng chính
tắc theo nhóm 2:
a
n
= d
n
a''''
n-1
= a'''
n-1
– x
0*
a'''
n
…
a''''
1
= a'''
1
– x
0*
a'''
2
a''''
0
= a'''
0
– x
0*
a'''
1
x
0
a'''
n
= d
n
a'''
n-1
= a''
n-1
– x
1*
a''
n
a'''
1
= a''
1
– x
1*
a''
2
a
0
= d
0
X
1
= x
0
+ h
a''
n
= d
n
a''
n-1
= a'
n-1
– x
2*
a'
n
a
1
= d
1
…
…
…
…
…
…
X
n-1
= x
0
+ (n-1)*h
a
n
= d
n
a
n-1
= d
n-1
X
n
= x
0
+ n*h
a
n
= d
n
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
II. Thuật toán:
Tính bước nhảy h theo công thức
1
,h 0, 1, 1
ii
h x x i n
sau đó xét các trường hợp của h.
1. Trường hợp 1: Khi các mốc nội suy đều (bước nhảy h đều) thì ta lần lượt thực hiện
các tiến trình giải như sau:
a. Tiến trình 1: Dùng công thức nội suy Newton để xác định công thức của
Px
ở dạng
chuẩn tắc suy rộng.
Bước 1: Tính sai phân các cấp của
Px
.
Bước 2: Áp dụng định lý và công thức nội suy newton tính được giá trị của
Px
ở dạng
chuẩn tắc suy rộng.
b. Tiến trình 2: Chuyển từ dạng chuẩn tắc suy rộng về dạng chính tắc.
o Cách 1: Dùng thuật toán chuyển từ chuẩn tắc suy rộng sang chính tắc.(tham khảo đề tài
của nhóm 2).
o Cách 2: Dùng hoocne ngược chuyển từ dạng chuẩn tắc suy rộng về chính tắc.
2. Trường hợp 2: Khi các mốc nội suy không cách đều ta sẽ thêm các mốc nội suy
mới sao cho các mốc nội suy cách đều hoặc chọn
0
0, 1xh
rồi thêm các mốc mới
sau đó dùng công thức nội suy Lagrange tính các giá trị của hàm cho các mốc mới
thêm.
Bước 1: Tính giá trị
Px
bằng công thức nội suy Lagrange theo công thức sau:
0
0
j
j
i
j
ji
ij
ji
y
P x x x
xx
Bước 2: Ta thêm các điểm
i
x
sao cho ta được bước nhảy
1ii
h x x
là đều nhau
Bước 3: Thay các giá trị của
i
x
vừa tìm được vào công thức
Px
ta được giá trị
i
y
tương
ứng.
Lúc này ta được bảng giá trị mới và bài toán trở thành bài toán ở trường hợp 1 với bước
nhảy đều. Sau đó ta thực hiện các bước làm như trong trường hợp 1.
III. MÃ GIẢ:
// Nhập dữ liệu
Nhập n - số lượng các bộ (x,y)
Cho i chạy từ 0 đến n, nhập các bộ (x,y)
//Kiem tra buoc nhay h (moc deu, moc ko deu)
Sắp xếp lại các bộ số theo x tang dần
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Đặt h[1] là khoảng cách từ x[0] đến x[1]
Cho i chạy từ 1 đến n-1
Nếu khoảng cách từ x[i] đến x[i+1] khác h[1] thì dung công thức Lagrange để đưa về
mốc nội suy cách đều
//Khởi tạo các giá trị ban đầu
//Khởi tạo mảng h[] các luỹ thừa của h
h[0]=1
Cho i chạy từ 2 đến n, h[i]=h[i-1]*h
//Khởi tạo mảng m[]
m[0]=1
ifact = 1 // biến chạy để tính i!
Cho i chạy từ 1 đến n
ifact = ifact*i
m[i] = ifact*h[i]
//Khởi tạo cột đầu của mảng delta[]
Cho i chạy từ 0 đến n, tính delta[i][0]=y[i]
//Khởi tạo các giá trị x[i]
Chi i chạy từ 1 đến n, tính x[i]=x[i-1]+h[1]
//Lập bảng sai phân cấp i
Cho i giảm từ (n-1) đến 0
Cho j tang từ 1 đến (n-i)
Tính theo công thức delta[i][j] = delta[i+1][j-1] - delta[i][j-1]
//Tính d[i]
Cho i chạy từ 0 đến n, tính d[i] = delta[0][i] / m[i]
//Tính các hệ số a[i] của đa thức P(x)
Cho i chạy từ 0 đến n, z[i][n]=d[n]
Cho i chạy từ 0 đến (n-1), z[i][i]=d[i]
Cho i giảm từ (n-2) đến 0
Cho j giảm từ (n-1) đến i
Tính các z[i][j] theo công thức z[i][j]=z[i+1][j] - x[i+1]*z[i+1][j+1]
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
//Mảng z[][] là bước đệm để tính các hệ số a[i]
a[n] = z[n][n];
Cho j giảm từ n đến 0, tính a[j] = z[0][j] - x[0]*z[0][j+1]
// Xuất dữ liệu
Xuất các a[i],
0,in
PHẦN 4: VÍ DỤ CHI TIẾT
Ví dụ 1: Hãy xác định công thức tính P(x) bằng công thức nội suy Newton ghi ở dạng chính tắc,
biết:
Lập bảng sai phân:
i
x
i
y
2 i
fx
2
2 i
fx
1
!
i
i
m
ih
i
d
4
93
166
144
1
93
6
259
310
1
2
83
8
569
1
8
18
Theo công thức nội suy Newton ta xác định được P(x) ở dạng chuẩn tắc suy rộng:
1,2 2,2
( ) 93 83 4 18 4P x x x
Bảng biểu diễn các hệ số của P(x) ở dạng chính tắc:
Cách 1: Chuyển theo phương pháp của nhóm 2
i
a
i
x
18
-97
193
4
18
-25
93
i
x
4
6
8
i
y
93
259
569
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
6
18
83
8
18
Vậy dạng chính tắc của P(x) là:
2
( ) 193 97 18P x x x
Cách 2: Làm theo phương pháp dùng hoocne ngược
Ta tính các hệ số
ij
b
trước dựa vào bảng sau:
i
ij
b
0
1
0
-4
1
-4
0
-6
1
-10
24
0
-8
1
-18
104
-192
Tính các
ij i ij
c d b
theo bảng sau:
i
d
ij
c
93
93
0
83
83
-332
0
18
18
-180
432
Cuối cùng ta sẽ cộng theo đường chéo để tìm các
ij
a
93
93
0
83
83
-320
0
18
18
-180
432
ij
a
18
-97
193
Vậy dạng chính tắc của P(x) là:
2
( ) 193 97 18P x x x
Ví dụ 2: Hãy dùng công thức nội suy Newton tìm giá trị của biểu thức
Px
, chuyển
Px
về
dạng chính tắc. Cho bảng giá trị sau:
i
x
0
1
2
4
i
y
2
3
-1
0
Bài giải:
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Do các bước nhảy h ở bài toán không đều nên ta sẽ thêm một số mốc nội suy mới
i
x
để cho bài
toán chuyển về bài toán có bước nhảy đều, dùng công thức nội suy Lagrange để tìm các giá trị
i
y
sau đó sẽ dùng công thức nội suy Newton cho bài toán có bước nhảy đều.
Ta thấy vì
1 0 2 1 3 2 4 3
1x x x x x x x x
Nên ta chọn thêm vào bảng
4
3x
. Áp dụng công thức nội suy Lagrange:
0
0
0
()
j
ji
n
j
i
i
ij
ji
j
xx
P x y
xx
Ta tìm được
4
34Py
. Lúc này ta có bảng giá trị mới
i
x
0
1
2
3
i
y
2
3
-1
-4
Ta dùng công thức nội suy Newton để tìm giá trị của bài toán ở dạng chuẩn tắc suy rộng.
Ta có bảng sai phân như sau:
i
x
i
y
1 i
fx
2
1 i
fx
3
1 i
fx
1
!
i
i
m
ih
i
d
0
2
1
-5
6
1
2
1
3
-4
1
1
1
2
-1
-3
1
2
5
2
3
-4
1
6
1
Giá trị của bài toán ở dạng chuẩn tắc suy rộng:
Px
3,1 2,1 1,1
5
2
2
x x x
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
Chuyển bài toán từ dạng chuẩn tắc suy rộng sang dạng chính tắc:
Cách 1: (theo phương pháp của nhóm 2)
Ta lập bảng sau:
i
x
1
11
2
11
2
2
0
1
11
2
11
2
2
1
1
9
2
1
2
1
5
2
3
1
32
11 11
2
22
P x x x x
Cách 2: (theo phương pháp hoocne ngược)
Ta tính các hệ số
ij
b
trước dựa vào bảng sau:
i
ij
b
0
1
0
0
1
0
0
-1
1
-1
0
0
-2
1
-3
2
0
-3
1
-6
11
-6
Tính các
ij i ij
c d b
theo bảng sau:
ij
d
ij
c
2
2
0
1
1
0
0
5
2
5
2
5
2
0
0
1
1
-3
2
0
Cuối cùng ta sẽ cộng theo đường chéo để tìm các
ij
a
0
2
0
1
1
0
0
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
2
5
2
5
2
0
0
3
1
-3
2
0
i
a
1
11
2
11
2
2
Vậy dạng chính tắc cần tìm là:
32
11 11
2
22
P x x x x
PHẦN 5: ĐOẠN CHƯƠNG TRÌNH
Chương trình xác định hàm theo công thức nội suy Newton với bước nhảy tùy ý:
#include <iostream>
#include <stdio.h>
#include <cmath>
#define MAXN 20
using namespace std;
int n;
long h[MAXN], x[MAXN], y[MAXN], m[MAXN], d[MAXN], a[MAXN]; // m=i!*h^i
long delta[MAXN][MAXN], z[MAXN][MAXN];
void Lagrange()
{
for (int xNew=0; xNew<=n; xNew++)
{
long tong=0;
for (int i=0; i<=n; i++)
{
long tu=y[i], mau=1;
for (int j=0; j<=n; j++)
if (i!=j)
{
tu=tu*(xNew-x[j]); mau=mau*(x[i]-x[j]);
}
tong=tong+tu/mau;
GVHD: TS. TRỊNH CÔNG DIỆU Lớp: Toán VB2- K2
NHÓM 3- LỚP: VB2-TOÁN-K2
}
x[xNew]=xNew; y[xNew]=tong;
}
}
int main()
{
// Nhap du lieu
cout << "Nhap so luong cac bo (xi,yi) (i>0): "; cin >> n; cout << endl;
n=n-1;
cout << "Nhap cac bo gia tri (xi,yi):" << endl;;
for (int i=0; i<=n; i++) cin >> x[i] >> y[i];
cout << endl;
//Kiem tra buoc nhay h (moc deu, moc ko deu)
long tmp;
for (int i=0; i<=n; i++)
for (int j=i+1; j<=n; j++)
if (x[i]>x[j])
{
tmp=x[i];x[i]=x[j];x[j]=tmp;
tmp=y[i];y[i]=y[j];y[j]=tmp;
}
h[1] = abs(x[1]-x[0]);
for (int i=1; i<n; i++)
if (abs(x[i+1]-x[i])!=h[1])
{
h[1]=1;
Lagrange();
break;
}
//Khoi tao cac gia tri ban dau
h[0]=1;