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

LUẬN VĂN PHƯƠNG PHÁP XẤP XỈ EULER TRONG 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 (899.32 KB, 55 trang )

BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TRẦN THỊ NGÂN

PHƢƠNG PHÁP XẤP XỈ EULER
TRONG PHƢƠNG TRÌNH VI PHÂN THƢỜNG

Chuyên ngành: Phƣơng pháp Toán sơ cấp
Mã số:60.46.40

LUẬN VĂN THẠC SĨ KHOA HỌC

Ngƣời hƣớng dẫn khoa học: TS. LÊ HẢI TRUNG

Đà Nẵng - Năm 2013


LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi .
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng
ai công bố trong bất cứ công trình nào khác.
Đà Nẵng, tháng 11 năm 2013.
Tác giả luận văn

Trần Thị Ngân


MỤC LỤC
MỞ ĐẦU
1. Tính cấp thiết của đề tài .................................................................... 1


2. Mục tiêu nghiên cứu của đề tài.......................................................... 1
3. Đối tượng và phạm vi nghiên cứu .................................................... 2
4. Ý nghĩa và thực tiễn của đề tài .......................................................... 2
5. Cấu trúc của luận văn ........................................................................ 2
CHƯƠNG 1. MỘT SỐ KIẾN THỨC CHUẨN BỊ ...................................... 3
1.1. PHƯƠNG TRÌNH VI PHÂN THƯỜNG ................................................. 3
1.1.1. Định nghĩa .................................................................................... 3
1.1.2. Nghiệm phương trình vi phân thường .......................................... 3
1.2. SỰ TỒN TẠI VÀ DUY NHẤT NGHIỆM CỦA PHƯƠNG TRÌNH VI
PHÂN THƯỜNG BẬC NHẤT ........................................................................ 4
1.2.1. Định nghĩa về điều kiện Lipschitz ................................................ 4
1.2.2. Định lý về tồn tại và duy nhất nghiệm của phương trình vi phân
thường bậc nhất ................................................................................................ 4
1.3. MỘT SỐ PHƯƠNG PHÁP XẤP XỈ THƯỜNG DÙNG .......................... 4
1.3.1. Phương pháp giải tích ................................................................... 5
1.3.2. Phương pháp số............................................................................. 6
CHƯƠNG 2. PHƯƠNG PHÁP EULER CHO PHƯƠNG TRÌNH VI
PHÂN THƯỜNG ............................................................................................ 7
2.1. GIỚI THIỆU PHƯƠNG PHÁP EULER ................................................... 7
2.1.1. Nguồn gốc phương pháp Euler..................................................... 7
2.1.2. Thành lập công thức của phương pháp Euler ............................... 8
2.1.3. Thuật toán phương pháp euler .................................................... 10
2.2. SAI SỐ TRONG PHƯƠNG PHÁP EULER ........................................... 13


2.2.1. Sai số địa phương........................................................................ 13
2.2.2. Sai số tích lũy (sai số toàn phần) ............................................... 14
2.3. PHƯƠNG PHÁP EULER TRONG PHƯƠNG TRÌNH VI PHÂN
THƯỜNG........................................................................................................ 20
2.4. MỘT SỐ BÀI TOÁN TÌM NGHIỆM GẦN ĐÚNG VỚI PHƯƠNG

PHÁP XẤP XỈ EULER TRONG PHƯƠNG TRÌNH VI PHÂN THƯỜNG 21
2.5. ƯU ĐIỂM VÀ HẠN CHẾ CỦA PHƯƠNG PHÁP XẤP XỈ EULER
TRONG PHƯƠNG TRÌNH VI PHÂN THƯỜNG ........................................ 29
2.5.1. Ưu điểm- tính ổn định của phương pháp Euler .......................... 29
2.5.2. Hạn chế trong phương pháp Euler.............................................. 30
2.6. PHÁT TRIỂN VÀ SO SÁNH PHƯƠNG PHÁP EULER VỚI MỘT SỐ
PHƯƠNG PHÁP KHÁC ................................................................................ 33
CHƯƠNG 3. ỨNG DỤNG PHẦN MỀM MATHEMATICA CHO
PHƯƠNG PHÁP XẤP XỈ EULER ............................................................. 37
3.1. GIỚI THIỆU VỀ PHẦN MỀM MATHEMATICA ................................ 37
3.2. ỨNG DỤNG PHẦN MỀM MATHEMATICA CHO PHƯƠNG PHÁP
XẤP XỈ EULER.............................................................................................. 38
KẾT LUẬN .................................................................................................... 47
DANH MỤC TÀI TIỆU THAM KHẢO..................................................... 48
QUYẾT ĐỊNH GIAO ĐỀ TÀI (bản sao)


DANH MỤC CÁC BẢNG
Số hiệu

Tên bảng

Trang

Xấp xỉ Euler bài toán y = y + 1, y(0) = 1 với h = 0.2,

13

bảng
2.1


h = 1 và giá trị nghiệm chính xác
17

2.3

