Tải bản đầy đủ (.pdf) (81 trang)

BÀI TOÁN GIÁ TRỊ BAN ĐẦU CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 81 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM
KHOA TOÁN - TIN HỌC
——————– *** ———————

TIỂU LUẬN CUỐI KỲ MÔN PHƯƠNG PHÁP TÍNH

ĐỀ TÀI:

BÀI TOÁN GIÁ TRỊ BAN ĐẦU
CHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG

Giảng viên hướng dẫn :

ThS. Đào Huy Cường

Sinh viên thực hiện:
Mã số sinh viên:

Lê Thị Anh Thư
41.01.101.115

Lớp:

K41 Toán A

Thành phố Hồ Chí Minh
Ngày 20 tháng 6 năm 2018


Mục lục
1 Lời mở đầu



3

2 Bài toán giá trị ban đầu và các định lý cơ sở

4

3 Phương pháp Euler
3.1 Cơ sở của phương
3.2 Thuật toán . . .
3.3 Ước lượng sai số .
3.4 Hiệu chỉnh sai số

pháp
. . .
. . .
. . .

Euler
. . . .
. . . .
. . . .

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.

.
.
.
.

.
.
.
.

7
7
9
11
13

4 Phương pháp Taylor bậc cao
15
4.1 Sai số chặt cụt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Phương pháp Taylor bậc n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 Phương pháp Runge-Kutta
5.1 Phương pháp Runge-Kutta bậc hai . . . . . . . . . . . .
5.2 Phương pháp trung điểm . . . . . . . . . . . . . . . . . .
5.3 Phương pháp Euler hiệu chỉnh . . . . . . . . . . . . . . .
5.4 Phương pháp Heun . . . . . . . . . . . . . . . . . . . . .
5.5 Phương pháp Runge-Kutta bậc bốn . . . . . . . . . . . .
5.6 So sánh tính toán . . . . . . . . . . . . . . . . . . . . . .

5.7 Kiểm soát sai số và phương pháp Runge-Kutta-Fehlberg

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.


.
.
.
.
.
.
.

.
.
.
.
.
.
.

21
22
23
23
26
29
32
34

6 Phương pháp đa bước
6.1 Phương pháp hiện Adams-Bashforth . . . . .
6.2 Phương pháp ẩn Adams-Moulton . . . . . . .
6.3 Phương pháp dự đoán - sửa lỗi . . . . . . . .
6.4 Kiểm soát sai số và phương pháp biến nhảy đa

6.5 Phương pháp ngoại suy . . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.

.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

41
46
50
52
57
63

. . . .
. . . .
. . . .

bước .
. . . .

.
.
.
.
.

.
.
.
.
.

7 Sự ổn định của các phương pháp
70
7.1 Các phương pháp một bước . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.2 Các phương pháp đa bước . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8 Kết luận

78

9 Tài liệu tham khảo

81

2



1

Lời mở đầu

Bài toán tìm nghiệm của phương trình vi phân thỏa điều kiện ban đầu được gọi là bài toán giá
trị ban đầu cho phương trình vi phân hay bài toán Cauchy. Trong thực tế, các bài toán này
mô tả những hệ thống phụ thuộc vào thời gian và lời giải phải thỏa một số điều kiện tại thời
điểm ban đầu.
Ví dụ, khi khảo sát sự chuyển động của con lắc, người ta biểu diễn chuyển động này bằng một
phương trình vi phân bậc hai như sau:
d2 θ
g
+ sinθ = 0,
2
dt
L

(1.1)

với L là độ dài con lắc, g là hằng số hấp dẫn. Tại thời điểm bắt đầu t0 , vị trị con lắc là θ(t0 ) = θ0
và vận tốc là θ (t0 ) = θ0 . Ta gọi đây là bài toán có giá trị ban đầu.
Với giá trị θ nhỏ, ta có xấp xỉ θ ≈ sinθ, khi đó phương trình (1.1) trở thành:
g
d2 θ
+
sinθ = 0,
dt2
L

θ(t0 ) = θ0 ,


θ (t0 ) = θ0 .

(1.2)

Nhìn chung, việc tìm nghiệm giải tích (nghiệm chính xác) của các bài toán ban đầu khá khó
khăn, do đó ta cần nghiên cứu các phương pháp số để tìm nghiệm xấp xỉ cho những bài toán
này.
Trong bài tiểu luận này, ta sẽ xem xét một số phương pháp để tìm nghiệm xấp xỉ của phương
trình vi phân thường thỏa điều kiện ban đầu có dạng như sau:
dy
= f (t, y),
dt

a ≤ t ≤ b,

y(a) = α.

Các phương pháp số sẽ được chia làm hai loại chính, đó là các phương pháp một bước như
phương pháp Euler, Taylor bậc cao, phương pháp trung điểm, Euler hiệu chỉnh, Heun, RungeKutta, Runge-Kutta-Fehlberg và các phương pháp đa bước như phương pháp hiện AdamsBashforth, phương pháp ẩn Adams-Moulton, phương pháp dự đoán - sửa lỗi, phương pháp
ngoại suy.
Trước khi tìm nghiệm xấp xỉ của bài toán giá trị ban đầu, ta cần xem xét một số định lý cơ
sở về sự tồn tại duy nhất nghiệm của bài toán, sự hội tụ về nghiệm chính xác của dãy nghiệm
xấp xỉ..., tất cả sẽ được trình bày ở phần đầu của bài viết. Tiếp theo là nội dung về các phương
pháp xấp xỉ, mỗi phương pháp được trình bày trong bài viết sẽ gồm có cơ sơ lý luận, cách xây
dựng thuật toán, ví dụ minh họa, thuật toán, kết quả thu được trên Matlab và hiệu chỉnh sai
số (nếu có). Phần cuối bài viết sẽ bàn về sự ổn định, một vài nhận xét, đánh giá sự hiệu quả
của các phương pháp số.
Em cũng xin gửi lời cảm ơn chân thành đến thầy Đào Huy Cường đã tận tâm giảng dạy và
cho em cơ hội làm tiểu luận môn Phương pháp tính với đề tài thú vị này. Trong quá trình làm