Xấp xỉ Euler bài toán y = y − 1, y(0) = 1 với bước lặp nhỏ dần
1
Xấp xỉ Euler bài toán y = (y − 1)2 , y(0) = 2 với h = 0.01,
2
h = 0.005 và giá trị nghiệm chính xác

2.4

Xấp xỉ Euler bài toán yy = 2x3 , y(1) = 3 với h = 0.01,

25

2.2

23

h = 0.005 và giá trị nghiệm chính xác
2.5

2.6
2.7

Xấp xỉ Euler bài toán y = 32 − 1.6v, y(0) = 0 với h = 0.01,
h = 0.005 và giá trị nghiệm chính xác

dy
Xấp xỉ Euler bài toán
= x2 + y 2 , y(0) = 1
dx
So sánh phương pháp Euler và Euler cải tiến với bài toán
dy
= x + y, y(0) = 1
dx

26

31
36


DANH MỤC CÁC HÌNH
Số hiệu

Tên hình vẽ

Trang

2.1

Ý nghĩa hình học của phương pháp Euler

8

2.2


Bước thực hiện từ (xn , yn ) đến (xn+1 , xn+1 )

9

2.3

12

2.4

Đồ thị nghiệm chính xác và nghiệm xấp xỉ bài toán
1
f (x, y) = x + y; y(0) = −3 với h = 1, h = 0.2, h = 0.05
5
Sai số địa phương trong phương pháp Euler

2.5

Sai số tích lũy trong phương pháp Euler

15

2.6

Đồ thị nghiệm chính xác và nghiệm xấp xỉ bài toán

19

hình


14

f (x, y) = ycosx; y(0) = 1 với số bước lặp là 50, 100, 200, 400
2.7

19

3.1

Đồ thị nghiệm chính xác và nghiệm xấp xỉ bài toán
1
f (x, y) = y(8 − y); y(0) = 1 với số bước lặp là 5, 10, 20
3
dy
Nghiệm chính xác của
= x2 + y 2 ; y(0) = 1
dx
dy
Giá trị thực và dự đoán của bài toán
= f (x, y); y(x0 ) = y0
dx
Tìm nghiệm chính xác bài toán ví dụ 2.1 với Mathematica

3.2

Tìm nghiệm chính xác bài toán ví dụ 2.9 với Mathematica

40

3.3


Đồ thị nghiệm chính xác y(x) = 2 − ex

40

2.8
2.9

3.4

3.5

1
Lập trình Mathematica tìm nghiệm xấp xỉ bài toán y = x + y
5
y(0) = 3, h = 0.2 trên [0, 1] theo phương pháp Euler
Lập trình Mathematica tìm nghiệm xấp xỉ bài toán ví dụ 2.9

32
33
39

41

41

theo phương pháp Euler
3.6

Giải ví dụ 2.5 (1)


42

3.7

Giải ví dụ 2.5 (2)

43

3.8

Giải ví dụ 2.5 (3)

43


Số hiệu

Tên hình vẽ

Trang

hình
3.9

Giải ví dụ 2.5 (4)

44

3.10


Giải ví dụ 2.5 (5)

44

3.11

Giải ví dụ 2.5 (6)

45

3.12

Giải ví dụ 2.5 (7)

45

3.13

Giải ví dụ 2.5 (8)

45


1

MỞ ĐẦU
1. Tính cấp thiết của đề tài
Trong khoa học kỹ thuật chúng ta thường gặp rất nhiều bài toán
liên quan tới phương trình vi phân thường, tuy nhiên các phương trình

này thường phức tạp mà trong một số trường hợp cũng không thể tìm
được nghiệm tường minh. Hơn nữa, vì các công thức nghiệm thường phức
tạp, cồng kềnh nên việc khảo sát các tính chất của nó còn gặp nhiều khó
khăn. Trong kỹ thuật, người ta sử dụng các giá trị thu được bằng việc
giải gần đúng các (hệ) phương trình vi phân thường. Bởi vậy, việc nghiên
cứu các phương pháp giải gần đúng để tìm nghiệm các phương trình vi
phân này trở nên cấp thiết và tự nhiên.
Ngay từ thời Archimedes các phương pháp giải gần đúng đã được
xây dựng thông qua việc nghiên cứu và ước tính giá trị số π để xác định
diện tích hình tròn. Đến thế kỉ XVIII, các vấn đề tìm nghiệm gần đúng
được Loenhard Euler-nhà toán học người Thụy Sĩ phát triển và thu được
nhiều thành tựu rực rỡ. Cụ thể, ông được biết đến nhiều với việc sáng
tạo ra một chuỗi các phương pháp tính xấp xỉ, được sử dụng nhiều trong
tính toán, và phương pháp nổi tiếng nhất trong đó chính là phương pháp
Euler.
Với mong muốn là tìm hiểu và nghiên cứu về phương pháp xấp
xỉ nhằm đáp ứng nguyện vọng nghiên cứu khoa học của chính bản
thân, đồng thời được sự gợi ý và động viên của giáo viên hướng dẫn, tôi
mạnh dạn lựa chọn đề tài « Phương pháp xấp xỉ Euler trong phương
trình vi phân thường » làm đề tài luận văn thạc sĩ cho mình.
2. Mục tiêu nghiên cứu của đề tài
Mục tiêu của đề tài là sử dụng phương pháp xấp xỉ Euler để xem
xét và tìm nghiệm gần đúng của phương trình vi phân thường, từ đó
so sánh sai số với nghiệm chính xác của phương trình vi phân đó. Đồng
thời, nghiên cứu ứng dụng phần mềm Mathematica để viết chương trình
tìm nghiệm gần đúng theo phương pháp xấp xỉ Euler và mô tả nghiệm


2


chính xác của phương trình vi phân thường bằng đồ thị thông qua các
gói câu lệnh đã được lập trình.
3. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Nghiên cứu phương pháp Euler để tìm nghiệm
gần đúng cho phương trình vi phân thường và lập trình phương pháp
Euler trong Mathematica.
Phạm vi nghiên cứu: Nghiên cứu phương pháp Euler cho các bài toán
trong lý thuyết phương trình vi phân thường.
Phương pháp nghiên cứu: Tìm đọc tài liệu về phương pháp Euler và
các phương pháp tính xấp xỉ khác; phân tích tài liệu; hệ thống hóa; khái
quát hóa tài liệu và kiểm chứng.
4. Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài có ý nghĩa về mặt lý thuyết, có thể sử dụng như là tài liệu
tham khảo dành cho sinh viên và các đối tượng có mối quan tâm đến
phương pháp Euler cho phương trình vi phân thường.
5. Cấu trúc luận văn
Ngoài phần Mở đầu và Kết luận, luận văn gồm 3 chương
Chương 1: Kiến thức chuẩn bị. Chương này trình bày một số khái
niệm, định nghĩa, định lý về sự tồn tại và duy nhất nghiệm trong phương
trình vi phân thường và một số phương pháp tính xấp xỉ thường dùng.
Chương 2: Trình bày nội dung và sai số phương pháp xấp xỉ Euler
trong phương trình vi phân thường; đưa ra một số bài toán phương trình
vi phân được tìm nghiệm xấp xỉ theo phương pháp Euler; ưu điểm và
hạn chế của phương pháp Euler; đồng thời nêu bật lên việc phát triển
và so sánh phương pháp này với một số phương pháp xấp xỉ khác.
Chương 3: Giới thiệu phần mềm Mathematica và trình bày những
ứng dụng của phần mềm này trong phương pháp xấp xỉ Euler


3


CHƯƠNG 1

MỘT SỐ KIẾN THỨC CHUẨN BỊ

1.1

PHƯƠNG TRÌNH VI PHÂN THƯỜNG

1.1.1

Định nghĩa

Một phương trình vi phân thường có dạng tổng quát:
F (x, y, y , y ” , ..., y (n) ) = 0.

(1.1)

trong đó x là biến độc lập của phương trình (1.1), y là ẩn hàm, y , y ” , ...
là các đạo hàm của hàm y
Cấp của một phương trình vi phân thường là cấp cao nhất của đạo
hàm (hay vi phân) thực sự có mặt trong phương trình.
Phương trình vi phân thường cấp n có dạng tổng quát:
F (x, y, y , .., y (n) ) = 0

(1.2)

được gọi là phương trình vi phân cấp n. Trong đó y = y(x) là hàm cần
tìm.


1.1.2

Nghiệm phương trình vi phân thường

Hàm y = y(x) được gọi là nghiệm của phương trình vi phân (1.1) nếu
như trong phương trình (1.1) thay y = y(x),y = y (x),..., y (n) = y (n) (x)
ta nhận được:
F (x, y(x), y (x), .., y (n) (x)) = 0


4

1.2

SỰ TỒN TẠI VÀ DUY NHẤT NGHIỆM CỦA PHƯƠNG
TRÌNH VI PHÂN THƯỜNG BẬC NHẤT

1.2.1

Định nghĩa về điều kiện Lipschitz

Hàm f (x, y) thỏa mãn điều kiện Lipschitz trong miền D của mặt
phẳng Oxy theo biến y nếu tồn tại L > 0 (hằng số Lipschitz) sao cho
với ∀(x, y1 ), (x, y2 ) ∈ D:
|f (x, y1 ) − f (x, y2 )| ≤ L|y1 − y2 |
1.2.2

Định lý về sự tồn tại và duy nhất nghiệm của phương
trình vi phân thường bậc nhất


Cho phương trình vi phân thường bậc nhất
y = f (x, y)
y(x0 ) = y0 ,

(1.3)

và hàm f (x, y) có những tính chất sau đây:
1. Hàm f (x, y) xác định và liên tục tại một miền D nào đó của mặt
Oxy có chứa điểm (x0 , y0 ).
2. Hàm f (x, y) trong miền D thỏa mãn điều kiện Lipschitz theo
biến y với hằng số L > 0:
|f (x, y1 ) − f (x, y2 )| ≤ L|y1 − y2 |với ∀(x, y1 ), (x, y2 ) ∈ D.
Khi đó tồn tại duy nhất một nghiệm y = y(x) thỏa mãn điều kiện trên
đoạn [x0 − h, x0 + h], h > 0.
1.3