việc không thể tránh những thiếu sót, mong nhận được sự nhận xét, góp ý từ thầy và bạn đọc.

3


2

Bài toán giá trị ban đầu và các định lý cơ sở

Sau đây là một số khái niệm và tính chất của hàm số thỏa điều kiện Lipschitz.
Định nghĩa 2.0.1: Hàm số thỏa điều kiện Lipschitz
Hàm số f (t, y) được gọi là thỏa điều kiện Lipschitz theo biến y trên tập D ⊂ R2 nếu tồn
tại L > 0 sao cho
|f (t, y1 ) − f (t, y2 )| ≤ L|y1 − y2 |,
với mọi (t, y1 ), (t, y2 ) thuộc D . Hằng số L được gọi là hằng số Lipschitz của f .
Định nghĩa 2.0.2: Tập lồi
Tập D ∈ R2 được gọị là lồi nếu với mọi (t1 , y1 ), (t2 , y2 ) thuộc D thì ((1 − λ)t1 + λt2 , (1 −
λ)y1 + λy2 ) cũng thuộc D, với mọi λ trong [0, 1].
Định lý 2.0.1: Điều kiện cần để hàm số thỏa điều kiện Lipschitz
Giả sử f (t, y) xác định trên tập lồi D ∈ R2 . Nếu tồn tại L > 0 sao cho
∂f
(t, y) ≤ L, ∀(t, y) ∈ D
∂y
thì f thỏa điều kiện Lipschitz trên D với biến y, hằng số Lipschitz là L.
Chứng minh
Với mọi (t, y1 ), (t, y2 ) thuộc D, ta có
|f (t, y1 ) − f (t, y2 )| =

∂f
(t, ζ) |y1 − y2 | ≤ L|y1 − y2 |,

∂y

với ζ là số nằm giữa y1 , y2 .
Sau đây là một khái niệm khá mới lạ "Bài toán đặt vấn đề tốt".
Định nghĩa 2.0.3: Bài toán đặt vấn đề tốt
Bài toán giá trị ban đầu có dạng
dy
= f (t, y),
dt

a ≤ t ≤ b,

y(a) = α

(2.1)

được gọi là Bài toán đặt vấn đề tốt (well-posed problem) nếu thỏa hai điều sau:
(i) Tồn tại nghiệm duy nhất y(t).
(ii) Tồn tại ε0 > 0, k > 0 sao cho với mọi ε thỏa ε0 > ε > 0, với mọi δ(t) liên tục với
|δ(t)| < ε với mọi t ∈ [a, b], và khi |δ0 | < ε, bài toán giá tri ban đầu có dạng
dz
= f (t, z) + δ(t),
dt

a ≤ t ≤ b,

z(a) = α + δ0

có nghiệm duy nhất z(t) thỏa mãn
|z(t) − y(t)| < kε,


4

∀t ∈ [a, b].

(2.2)


Bài toán (2.2) được gọi là bài toán nhiễu của (2.1). Những nhà toán học quan tâm đến sự
tồn tại duy nhất nghiệm của bài toán rồi mới tìm cách giải chúng, nếu bài toán được đặt vấn
đề tốt thì nó rất lý tưởng, bởi lẽ không chỉ bài toán này có nghiệm duy nhất, mà ngay cả bài
toán nhiễu của nó (thường xảy ra do sai số trong tính toán) cũng có kết quả này. Vậy câu hỏi
đặt ra là khi nào bài toán đã cho sẽ là bài toán đặt vấn đề tốt?
Định lý 2.0.2: Điều kiện cần để bài toán dạng (2.1) là bài toán đặt vấn đề tốt
Giả sử D = {(t, y)|a ≤ t ≤ b, −∞ < y < +∞}. Nếu f liên tục và thỏa điều kiện Lipschitz
với biến y trên D thì bài toán có giá trị ban đầu (2.1) là bài toán đặt vấn đề tốt.
Chứng minh
Chứng minh thỏa (i)
Từ bài toán giá trị ban đầu
dy
= f (t, y),
dt

a ≤ t ≤ b,

y(a) = α

Ta viết lại dưới dạng tương đương sau
t


y(t) − y(a) = y(t) − α =

f (s, y(s))ds
a

Với (t, y) ∈ D thì −∞ < y < +∞, nên tồn tại c > 0 sao cho α − c ≤ y ≤ α + c.
Ta viết lại D = {(t, y)|a ≤ t ≤ b, α − c ≤ y ≤ α + c} = [a, b] × [α − c, α + c].
Toán tử F xác định như sau
t

f (s, y(s))ds.

F y = z(t) = α +
a

Dễ có z(t) liên tục vì f, y là các hàm liên tục. Hơn nữa, Ta lại có
t

t

|z(t) − α| =

|f (s, y(s))|ds ≤ M |t − a| ≤ M (b − a) ≤ c ∀t ∈ [a, b]