MỘT SỐ PHƯƠNG PHÁP XẤP XỈ THƯỜNG DÙNG

Nhiều bài toán khoa học kỹ thuật quy về việc tìm nghiệm phương
trình vi phân thỏa mãn một số điều kiện nào đó. Nhưng đa số các phương


5

trình vi phân mô tả hệ cơ, lý học, hóa học, sinh học nhìn chung rất phức
tạp. Chính vì vậy, các phương pháp giải gần đúng phương trình vi phân
rất được quan tâm, nghiên cứu.
Người ta phân biệt các phương pháp giải gần đúng thành hai loại:
phương pháp giải tích và phương pháp số.
1.3.1


Phương pháp giải tích

- Phương pháp xấp xỉ Picard
Xét bài toán (1.3) trong đó f xác định và liên tục trong miền G ⊂ R2 .
Ta có dãy xấp xỉ nghiệm Picard thông qua công thức quy nạp như sau:
y(x0 ) = y0
yn (x) = y0 +

x
x0

f (t, yn−1 (t))dt,

với n

1.

-Phương pháp chuỗi nguyên
Xét bài toán (1.3) trong đó f (x, y) giải tích trong lân cận (x0 , y0 ) tức
là:


aij (x − x0 )i (y − y0 )j .

f (x, y) =
i,j=0

Khi đó nghiệm đúng y ∗ (x) có thể khai triển thành chuỗi Taylor:




y (x) =
i=0

Các đạo hàm y

∗(i)

y ∗(i) (x0 )
(x − x0 )i .
i!

(x0 ) có thể tính được, nếu sử dụng (1.3):

y(x0 ) = y0
y (x) = f (x, y) → y (x0 ) = f (x, y)
δf δf
+ y
y (x) =
δx δy
δf
δf
⇒ y (x0 ) =
(x0 , y0 ) + (x0 , y0 )f (x0 , y0 )
δx
δy
...



6
1.3.2

Phương pháp số

- Phương pháp Euler
Xét bài toán (1.3), nghiệm xấp xỉ Euler của bài toán là:



xn+1 = xn + h



yn+1 = yn + hf (xn , yn ).

- Phương pháp Euler cải tiến
dy
Cho bài toán giá trị đầu:
= f (x, y), y(x0 ) = y0 .
dx
Phương pháp Euler cải tiến với bước h gồm các công thức truy hồi:
k1 = f (xn , yn ),

(1.4a)

un+1 = yn + hk1 ,

(1.4b)


k2 = f (xn+1 , un+1 ),
1
yn+1 = yn + h (k1 + k2 ).
2

(1.4c)
(1.4d)


7

CHƯƠNG 2

PHƯƠNG PHÁP EULER CHO PHƯƠNG TRÌNH
VI PHÂN THƯỜNG

2.1

GIỚI THIỆU PHƯƠNG PHÁP EULER

2.1.1

Nguồn gốc phương pháp Euler

Ta biết rằng không phải tất cả các phương trình vi phân dạng tổng
dy
quát
= f (x, y) đều có thể giải được chính xác dưới dạng hiển bằng
dx
các phương pháp như giải tích. Chẳng hạn, xét phương trình:

dy
2
= e−x .
(2.1)
dx
2
Nghiệm của phương trình (2.1) chỉ là một nguyên hàm của e−x . Nhưng
2
chúng ta biết rằng mọi nguyên hàm của f (x) = e−x đều không phải là
hàm sơ cấp nghĩa là hàm không thể biểu diễn được dưới dạng một biểu
thức giải tích. Vì vậy nghiệm của (2.1) không thể biểu diễn dưới dạng một
hàm sơ cấp. Mọi cố gắng sử dụng các phương pháp như phương pháp
chuỗi nguyên để tìm ra một công thức nghiệm dạng hiển của phương
trình (2.1) đều thất bại. Vấn đề trên đã được giải quyết trong thế kỉ
XVIII bằng phương pháp mang tên nhà toán học vĩ đại Euler.
Bài toán được lập để vẽ đường cong nghiệm từ điểm đầu (x0 , y0 ) của
phương trình y = f (x, y). Quá trình này được tiến hành như sau:
• Bút vẽ bắt đầu từ điểm đầu (x0 , y0 ) di chuyển một đoạn nhỏ theo
phương của tiếp tuyến tại (x0 , y0 ) sẽ có điểm (x1 , y1 ).
• Tại điểm (x1 , y1 ), bút vẽ đổi hướng và di chuyển một đoạn nhỏ theo
phương trình của tiếp tuyến tại (x1 , y1 ), sẽ có điểm (x2 , y2 ).
• Tại điểm (x2 , y2 ), tương tự như vậy sẽ có điểm (x3 , y3 ).
Hình (2.1) mô tả kết quả của quá trình nói trên: đó là đường gấp
khúc nối các điểm (x0 , y0 ), (x1 , y1 ), (x2 , y2 ),. . . . Tuy nhiên giả sử rằng mỗi


8

Hình 2.1: Ý nghĩa hình học của phương pháp Euler


"đoạn nhỏ" bút vẽ di chuyển dọc theo đoạn dốc tiếp tuyến rất nhỏ, nhỏ
đến mức bằng mắt thường không thể nhận ra được. Khi đó đường gấp
khúc được xem như đường cong trơn nghiệm của bài toán, đây cũng là
ý nghĩa hình học của phương pháp Euler.

2.1.2

Thành lập công thức của phương pháp Euler

Giải bài toán Cauchy:

 dy
= f (x, y),
dx
 y(x ) = y .
0
0

(2.2)

Vấn đề được đặt ra của bài toán là tìm gần đúng hàm nghiệm y(x) tại
một số điểm x1 , x2 , x3 , . . . , tức là tính các giá trị xấp xỉ y1 , y2 , y3 , . . . (giá
trị chính xác là y(x1 ), y(x2 ), y(x3 ), . . . tại các điểm x1 , x2 , x3 , . . . ).
Nếu các điểm chia xn , n = 0, 1, 2, . . . càng nhiều thì ta càng có hình
ảnh gần đúng của hàm nghiệm y(x).
Xét trường hợp các bước cách đều, tức là xn+1 −xn = h, n = 0, 1, 2, . . ..
Từ khai triển Taylor, giữ lại hai số hạng đầu ta có:
y (x0 )
y (ξ)
(x1 − x0 ) +

(x1 − x0 )2 .
1!
2!
hf (x0 , y0 )
y(x1 ) = y0 +
+ 0(h2 ).
1!

y(x1 ) = y(x0 ) +


9

Vậy ta có thể có :
hf (xn , yn )
.
1!
Ta nhận được công thức của phương pháp Euler như sau:
yn+1 ≈ yn +

yn+1 = yn + hf (xn , yn ).

(2.3)

Phương pháp Euler (ở thế kỉ XVIII ) chưa có ý tưởng sử dụng máy
tính để vẽ nên Euler tìm nghiệm bằng số.

Hình 2.2: Bước thực hiện từ (xn , yn ) đến (xn+1 , yn+1 )

dy

= f (x, y) với điều kiện y(x0 ) = y0
dx
trước hết ta chọn bước lặp h để sử dụng vẽ từng bước từ điểm này đến
điểm kia. Giả sử, bất đầu với điểm đầu (x0 , y0 ), sau n bước sẽ có điểm
(xn , yn ). Việc thực hiện vẽ từ điểm (xn , yn ) sang điểm (xn+1 , yn+1 ) được
xác định qua công thức thành lập (2.3) và được mô tả ở hình (2.2).
Độ dốc của đoạn đi được qua điểm (xn , yn ) là m = f (xn , yn ). Vì
mỗi thay đổi của h từ xn đến xn+1 tương ứng với sự thay đổi của
mh = hf (xn , yn ) từ yn đến yn+1 nên các tọa độ của điểm mới (xn+1 , yn+1 )
được cho bởi công thức dưới đây trong hệ tọa độ đã cho:
Trong phương trình vi phân

xn+1 = xn + h; yn+1 = yn + hf (xn , yn ).
Với bài toán (2.2) phương pháp Euler với bước lặp h bắt đầu từ điểm
ban đầu (x0 , y0 ) ta được:
x1 = x0 + h; y1 = y0 + hf (x0 , y0 ),


10

x2 = x1 + h; y2 = y1 + hf (x1 , y1 ),
x3 = x2 + h; y3 = y2 + hf (x2 , y2 ).
Tuy nhiên người ta không vẽ đường gấp khúc xấp xỉ. Thực vậy, kết
quả của phương pháp Euler là dãy xấp xỉ y1 , y2 , y3 , . . . với các giá trị
đúng y(x1 ), y(x2 ), y(x3 ), . . . tại các điểm x1 , x2 , x3 , . . . của nghiệm chính
xác y(x) (mặc dù chưa biết) của bài toán biên. Các giá trị tìm được thể
hiện dưới dạng bảng các giá trị xấp xỉ của bài toán đã cho.

2.1.3


Thuật toán phương pháp Euler

Xét phương trình vi phân (2.2). Để áp dụng phương pháp Euler với
bước lặp h ta áp dụng công thức:
yn+1 = yn + hf (xn , yn ); (n ≥ 0),
để tính các giá trị xấp xỉ y1 , y2 , y3 , . . . (giá trị chính xác là y(x1 ), y(x2 ), y(x3 ),
. . . của nghiệm chính xác y = y(x) tại các điểm x1 , x2 , x3 , . . . ).
Công thức truy hồi (2.3) nói cho ta biết cách tạo bước điển hình từ yn
đến yn+1 và đó là tâm điểm của phương pháp Euler. Để hiểu rõ phương
pháp và tiện so sánh các giá trị xấp xỉ và giá trị nghiệm chính xác, ta
xét Ví dụ 2.1.
Ví dụ 2.1. Dùng phương pháp Euler tìm nghiệm xấp xỉ của bài toán
giá trị ban đầu
dy
1
= x + y; y(0) = −3
dx
5
cho từng trường hợp sau:
a. h = 1 trên [0, 5].
b. h = 0.2 trên [0, 1].
1
Ở bài toán này f (x, y) = x + y với x0 = 0; y(0) = −3. Áp dụng
5
công thức của phương pháp Euler (2.3) ta có:
1
yn+1 = yn + h(xn + yn ).
5