f (s, y(s)ds ≤
a

a

Với M := sup |f | và b thỏa mãn b ≤

D

c
+ a.
M

Suy ra
F : [a, b] × [α − c, α + c] → [a, b] × [α − c, α + c].
Ta có
t

F (y1 ) − F (y2 ) =

[f (s, y1 (s)) − f (s, y2 (s))]ds
a
t



|(f (s, y1 (s)) − f (s, y2 (s))ds|
a
t



|(f (s, y1 (s)) − f (s, y2 (s))|ds
a
t




L|y1 (s) − y2 (s)|ds (do f là hàm Lipschitz theo biến y trên D)
a

≤ L(t − a) y1 − y2 ≤ L(b − a) y1 − y2

5


1
+ a, khi đó L(b − a) < 1.
L
t∈[a,b]
Do đó F là ánh xạ co trên không gian Banach. Theo định lý điểm bất động, toán tử F tồn tại
duy nhất một điểm bất động trên D.
Với y = sup |y(t)| và b thỏa mãn b <

t

Giả sử y ∗ là điểm bất động, suy ra y ∗ = F y ∗ = α +

f (s, y ∗ (s))ds, hay y ∗ là nghiệm phương
a

t

trình. Ngược lại, giả sử y là nghiệm của phương trình, khi đó F y = α +

f (s, y(s))ds =
a


t

y (s)ds = y(t) = y, nên y là điểm bất động của F .

α+
a

Như vậy bài toán (2.1) có nghiệm duy nhất trên D với b < min
Nếu đặt

c
1
+ a, + a .
M
L

t

y0 (t) = α,

yk+1 = α +

f (s, yk (s))ds,
a

Lúc này ta có dãy {yk } như sau
y0 (t) = α,

yk+1 (t) = F (yk (t)),


∀k ∈ N ∀t ∈ [a, b].

Ta có dãy {yk } hội tụ về nghiệm y(t) của bài toán.
Chứng minh thỏa (ii)
Viết lại bài toán (2.2)
t

z(t) = α + δ0 +

t

f (t, s)ds +
a

δ(s)ds
a

t

= δ0 + y(t) +

δ(s)ds
a

Từ (i) ta có sự tồn tại duy nhất của y(t), nên z(t) cũng tồn tại duy nhất với δ0 , δ(t) chọn trước
thỏa: chọn ε0 > 0, với mọi ε > 0 mà ε0 > ε > 0, chọn δ(t) liên tục sao cho |δ(t)| < ε với mọi
t ∈ [a, b], và |δ0 | < ε.
Khi đó
t


|z(t) − y(t)| = δ0 +

δ(s)ds
a
t

≤ |δ0 | +

δ(s)ds
a
t

≤ |δ0 | +

|δ(s)|ds
a

= ε + ε|t − a| ≤ (1 + b − a)ε = kε ∀t ∈ [a, b], k = 1 + b − a > 0.
Ví dụ 2.0.1. Xét bài toán giá trị ban đầu
dy
= y − t2 + 1,
dt

0 ≤ t ≤ 2,

y(0) = 0.5

là bài toán đặt vấn đề tốt trên D = {(t, y)|0 ≤ t ≤ 2, −∞ < y < +∞}


∂(y − t2 + 1)
=1
∂y
6

(2.3)


Theo Định lý 2.0.1 thì f là hàm Lipschitz theo biến y trên D với hằng số Lipschitz L = 1.
Mặt khác, f liên tục trên D nên theo Định lý 2.1.1 bài toán có giá trị ban đầu (2.1) là bài
toán đặt vấn đề tốt.
Minh họa của bài toán nhiễu như sau
dz
= z − t2 + 1 + δ,
dt

0 ≤ t ≤ 2,

z(0) = 0.5 + δ0

(2.4)

với δ, δ0 là hằng số . Nghiệm của bài toán (2.3) và (2.4) lần lượt là
y(t) = (t + 1)2 − 0.5et và z(t) = (t + 1)2 + (δ + δ0 − 0.5)et − δ,
Giả sử ε > 0. Nếu |δ| < ε, |δ0 | < ε thì
|y(t) − z(t)| = |(δ + δ0 )et − δ| ≤ |δ + δ0 |e2 + |δ| ≤ (2e2 + 1)ε = kε, ∀t ∈ [0, 2].
* (Trong bài viết nếu có kí hiệu y với y = y(t) thì đó chính là

3
3.1


dy
).
dt

Phương pháp Euler
Cơ sở của phương pháp Euler

Phương pháp Euler là một trong những phương pháp xấp xỉ cơ bản nhất để giải bài toán giá
trị ban đầu. Mặc dù thực tế phương pháp này ít khi được sử dụng, nhưng nó là nền tảng để
xây dựng một số phương pháp tiên tiến hơn.
Ta sử dụng thuật toán Euler để tìm nghiệm xấp xỉ của bài toán giá trị ban đầu được đặt vấn
đề tốt có dạng như sau:
dy
= f (t, y),
dt

a ≤ t ≤ b,

y(a) = α. (1)

Việc tìm một xấp xỉ liên tục của nghiệm chính xác y(t) rất khó khăn, thay vào đó ta sẽ tìm xấp
xỉ của y tại các giá trị cụ thể trong [a, b]. Từ đó ta có thể tìm được nghiệm xấp xỉ tại những
điểm khác trong [a, b] bằng phép nội suy.
Đầu tiên ta rời rạc miền [a, b] bởi các nút ti = a + ih, i = 0, 1, . . . N , với N > 0 và bước nhảy
là h = ti+1 − ti = (b − a)/N .
Giả sử nghiệm chính xác y(t) của (1) có đạo hàm cấp hai liên tục trên [a, b].
Với i = 0, 1, . . . , N − 1, sử dụng khai triển Taylor y(t) trong lận cận của ti và thay t = ti+1 ta
thu được
(ti+1 − ti )2

y (ζi ),
y(ti+1 ) = y(ti ) + (ti+1 − ti )y (ti ) +
2
với ζi là số nằm giữa ti , ti+1 . Thay h = ti+1 − ti ta có
y(ti+1 ) = y(ti ) + hy (ti ) +

h2
y (ζi ),
2

và do y thỏa phương trình vi phân trong bài toán (1) nên
y(ti+1 ) = y(ti ) + hf (ti , y(ti )) +

h2
y (ζi ).
2

Phương pháp Euler xây dựng wi ≈ y(ti ), với i = 1, . . . , N bằng cách bỏ đi phần dư
khi đó ta thu được dãy nghiệm xấp xỉ xác định như sau
7

h2
y (ζi ),
2


Phương pháp Euler
w0 = α
với i = 0, 1, . . . , N − 1.


wi+1 = wi + hf (ti , wi )

Đây là Phương trình sai phân liên kết với phương pháp Euler.

Hình 1: Chia miền [a, b] thành N đoạn đều bằng h = (b − a)/N .

Hình 2: w0 = y0 = α, w1 = α + hy (t0 ) = α + hf (t0 , y0 ) = α + hf (t0 , w0 ).

8


Hình 3: Nghiệm xấp xỉ thu được bởi phương pháp Euler.

3.2

Thuật toán

Để xấp xỉ bài toán giá trị ban đầu
y = f (t, y),

a ≤ t ≤ b,

y(a) = α

INPUT: Nhập f (t, y), a, b, số nút N , giá trị ban đầu α.
OUTPUT: Nghiệm xấp xỉ của y(t) và giá trị xấp xỉ y(t) tại mỗi bước lặp.
THUẬT TOÁN
B1: Đặt h := (b − a)/N, w = α, i = 0.
B2: Kiểm tra nếu i ≤ N − 1 thì đến B3, ngược lại thì dừng.
B3: Đặt w := w + hf (t, w) (tính wi ), đặt t = a + ih (tính ti ), i := i + 1 (tính lần lặp).

B4: Xuất nghiệm xấp xỉ w.
B5: Dừng.
Ví dụ 3.2.1. Áp dụng phương pháp Euler để tìm nghiệm xấp xỉ của bài toán
y = y − t2 + 1,

0 ≤ t ≤ 2,

y(0) = 0.5,

TH1: h = 0.5, N = 4.

Hình 4: Kết quả chạy trên Matlab với h = 0.5.

9


TH2: h = 0.2, N = 10

Hình 5: Kết quả khi h = 0.2, N = 10.

Hình 6: Sai số tuyệt đối trong từng bước khi h = 0.2.

Ta thấy sai số của phương pháp Euler khá lớn, tăng nhẹ theo t. Sai số tăng không theo quy
luật nên phương pháp Euler không ổn định.

10


Hình 7: Biểu diễn đồ thị của nghiệm chính xác (exact) và hai nghiệm xấp xỉ Euler.


3.3

Ước lượng sai số

Mặc dù phương pháp Euler không đủ tính chính xác để sử dụng trong thực hành nhưng ta có
thể dễ dàng phân tích được sai số của nó. Sai số của các phương pháp khác được trình bày
trong các mục sau trong bài viết này có độ chính xác cao hơn nhưng cũng khó khăn hơn trong
việc phân tích. Đầu tiên ta xem xét hai bổ đề sau
Bổ đề 3.1
Với mọi x ≥ −1, m > 0 thì
0 ≤ (1 + x)m ≤ emx .
Chứng minh
Với x ≥ −1 thì dễ có được x + 1 ≤ ex , nên với m > 0 thì 0 ≤ (1 + x)m ≤ (ex )m = emx .
Bổ đề 3.2
Nếu s, t > 0 và {ai }ki=0 là dãy thỏa a0 ≥ −t/s, và ai+1 ≤ (1 + s)ai + t,
ai+1 ≤ e(i+1)s a0 +

11

t
s

t
− .
s

i =, ..., k − 1 thì


Chứng minh

Ta có
ai+1 ≤ (1 + s)ai + t
≤ (1 + s)[(1 + s)ai−1 + t] + t = (1 + s)2 ai−1 + [1 + (1 + s)]t
.. . .
≤ (1 + s)i+1 a0 + [1 + (1 + s) + . . . (1 + s)i ]t
(1 + s)i+1 − 1
≤ (1 + s)i+1 a0 +
t
s
t
t
= (1 + s)i+1 a0 +

(theo Bổ đề 3.1)
s
s
t
t
− .
≤ e(i+1)s a0 +
s
s
Định lý 3.3.1: Cận trên sai số của nghiệm xấp xỉ bằng phương pháp Euler
Giả sử f thỏa điều kiện Lipschitz với hằng số L trên D = {(t, y)|a ≤ t ≤ b, −∞y < +∞}và
tồn tại M > 0 sao cho
|y (t)| ≤ M ∀t ∈ [a, b],
Với y(t) là nghiệm duy nhất của bài toán giá trị ban đầu (1).
Đặt w0 , w1 , . . . , wN là các nghiệm xấp xỉ sinh bởi phương pháp Euler với N > 0. Khi đó
với mỗi i = 0, 1, . . . , N,
hM L(ti −a)

[e
− 1].
|y(ti ) − wi | ≤
2L
Chứng minh
Ta có
y(ti+1 ) = y(ti ) + hf (ti , y(ti )) +

h2
y (ζi ),
2

Với i = 0, . . . , N − 1, ζi ∈ (ti , ti+1 ). và
wi+1 = wi + hf (ti , wi )
Kí hiệu yi = y(ti ) và yi+1 = y(ti+1 ) Suy ra
yi+1 − wi+1

h2
= yi − wi + h[f (ti , yi ) − f (ti , wi )] + y (ζi )
2

Do đó
|yi+1 − wi+1 | ≤ |yi − wi | + h|f (ti , yi ) − f (ti , wi )| +

h2
|y (ζi )|
2

Do f thỏa điều kiện Lipschitz, |y (t)| ≤ M và áp dụng Bổ đề 3.2 ta có
|yi+1 − wi+1 | ≤ (1 + hL)|yi − wi | +


h2 M
h2 M
≤ . . . ≤ e(i+1)hL |y0 − w0 | +
2
2hL

Vì |y0 − w0 | = 0 và (i + 1)h = ti+1 − t0 = ti+1 − a, suy ra
|yi+1 − wi+1 | ≤

hM (ti+1 −a)L
(e
− 1).
2L
12



h2 M
.
2hL


Với i = −1, 0, 1. . . N − 1.
*Lưu ý:
dy
df
∂f
∂f
y (t) =

(t) = (t, y(t)) =
(t, y(t)) +
(t, y(t)).f (t, y(t))
dt
dt
∂t
∂y
Như vậy ta có thể xác định chặn trên của |y (t)| mà không cần biết y(t).
Ví dụ 3.3.1. Bài toán giá trị ban đầu
y = y − t2 + 1,

0 ≤ t ≤ 2,

y(0) = 0.5,

với cách xấp xỉ Euler với h = 0.2. Sử dụng bất đẳng thức trong định lý trên để tìm cận trên
của ước lượng sai số và so sánh với sai số thực.
Vì f (t, y) = y − t2 + 1, fy = 1 nên hằng số Lipschitz L = 1. Với bài toán này, nghiệm chính xác
là y(t) = (t + 1)2 − 0.5et nên y = 2 − 0.5et và |y (t)| ≤ 0.5e2 − 2, ∀t ∈ [0, 2].
Sử dụng bất đẳng thức trên với h = 0.2, L = 1, M = 0.5e2 − 2
|yi − wi | ≤ 0.1(0.5e2 − 2)(eti − 1).
Vì vậy
|y(0.2) − w1 | ≤ 0.1(0.5e2 − 2)(e0.2 − 1) = 0.03752
|y(0.4) − w2 | ≤ 0.1(0.5e2 − 2)(e0.4 − 1) = 0.08334
Ta thu được bảng sau
ti Sai số tuyệt đối |yi − wi | Cận trên sai số
0.2
0.02930
0.03752
0.4

0.06209
0.08334
0.6
0.09854
0.13931
0.8
0.13875
0.20767
1.0
0.18268
0.29117
1.2
0.23013
0.39315
1.4
0.28063
0.51771
1.6
0.33336
0.66985
1.8
0.38702
0.85568
2.0
0.43969
1.08264
Để ý rằng cận trên sai số lớn hơn sai số tuyệt đối và tăng theo t.

3.4


Hiệu chỉnh sai số

Nhận xét 3.4.1. Mục đích chính của đánh giá chặn trên sai số là để ta thấy được cận trên
phụ thuộc tuyến tính theo h. Do đó, bước nhảy h càng nhỏ thì nghiệm xấp xỉ càng chính xác.
Trong thực tế, phương trình sai phân dạng
w0 = α
wi+1 = wi + hf (ti , wi ),

i = 0, . . . , N − 1

không được sử dụng để tính toán xấp xỉ nghiệm yi tại điểm ti vì xuất hiện sai số tại mỗi bước
tính toán nên ta phải giải bài toán nhiễu của nó có dạng sau
u0 = α + δ0
ui+1 = ui + hf (ti , ui ) + δi+1 ,

i = 0, 1, . . . ., N − 1

Với δi là sai số làm tròn của ui . Sử dụng phương pháp tương tự chứng minh của Định lý 3.2.1
ta cũng sẽ có ước lượng chặn trên sai số cho phương pháp Euler được trình bày ở định lý sau
13


Định lý 3.4.1
Đặt y(t) là nghiệm duy nhất của bài toán ban đầu
y = f (t, y),

a ≤ t ≤ b,

y(a) = α


Và u0 , .., uN là các xấp xỉ thu được bởi
u0 = α + δ0
ui+1 = ui + hf (ti , ui ) + δi+1 ,

i = 0, 1, . . . ., N − 1

Nếu |δi | < δ vói mọi i = 0, . . . , N − 1 khi đó
|y(ti ) − ui | ≤

1
L

hM
δ
+
2
h

[eL(ti −a) − 1] + |δ0 |eL(ti −a) ,

Chứng minh
Ta có
y(ti+1 ) = y(ti ) + hf (ti , y(ti )) +

i = 0, . . . , N.

h2
y (ζi ),
2


Với i = 0, . . . , N − 1, ζi ∈ (ti , ti+1 ) và
ui+1 = ui + hf (ti , wi ) + δi+1
Kí hiệu yi = y(ti ) và yi+1 = y(ti+1 ).
Suy ra
yi+1 − ui+1 = yi − ui + h[f (ti , yi ) − f (ti , ui )] +
Do đó
|yi+1 − ui+1 | ≤ |yi − ui | + h|f (ti , yi ) − f (ti , ui )| +

h2
y (ζi ) − δi+1
2
h2
|y (ζi )| + |δi+1 |
2

Do f thỏa điều kiện Lipschitz, |y (t)| ≤ M , |δi | < δ và áp dụng Bổ đề 3.2 ta có
h2 M
+ δ ≤ ...
2
hM
δ
hM
δ
|y0 − w0 | +
+


2L
hL
2L

hL

|yi+1 − ui+1 | ≤ (1 + hL)|yi − ui | +
≤ e(i+1)hL

Vì |y0 − w0 | = |δ0 | và (i + 1)h = ti+1 − t0 = ti+1 − a, suy ra
|yi+1 − ui+1 | ≤

1
L

hM
δ
+
2L
hL

(e(ti+1 −a)L − 1) + |δ0 |eL(ti+1 −a)

Với i = −1, 0, 1. . . N − 1.
Nhận xét 3.4.2. Cận trên của sai số lúc này không phụ thuộc tuyến tính theo h. Thực tế, vì
lim

h→0

hM
δ
+
2
h


=∞

nên sai số lớn dần với giá trị đủ nhỏ của h. Trong tính toán ta có thể sử dụng nhận xét này để
xác định cận dưới nhỏ nhất của bước nhảy h.
14


Đặt E(h) =

δ
M
δ
hM
+ , khi đó E (h) =
− 2.
2
h
2
h
Nếu h <

2δ/M , thì E (h) < 0 và E(h) là hàm tăng.

Nếu h >

2δ/M , thì E (h) > 0 và E(h) là hàm giảm.

Giá trị nhỏ nhất của E(h) đạt được khi h = 2δ/M .
Khi h giảm dưới giá trị này thì sẽ dẫn đến sự tăng của tổng sai số trong xấp xỉ. Thông thường,

giá trị δ sẽ đủ nhỏ sao cho cận dưới của h không ảnh hưởng tới thuật toán Euler.
Nhận xét 3.4.3. Qua ví dụ trên ta thấy dù dễ dàng áp dụng nhưng sai số của phương pháp
Euler khá lớn, có tính không ổn định trừ khi h chọn đủ nhỏ.

4

Phương pháp Taylor bậc cao

4.1

Sai số chặt cụt

Đối tượng của Phương pháp số là xác định nghiệm xấp xỉ với sai số nhỏ nhất có thể. Các
phương pháp xấp xỉ nghiệm của bài toán giá trị đầu được bàn đến trong bài viết này đều tìm
nghiệm xấp xỉ rời rạc, cụ thể hơn là nghiệm xấp xỉ tại các giá trị ti . Do đó để so sánh hiệu quả
của các phương pháp này, ta cần xem xét đến sai số tại mỗi thời điểm ti , sai số này được gọi
là sai số chặt cụt địa phương.
Sai số chặt cụt địa phương (local truncation error) thể hiện sự chênh lệch giữa nghiệm chính
xác và nghiệm xấp xỉ từ phương trình sai phân thu được tại mỗi bước cụ thể và từ đó ta có
thể xác định được sai số tuyệt đối. Tuy nhiên, ta đang cần tìm nghiệm chính xác nên thông
thường không thể xác định được sai số chặt cụt địa phương.
Định nghĩa 4.1.1: Sai số chặt cụt địa phương
Xét bài toán giá trị ban đầu
y = f (t, y) a ≤ t ≤ b,

y(a) = α.

Có phương trình sai phân
w0 = α,
wi+1 = wi + hφ(ti , wi ),


i = 0, ..., N − 1.

Khi đó Sai số chặt cụt địa phương được kí hiệu là τi+1 (h) được xác định bởi
τi+1 (h) =

yi+1 − yi
yi+1 − (yi + hφ(ti , yi ))
=
− φ(ti , yi ) i = 0, ..., N − 1.
h
h

15


Định nghĩa 4.1.2: Sai số chặt cụt toàn cục
Ta định nghĩa Sai số chặt cụt toàn cục tại tk là
yk − y0
ek =

h

k−1

φ(ti , wi ),

k = 1, .., N.

i=1


với wi ≈ yi , i = 1, .., k − 1.
Dãy nghiệm xấp xỉ được gọi là hội tụ nếu
lim max |ek | = 0

k→∞

k

Mối liên hệ giữa sai số chặt cụt địa phương và toàn cục:
ek+1

yk+1 − y0
=

h
=

yk − y0

h

k

φ(ti , wi )

i=1
k−1

φ(ti , wi ) +

i=1

yk+1 − yk
− φ(tk , wk )
h

= ek + φ(tk , yk ) − φ(tk , wk ) + τk+1 .
Mà hàm φ Lipschitz theo y tức là |φ(t, x) − φ(t, y)| ≤ L|x − y| nên
maxi |τi | L(b−a)
(e
− 1)
(4.1)
hL
Nhận xét 4.1.1. Từ đánh giá (4.1) ta thấy sai số chặt cụt cục bộ có bậc nhỏ hơn một so với
sai số chặt cụt địa phương.
|ek | ≤

Nhận xét 4.1.2. Phương pháp Euler có sai số chặt cụt địa phương tại bước thứ i là
yi+1 − yi
τi+1 (h) =
− f (ti , yi ) i = 0, ..., N − 1.
h
Sai số trên là sai số địa phương (local error) vì nó chỉ đo lường độ chính xác của phương pháp
tại một bước cụ thể, với giả sử rằng phương pháp được thực hiện chính xác tại bước trước. Vì
vậy sai số địa phương phụ thuộc vào phương trình đạo hàm riêng, bước nhảy h và nghiệm xấp
xỉ tại mỗi bước.
h
y (ζi ) ζi ∈ (ti , ti+1 ).
2
Nếu y (t) bị chặn bởi M > 0 trên [a, b] thì

τi+1 (h) =

hM
.
2
Do dó sai số chặt cụt địa phương của phương pháp Euler là O(h). Khi h → 0 thì O(h) → 0.
Một cách lựa chọn phương pháp phương trình sai phân để giải phương trình vi phân thường
đó là sai số chặt cụt địa phương bằng O(hp ), với giá trị của p có thể lớn hơn, hp → 0 nhanh
hơn, O(hp ) → 0 nhanh hơn, thuật toán chính xác hơn, trong khi độ phức tạp tính toán ở trong
giới hạn chấp nhận được.
Phương pháp Euler sử dụng định lý Taylor với n = 1 để tìm nghiệm xấp xỉ, có sai số chặt
cụt địa phương lớn. Cho nên chúng ta cần phải tìm những phương pháp cải thiện sự hội tụ
của phương pháp Euler, cụ thể hơn là mở rộng việc áp dụng định lý Taylor với các giá trị lớn
hơn của n nhằm có được sai số chặt cụt nhỏ hơn. Một trong những phương pháp đó chính là
phương pháp Taylor bậc n.
|τi+1 (h)| ≤

16


4.2

Phương pháp Taylor bậc n

Giả sử bài toán phương trình vi phân ban đầu có dạng
y = f (t, y),

a ≤ t ≤ b,

y(a) = α


y khả vi liên tục cấp n + 1. Khai triển Taylor y(t) tại ti và thay t = ti+1 ta được
y(ti+1 ) = y( ti ) + hy (ti ) +

hn
hn+1 (n+1)
h2
y (ti ) + ... + y (n) (ti ) +
y
(ζi )
2
n!
(n + 1)!

với ζi ∈ (ti , ti+1 ), i = 0, ..., n.
Thay y (t) = f (t, y(t)), y (t) = f (t, y(t)), ... y (n) (t) = f n−1 (t, y(t)) ta có
yti+1 = y(ti ) + hf (ti , y(ti )) +

h2
hn
hn+1 (n)
f (ti , y(ti )) + ... + f (n−1) (ti , y(ti )) +
f (ζi , y(ζi )).
2
n!
(n + 1)!

Phương pháp Taylor bậc n thu được bằng cách wi ≈ y(ti ) và bỏ đi phần dư

hn+1 (n)

f (ζi , y(ζi )).
(n + 1)!

Từ đó ta có dãy nghiệm xấp xỉ.
Phương pháp Taylor bậc n
w0 = α,
wi+1 = wi + hT (n) (ti , wi ),

i = 0, ..., N − 1.

Trong đó,
h
hn−1 (n−1)
T (n) (ti , wi ) = f (ti , wi ) + f (ti , wi ) + ... +
f
(ti , wi ).
2
n!
Dễ thấy phương pháp Euler là phương pháp Taylor bậc 1.
Ví dụ 4.2.1. Áp dụng Taylor bậc hai và bậc bốn với N = 10 cho bài toán giá trị đầu
y = y − t2 + 1,

0 ≤ t ≤ 2,

y(0) = 0.5

Giải
Ta có
y = f (t, y) = y − t2 + 1
f (t, y) = y − 2t = y − t2 − 2t + 1

f (t, y) = y − 2t − 2 = y − t2 − 2t − 1
f (t, y) = y − 2t − 2 = y − t2 − 2t − 1
Do đó
h
T 2 (ti , wi ) = f (ti , wi ) + f (ti , wi )
2
h
2
= wi − ti + 1 + (wi − t2i + 1 − 2ti )
2
h
h2
h3
T 4 (ti , wi ) = f (ti , wi ) + f (ti , wi ) + f (ti , wi ) + f (ti , wi )
2
6
24
2
h
h
h3
2
2
2
= wi − ti + 1 + (wi − ti + 1 − 2ti ) + (wi − ti − 2ti − 1) + (wi − t2i − 2ti − 1)
2
6
24
2
h h2 h3

h
h
h
h2 h3
= 1+ +
+
(wi − t2i ) − 1 + +
hti + 1 + −
− .
2
6
24
3 12
2
6
24
17


Như vậy phương pháp Taylor bậc hai là
w0 = 0.5,
h
wi+1 = wi + h wi − t2i + 1 + (wi − t2i + 1 − 2ti )
2
với i = 0, .., N − 1. Ta xét N = 10, h = 0.2 khi đó
wi+1 = 1.22wi − 0.0088i2 − 0.008i + 0.22
Phương pháp Taylor với bậc bốn là
w0 = 0.5,
wi+1 = wi + h


1+

h h2 h3
+
+
2
6
24

(wi − t2i ) − 1 +

h h2
+
3 12

hti + 1 +

với i = 0, .., N − 1. Ta xét N = 10, h = 0.2 khi đó
wi+1 = 1.2214wi − 0.008856i2 − 0.00856i + 0.2186

Hình 8: Thuật toán và kết quả Taylor bậc 2 trên Matlab

18

h h2 h3


h
6
24



Hình 9: Thuật toán và kết quả Taylor bậc 4 trên Matlab
Kết quả thu được trong bảng sau

Hình 10: Kết quả và sai số của phương pháp Taylor bậc hai.

19


Hình 11: Kết quả và sai số của phương pháp Taylor bậc bốn.

Hình 12: Biểu diễn đồ thị của các nghiệm xấp xỉ bằng Taylor.

20


So sánh hai kết quả trên ta thấy phương pháp Taylor bậc bốn cho kết quả chính xác cao
hơn so với bậc hai. Định lý sau sẽ cho ta thấy rõ được nhận xét này.
Định lý 4.2.1
Nếu phương pháp Taylor bậc n xấp xỉ nghiệm
y = f (t, y(t)),

a ≤ t ≤ b, y(a) = α,

với bước nhảy h và y ∈ C k+1 [a, b] thì sai số chặt cụt địa phương là O(hn ).
Chứng minh
Ta có
yi+1 − yi − hf (ti , yi ) −


hn
hn+1 (n)
h2
f (ti , yi ) − ... − f (n−1) (ti , yi ) =
f (ζi , y(ζi )),
2
n!
(n + 1)!

với ζi ∈ (ti , ti+1 ). Do đó sai số chặt cụt địa phương là
τi+1 (h) =

yi+1 − yi
hn
− T (n) (ti , yi ) =
f (n) (ζi , y(ζi )),
h
(n + 1)!

với i = 0, .., N − 1. Vì y ∈ C n+1 [a, b] nên ta có y (n+1) (t) = f (n) (t, y(t)) bị chặn trên [a, b] và do
đó với i = 1, ..., N
τi (h) = O(hn )

5

Phương pháp Runge-Kutta

Phương pháp Taylor bậc cao được trình bày ở phần trước có khai thác sai số chặt cụt địa
phương nhưng nhược điểm của nó yêu cầu tính toán cồng kềnh các đạo hàm f (t, y) của T (n) ,
nên thực tế phương pháp này ít được áp dụng.

Phương pháp Runge-Kutta có sai số chặt cụt địa phương của phương pháp Taylor bậc cao
nhưng giảm thiểu được việc tính toán và làm tròn các đạo hàm của f (t, y). Trước khi trình
bày ý tưởng chính của phương pháp này, ta cần xem xét định lý khai triền Taylor cho hàm hai
biến.

21


Định lý 5.0.1: Khai triển Taylor cho hàm hai biến
Giả sử f (t, y) và các đạo hàm riêng khả vi liên tục cấp n + 1 trên D =
{(t, y)|a ≤ t ≤ b, c ≤ y ≤ d} và (t0 , y0 ) ∈ D. Với mọi (t, y) ∈ D, tồn tai ζ nằm giữa t
và t0 sao cho
f (t, y) = Pn (t, y) + Rn (t, y).
Trong đó
∂f
∂f
(t0 , y0 ) + (y − y0 )
∂t
∂y
2 2
(y − y0 )2 ∂ 2 f
(t − t0 ) ∂ f
∂ 2f
(t
,
y
)
+
+
(t

,
y
)
+
(t

t
)(y

y
)
(t0 , y0 ) + ...
0
0
0
0
0
0
2
∂t2
∂t∂y
2
∂y 2

Pn (t, y) = f (t0 , y0 ) + (t − t0 )

1
+
n!


n

Cjn (t − t0 )n−j (y − y0 )j
j=0


Rn (t, y) =

1
(n + 1)!

∂ nf
(t0 , y0 )
∂tn−j ∂y j

n+1
j
Cn+1
(t − t0 )n+1−j (y − y0 )j
j=0

∂ n+1 f
(ζ, γ).
∂tn+1−j ∂y j

Hàm Pn (t, y) được gọi là đa thức Taylor bậc n hai biến của f tại (t0 , y0 ) và Rn (t, y) là
phần dư.

5.1


Phương pháp Runge-Kutta bậc hai

Bước đầu tiên xác định các giá trị α1 , β1 để xấp xỉ T (2) theo f (t + α1 , y + β1 )
h
T (2) (t, y) = f (t, y) + f (t, y)
2
với sai số không lớn hơn O(h2 ), giống như sai số chặt cụt địa phương cho phương pháp Taylor
bậc hai. Vì
df
∂f
∂f
f (t, y) = (t, y) =
(t, y) +
(t, y).y (t), y (t) = f (t, y)
dt
∂t
∂y
Ta có
T (2) (t, y) = f (t, y) +

h ∂f
h ∂f
(t, y) +
(t, y).f (t, y)
2 ∂t
2 ∂y

(5.1)

Theo Định lý 5.0.1 biểu diễn f (t + α1 , y + β1 ) bởi đa thức Taylor bậc một với (t, y) ta được

a1 f (t + α1 , y + β1 ) = a1 f (t, y) + a1 α1
+ a1 β 1

∂f
(t, y)
∂t

∂f
(t, y) + a1 R1 (t + α1 , y + β1 ),
∂y

(5.2)

Với
R1 (t + α1 , y + β1 ) =

∂ 2f
β12 ∂ 2 f
α12 ∂ 2 f
(ζ,
γ)
+
α
β
(ζ,
γ)
+
(ζ, γ),
1 1
2 ∂t2

∂t∂y
2 ∂y 2

22

(5.3)


với ζ nằm giữa t, t + α1 và γ nằm giữa y, y + β1 .
Từ (5.1) (5.2) đồng nhất hệ số ta được
h
∂f
(t, y) : a1 α1 ;
∂t
2

f (t, y) : a1 = 1;

∂f
h
(t, y) : a1 β1 = f (t, y).
∂y
2

Suy ra
a1 = 1,
Do đó
T (2) (t, y) = f

α1 =


h
,
2

β1 =

h
f (t, y).
2

h
h
h
h
t + , y + f (t, y) − R1 t + , y + f (t, y)
2
2
2
2

và từ (5.3) ta có
h
h
R1 t + , y + f (t, y)
2
2

=


h2 ∂ 2 f
∂ 2f
h2 2
∂ 2f
h2
f
(t,
y)
(ζ,
γ)
+
f
(t,
y)
(ζ,
γ)
+
(ζ, γ).
8 ∂t2
4
∂t∂y
8
∂y 2

h
h
Nếu các đạo hàm riêng cấp hai của f bị chặn thì R1 t + , y + f (t, y) là O(h2 ). Như vậy
2
2
bậc của sai số cho phương pháp mới này giống như phương pháp Taylor bậc hai.

Kết quả thu được từ việc thay T (2) (t, y) trong phương pháp Taylor bậc hai bởi f (t+h/2, y +
(h/2)f (t, y)) là một trường hợp đặc biệt của phương pháp Runge-Kutta, được gọi là phương
pháp trung điểm.

5.2

Phương pháp trung điểm

Dãy nghiệm xấp xỉ của y xây dựng bởi phương pháp trung điểm như sau
w0 = α,
wi+1 = wi + hf

h
h
ti + , wi + f (ti , wi )
2
2

i = 0, 1, ..., N − 1.

Ta chỉ cần xác định ba tham số trong a1 f (t + α1 , t + β1 ) để xác định T (2) . Với T (3) ta cần có
bốn tham số cho xấp xỉ được xác định như sau
h2
h
T (3) (t, y) = f (t, y) + f (t, y) + f (t, y)
2
6
h ∂f
h ∂f
h2

= f (t, y) +
(t, y) +
(t, y).f (t, y) + f (t, y)
2 ∂t
2 ∂y
6

(5.4)

được xấp xỉ bởi
a1 f (t, y) + a2 f (t + α2 , y + δ2 f (t, y))
a1 f (t, y) + a2 f (t + α2 , y + δ2 f ) = (a1 + a2 )f (t, y) + a2 α2
+ a2 R2 (t + α2 , y + δ2 f ),

∂f
∂f
(t, y) + a2 δ2 f (t, y)
∂t
∂y
(5.5)

Mặc dù (5.4) có bốn tham số, tuy nhiên ta có thể linh hoạt lựa chọn nên số O(h2 ) có thể thay
đổi, chọn a1 = a2 = 1/2, α2 = δ2 = h ta thu được phương pháp Euler hiệu chỉnh.

5.3

Phương pháp Euler hiệu chỉnh
23



Dãy nghiệm xấp xỉ thu được bởi phương pháp Euler hiệu chỉnh như sau
w0 = α
h
wi+1 = wi + [f (ti , wi ) + f (ti+1 , wi + hf (ti , wi ))] i = 0, ..., N − 1
2
Ví dụ 5.3.1. Sử dụng phương pháp trung điểm và phương pháp Euler hiệu chỉnh với n =
10, h = 0.2, ti = 0.2i, w0 = 0.5 để xấp xỉ nghiệm của bài toán
y = y − t2 + 1,

0 ≤ t ≤ 2,

y(0) = 0.5

Giải
Sử dụng phương pháp trung điểm và phương pháp Euler hiệu chỉnh với n = 10, h = 0.2, ti =
0.2i, w0 = 0.5 để xấp xỉ nghiệm của bài toán
y = y − t2 + 1,

0 ≤ t ≤ 2,

y(0) = 0.5

Giải
Phương pháp trung điểm: wi+1 = 1.22wi − 0.0088i2 − 0.008i + 0.218
Phương pháp Euler hiệu chỉnh: wi+1 = 1.22wi − 0.0088i2 − 0.008i + 0.216
với i = 0, ..., 9.

Hình 13: Thuật toán cho phương pháp trung điểm trên Matlab và Kết quả.

24



Hình 14: Thuật toán cho phương pháp Euler hiệu chỉnh trên Matlab và Kết quả.

Hình 15: Biểu diễn nghiệm xấp xỉ cho phương pháp trung điểm và Euler hiệu chỉnh.

25


×