11

a.Với h = 1:
1
1
y1 = y0 + h(x0 + y0 ) = (−3) + 1[0 + (−3)] = −3.6,
5
5
1
1
y2 = y1 + h(x1 + y1 ) = (−3.6) + 1[1 + (−3.6)] = −3.32,
5
5
1
1
y3 = y2 + h(x2 + y2 ) = (−3.32) + 1[2 + (−3.32)] = −1.984,
5
5
1
1
y4 = y3 + h(x3 + y3 ) = (−1.984) + 1[3 + (−1.984)] = 0.6192,
5
5
1
1
y5 = y4 + h(x4 + y4 ) = (0.6192) + 1[4 + (0.6192)] = 4.7430.
5
5
Tại các điểm x0 = 0, x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5 ta có các
giá trị xấp xỉ được thể hiện qua bảng dưới:


x

0

1

2

3

4

5

Giá trị xấp xỉ y -3.000 -3.600 -3.320 -1.984 0.6192 4.7430
b.Với h = 0.2:
1
1
y1 = y0 + h(x0 + y0 ) = (−3) + 0.2[0 + (−3)] = −3.12,
5
5
1
1
y2 = y1 + h(x1 + y1 ) = (−3.12) + 0.2[0.2 + (−3.12)] = −3.025,
5
5
1
1
y3 = y2 + h(x2 + y2 ) = (−3.025) + 0.2[0.4 + (−3.025)] = −3.253,

5
5
1
1
y4 = y3 + h(x3 + y3 ) = (−3.253) + 0.2[0.6 + (−3.253)] = −3.263,
5
5
1
1
y5 = y4 + h(x4 + y4 ) = (−3.263) + 0.2[0.8 + (−3.263)] = −3.234,
5
5
Tại các điểm x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1 ta
có các giá trị xấp xỉ được thể hiện qua bảng dưới:

x

0

0.2

0.4

0.6

0.8

1

Giá trị xấp xỉ y -3.000 -3.120 -3.025 -3.253 -3.263 -3.234

Sử dụng phần mềm Mathematica 4.2 ta xác định nghiệm chính xác
x
của bài toán ở Ví dụ 2.1 là y(x) = 22e 5 − 5x − 25. Từ đó ta có thể thể


12

hiện đồ thị của nghiệm xấp xỉ ứng với h = 1, h = 0.2, h = 0.05 cùng đồ
thị của nghiệm chính xác vừa tìm được trong hình (2.3) thông qua phần
mềm Mathematica.

1
Hình 2.3: Đồ thị nghiệm chính xác và nghiệm xấp xỉ của bài toán f (x, y) = x + y; y(0) = −3 với
5
h = 1, h = 0.2, h = 0.05

Ta thấy rằng khi bước h giảm thì độ chính xác càng tăng, đường cong
xấp xỉ nghiệm ứng với các bước h giảm càng gần với đường cong nghiệm
chính xác.
Ví dụ 2.2. Xét phương trình chuyển động sau:
y = y + 1; y(0) = 1.
Hãy dùng phương pháp Euler hai lần để tìm nghiệm gần đúng trong
[0, 1], lần đầu với bước h = 0.1 và lần sau với bước h = 0.2. So sánh các
kết quả nghiệm gần đúng và giá trị nghiệm chính xác.
Sử dụng phần mềm Mathematica 4.2 ta xác định nghiệm chính xác
x
của bài toán y = y + 1; y(0) = 1 là y(x) = 22e 5 − 5x − 25. Từ đó ta có
thể thể hiện đồ thị của nghiệm xấp xỉ ứng với h = 1, h = 0.2, h = 0.05
cùng đồ thị của nghiệm chính xác vừa tìm được trong bảng (2.1.3) thông
qua phần mềm Mathematica.



13

Xấp xỉ Euler bài toán y = y + 1; y(0) = 1 với h = 0.2, h = 1 và giá trị nghiệm

Bảng 2.1:

chính xác.

x

Giá trị xấp xỉ của Giá trị xấp xỉ của Giá trị thực tế của
y ứng với h = 0.2

y ứng với h = 0.1

y

0

1

1

1

0.2

1.400


1.420

1.443

0.4

1.880

1.928

1.984

0.6

2.456

2.543

2.644

0.8

3.147

3.287

3.451

1


3.977

4.187

4.437

Qua bảng (2.1.3), ta thấy rằng với phương pháp Euler để nghiệm có
độ chính xác cao cần có bước lặp h càng nhỏ và số bước lặp càng lớn.
2.2

SAI SỐ TRONG PHƯƠNG PHÁP EULER

2.2.1

Sai số địa phương

Xét sai số mắc phải trên một bước lặp với giả thiết bước trước đó
tính đúng. Ta xét hàm y(x) là nghiệm chính xác của bài toán:

 dy
= f (x, y),
dx
 y(x ) = y ,
0

0

với h = xn+1 − xn , n ≥ 0.
Từ khai triển Taylor, giữ lại hai số hạng đầu ta có :

y(x1 ) = y(x0 ) +

y (x0 )
y (ξ)
.(x1 − x0 ) +
.(x1 − x0 )2 ,
1!
2!

y(x1 ) = y1 +

y (ξ)
.(x1 − x0 )2 ,
2!


14

y (ξ)
.(x1 − x0 )2 ,
2!
y(x1 ) − y1 = 0(h2 ).

y(x1 ) − y1 =

Từ đó suy ra:
y(xn+1 ) − yn+1 = 0(h2 )
.
Sai số trong công thức xấp xỉ tuyến tính
yn+1 ≈ yn + h.f (xn , yn ) = yn+1 ,

chính là độ chênh lệch giữa tiếp tuyến tại (xn , yn ) với đường cong nghiệm
đi qua (xn , yn ) được mô tả ở hình (2.4). Sai số này được sinh ra trong
mỗi lần lặp của quá trình, được gọi là sai số địa phương của phương pháp
Euler.

Hình 2.4: Sai số địa phương trong phương pháp Euler

2.2.2

Sai số tích lũy(sai số toàn phần)

Nếu điểm xuất phát yn trong (2.3) là giá trị chính xác thì sai số địa
phương ở hình (2.4) sẽ là tổng sai số ở bước yn+1 . Nhưng bản thân yn lại
nhận các sai số tích lũy của các sai số địa phương . Đường tiếp tuyến ở
hình (2.5) thể hiện sai số tích lũy của phương pháp Euler- đó là độ sai
khác giữa đường gấp khúc đi qua (x0 , y0 ) với đường cong đi qua (x0 , y0 ).


15

Hình 2.5: Sai số tích lũy trong phương pháp Euler

Xét sai số trên đoạn [x0 , xn ]. Giả sử hàm f (x, y) thỏa điều kiện Lipschitz theo biến y với hằng số Lipschitz = L > 0, ngoài ra vi phân
df
| | ≤ M . Cho xn cố định trong khi bước h thay đổi, gọi y(x) là nghiệm
dx
đúng của bài toán Cauchy (2.2) ta có:
xn

y(xn ) = y0 +


f (x, y(x))dx,
x0

yn+1 = yn + hf (xn , yn ).
Ký hiệu: εn = yn − y(xn ) là sai số của phương pháp Euler. Ta có:
εn = εn+1 − εn = yn+1 − yn − (y(xn+1 ) − y(xn )) =
xn+1

= hf (xn , yn ) −

f (x, y(x))dx.
xn

Ta có :
xn+1

| εn | ≤ h|f (xn , yn ) − f (xn , y(xn )| + |

[f (xn , y(xn )) − f (x, y(x))]|dx ≤
xn

xn+1

≤ Lh|yn − y(xn )| +

M (x − xn )dx ≤
xn

≤ Lh|εn | +


M h2
.
2


16

Từ đây suy ra:
M h2
M h2
|εn+1 | ≤ | εn | + |εn | ≤ (1 + Lh)|εn | +
≤ (1 + Lh)|εn | +

2
2
M h2
M h2
≤ (1 + Lh) (1 + Lh)|εn−1 | +
+

2
2
M h2
≤ (1 + Lh) |εn−1 | +
[1 + (1 + Lh)] ≤ . . .
2
M h2
n+1
≤ (1 + Lh) |ε0 | +

[1 + (1 + Lh) + . . . + (1 + Lh)n ].
2
2

Để ý rằng ε0 = y0 − y(x0 ) = 0, ta suy ra:
n
M h2 1 − (1 + Lh)
εn+1 ≤
2
1 − (1 + Lh)
Mh
⇒ εn+1 ≤
(1 + Lh)n − 1 ≤
2L
M h Lnh

(e
− 1).
2L
Khi h → 0, yn → y(xn ). Vì vậy cách thường làm để giảm sai số tích
lũy trong phương pháp Euler chính là giảm bước h.
Ví dụ 2.3. Tính xấp xỉ nghiệm của bài toán giá trị ban đầu:

dy
= y − 2; y(0) = 1,
dx
với bước lặp h = 0.1 và các bước lặp nhỏ hơn như h = 0.01, h = 0.005,
h = 0.001 trong đoạn [0, 1] với x = 0.1. Chẳng hạn với bước lặp h =
0.01 cần 100 bước lặp Euler, ta đi tìm số bước lặp các bước lặp nhỏ hơn.
Sử dụng phần mềm Mathematica 4.2 ta tìm được nghiệm chính xác

dy
của bài toán
= y − 2 với y(0) = 1 là y = 2 − ex và đưa ra bảng giá
dx
trị nghiệm xấp xỉ (2.2).
Dựa vào nghiệm chính xác ta đưa ra giá trị chính xác tại các giá trị x
cần tìm với phương pháp Euler qua các bước nhảy ở bảng (2.2).
Chúng ta thấy rằng với mỗi bước lặp h cố định thì sai số (ychính xác −
yxấp xỉ ) sẽ tăng lên khi x càng xa điểm đầu x0 . Nhưng khi xem các hàng


17

Bảng 2.2:

x

Xấp xỉ Euler bài toán

y xấp xỉ

y xấp xỉ

dy
= y − 2; y(0) = 1 với bước lặp nhỏ dần
dx
y xấp xỉ

y xấp xỉ


với h = 0.1 với h = 0.01 với h = 0.005 với h = 0.001

Giá trị thực
tế của y

0

1

1

1

1

1

0.1

0.9000

0.8954

0.8951

0.8949

0.8948

0.2


0.7900

0.7798

0.7792

0.7787

0.7786

0.3

0.6690

0.6522

0.6511

0.6503

0.6501

0.4

0.5359

0.5111

0.5097


0.5085

0.5082

0.5

0.3895

0.3554

0.3533

0.3517

0.3513

0.6

0.2284

0.1833

0.1806

0.1784

0.1779

0.7


0.0513

-0.0068

-0.0102

-0.0130

-0.0138

0.8

-0.1436

-0.2167

-0.2211

-0.2247

-0.2255

0.9

-0.3570

-0.4486

-0.4541


-0.4585

-0.4596

1

-0.5937

-0.7048

-0.7115

-0.7169

-0.7183

của bảng (2.2), chúng ta thấy rằng với mỗi x cố định thì sai số sẽ giảm
khi h nhỏ dần, sai số phần trăm ở điểm đầu biến thiên từ 7.25% khi
h = 0.1 đến chỉ 0.08% khi h = 0.001. Như vậy, khi bước lặp còn nhỏ thì
sai số tăng càng chậm khi đi xa dần điểm đầu.
Với mỗi bước lặp sẽ yêu cầu số bước nhảy khác nhau. Ở bảng (2.2), ta
cũng nhận thấy rằng cột dữ liệu h = 0.1 yêu cầu 10 bước, vì vậy phương
pháp Euler có thể thực hiện bằng máy tính bỏ túi. Nhưng với h = 0.01
cần 100 bước, h = 0.005 cần 200 bước và với h = 0.001 cần đến 1000
bước thì ta nên lập trình thông qua các phần mềm chuyên dụng.
Để có độ chính xác cao người ta thường giảm bước nhảy. Vậy tại sao
chúng ta có thể chọn bước lặp h rất nhỏ (chẳng hạn h = 10−12 ) để có



18

độ chính xác rất cao?. Chẳng hạn với dữ liệu ở bảng (2.2) có được bằng
cách dùng máy tính bỏ túi với 9 bước lặp Euler trong một giây. Khi đó
cần hơn một giây để tính xấp xỉ y1 với h = 0.1 và cần khoảng một phút
50 giây với h = 0.001. Ứng với h = 10−12 thì cần tính bằng máy tính bỏ
túi trong 3000 năm. Vì thế ta không nên làm điều đó với hai lý do. Trước
hết là thời gian để làm điều đó. Lý do thứ hai là quá tỉ mỉ.
Ngoài hai loại sai số đã được nêu ở trên (sai số địa phương và sai số
tích lũy), tại mỗi bước máy tính sẽ có thêm sai số làm tròn, do sức chứa
của máy tính là có hạn. Với phương pháp Euler ứng với h = 0.0001 thì
sai số làm tròn sẽ nhiều gấp 1000 lần so với khi h = 0.1. Do vậy, với mỗi
phương trình vi phân nào đó, khi h = 0.1 sẽ có kết quả chính xác hơn
khi h = 0.0001, vì sai số làm tròn tích lũy trong trường hợp h = 0.0001
có thể vượt qua sai số tổng hợp sai số tích lũy và sai số làm tròn trong
trường hợp h = 0.1.
Trên thực tế cũng như trên lý thuyết, khó có thể chọn được bước h
"tốt nhất", việc chọn đó phụ thuộc vào bản chất của hàm f (x, y) trong
phương trình (2.2), phụ thuộc vào mã hiệu mà chương trình được viết
nên và phụ thuộc vào máy tính được sử dụng. Với bước h quá lớn thì kết
quả xấp xỉ của phương pháp Euler có thể không đủ độ chính xác, còn
nếu h quá bé thì sai số làm tròn bị tích lũy làm cho thời gian chạy máy
quá lâu.
Kết quả ở bảng (2.2) mô tả chiến lược chung về thuật toán số của
phương pháp Euler. Bắt đầu với số n đã được chọn trước về các khoảng
đối với lần áp dụng đầu tiên, sau đó tằng gấp đôi n cho mỗi lần áp dụng
sau. Việc so sánh các kết quả liên tiếp thường đưa đến "suy nghĩ trực
giác" về tính chính xác. Trong hai ví dụ dưới đây, chúng ta sẽ xét việc
thể hiện kết quả phép tính gần đúng theo phương pháp Euler bằng đồ
thị.

Ví dụ 2.4. Nghiệm chính xác của bài toán có giá trị ban đầu
1
dy
= y(8 − y); y(0) = 1,
dx 3


×