Tải bản đầy đủ (.doc) (14 trang)

Tiểu luận sai phân long

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 (301.2 KB, 14 trang )

LỜI MỞ ĐẦU
Phương pháp sai phân (hay còn gọi là phương pháp lưới) là phương pháp
được áp dụng rộng rãi trong nhiều lĩnh vực khoa học, kỹ thuật. Nội dung của nó là
đưa bài toán cần xét về việc giải phương trình sai phân hoặc hệ phương trình sai
phân ( tức là hệ thức hoặc các hệ thức liên hệ các giá trị của các hàm số tại các
điểm khác nhau như những hàm số của đối số nguyên).
Phương pháp sai phân là phương pháp hiệu quả nhất để giải các bài toán
vi phân thường và các bài toán đạo hàm riêng. Người ta xem đây là phương pháp
vạn năng để giải các bài toán trong lĩnh vực này. Trong toán học ứng dụng có rất
nhiều bài toán liên quan đến phương trình vi phân. Việc giải các phương trình vi
phân là một yêu cầu quan trọng trong thực tiễn. Trong đại đa số các trường hợp,
nhất là với các bài toán có hệ số biến thiên, các bài toán trên miền bất kỳ thì
nghiệm tường minh của nó không có hoặc có nhưng phức tạp. Vì vậy, ta phải nhờ
tới các phương pháp xấp xỉ để tìm nghiệm gần đúng.
Tập hợp các điểm ta dùng để lập phương trình sai phân thay cho phương
trình vi phân được gọi là lược đồ sai phân. Đôi khi người ta gọi phương trình sai
phân nhận được là lược đồ sai phân.
Tuy là với thành tựu của máy tính hiện nay, thời gian giải các bài toán vi
phân có thể tính bằng giây, hay như người ta thường nói, có thể so sánh với thời
gian viết vế phải. Nhưng do nhu cầu thực tiễn và sự phát triển lý thuyết toán học,
các nhà toán học đã tìm ra rất nhiều phương pháp để giải gần đúng các phương
trình vi phân thường ( phương pháp chuỗi Taylor, phương pháp Runghe-Kutta,
phương pháp Ađam,…). Hiện nay, người ta dùng phương pháp sai phân để xét và
chứng minh sự tồn tại nghiệm của các bài toán vi phân.
Vậy giữa các phương pháp sai phân có nhiều điểm khác biệt hay tương
đồng gì với nhau? Trong bài này chúng ta sẽ so sánh giữa hai phương pháp(hay
hai lược đồ sai phân): Runghe-Cutta và Ađam.


Chương 1: Cơ sở lý thuyết
1.1 Khái quát lược đồ sai phân:


1.1.1

Khái niệm lược đồ:

Xét phương trình vi phân:
du
+ Au = 0, 0 ≤ x ≤ 1, u ( 0 ) = b
dx

(1)

Ta xét lược đồ sai phân đơn giản nhất như sau:
-

Chia

đoạn

[ 0,1]

thành

N

đoạn

nhỏ

bởi


các

điểm

chia

0 = x0 < x1 < ... < xN = 1 .

-

Khi đó ta có xi +1 − xi = hi được gọi là bước lưới thứ i.

-

Tập các điểm xi , i = 0,1,..., N được gọi là lưới.

-

Các điểm xi , i = 1, 2,..., N − 1 là các điểm lưới trong, x0 , xN là các điểm lưới

biên.
Trong phương trình (1) ta thay đạp hàm bởi tỷ sai phân và được:
u ( x + h) − u ( x)
+ Au ( x ) = 0
h

(2)

-Khi đó, tập hợp các điểm ta dùng để viết (2) thay cho (1) được gọi là lược đồ
sai phân. Bản thân phương trình sai phân (2) người ta cũng gọi là lược đồ sai phân.

-Như vậy, ta đã sử dụng 2 điểm x và x + h nên đây là lược đồ sai phân 2
điểm.
-Nếu hi = h, ∀i ( h > 0 ) thì lưới được ký hiệu là ωh = { ih, i = 0,..., N } và được gọi
là lưới đều.
-Giá trị của hàm số u ( xi ) được ký hiệu: ui , i = 0,..., N và được gọi là hàm
lưới.
1.1.2

Cấp chính xác của lược đồ:


Giải phương trình (1) bằng vi phân ta có nghiệm là:
u ( x + h) − u ( x − h)
h2
= u ' ( x ) + u "' ( x ) + o ( h 4 )
2h
6
u ( x ) = b.e − Ax ⇒ u ( xn ) = b.e − Axn đây là nghiệm đúng của (1).



Để đơn giản thì người ta xét lưới đều ωh = ih, h =

1

, i = 0,1,..., N  . Khi đó,
N


u0 = u ( 0 ) = b , (2) sẽ có dạng:

un +1 − un
+ Aun = 0 ⇔ un +1 = ( 1 − Ah ) un , u0 = b
h

(3)

Giải phương trình sai phân này ta được nghiệm:
xn

un = ( 1 − Ah ) .b = ( 1 − Ah ) h .b .
n

Để khảo sát sự giảm của sai số δ ( x ) khi h =
Ta được : δ ( xn )

xn
1
giảm ta khia triển ( 1 − Ah ) h .
N

A2 xn − Axn
= hb
e
+ o ( h 2 ) = o ( h ) (tức là sai số δ ( x ) dần tới 0 khi
2

h → 0 và δ ( x ) có cấp 1).

Ta nói rằng lược đồ sai phân (3) có cấp 1.
Ví dụ: Cho lược đồ:


u ( x + h) − u ( x − h)
+ Au ( x ) = 0, u0 = u ( 0 ) = b
2h

(4)

Đây là lược đò sai phân 3 điểm vì ở đây ta sử dụng 3 diểm x + h, x, x − h
x + h, x, x − h và có độ chính xác cấp 2.

1.1.3

Tốc độ hội tụ của nghiệm sai phân:

-Nếu giá trị ban đầu u1 cho với độ chính xác cấp h 2 thì nghiệm sai phân sẽ có
sai số cấp h 2 , tức là lược đồ sai phân có độ chính xác cấp 2.
-Nếu giá trị ban đầu u1 cho với độ chính xác cấp h thì nghiệm sai phân sẽ có
sai số cấp h .
Vậy khi đó cấp chính xác của nghiệm sai phân là không thay đổi.
1.1.4

Cấp xấp xỉ:


Xét hai phương trình (2) và (4), ta thấy lược đồ sai phân (2) ít chính xác
thấp hơn lược đồ sai phân (4). Hai lược đồ này chỉ khác nhau ở chỗ xấp xỉ

bằng

du

dx

u ( x + h) − u ( x)
u ( x + h) − u ( x − h)
hoặc
.
h
2h

Thật vậy, dùng khai triển Taylor. Ta có:
u ( x + h) − u ( x)
h
= u ' ( x ) + u " ( x ) + o ( h 2 ) có xấp xỉ cấp 1
h
2



u ( x + h) − u ( x − h)
h2
= u ' ( x ) + u "' ( x ) + o ( h 4 ) có xấp xỉ cấp 2.
2h
6

Chúng ta có thể lầm tưởng rằng: cấp hội tụ của nghiệm có thể làm cho
bằng cấp xấp xỉ của đạo hàm. Điều này không đúng vì lược đồ sai phân dùng được
còn phải có điều kiện ổn định.
Một lược đồ được gọi là không ổn định nếu nghiệm sai phân un không
hội tụ đúng về nghiệm đúng u ( xn ) của phương trình vi phân.
1.2 Lược đồ sai phân Runghe-Kutta:

Phương pháp Runghe-Kutta là phương pháp ước lượng giá trị nghiệm y ( t )
của phương trình vi phân khi nó được đưa về dạng

dy
= f ( t , y ) với giá trị khởi
dt

đầu: ( t0 , y ( t0 ) ) .
Từ điểm khởi đầu ( t0 , y ( t0 ) ) , phương pháp sẽ ước lượng điểm tiếp theo
khi biến t được dịch chuyển một đoạn bằng h . Điều đó có nghĩa là điểm tiếp theo
sẽ là :

(t

0

+ h, y ( t 0 + h ) )

và cứ thế tiếp tục suy ra các điểm kế tiếp


(t

0

+ 2h, y ( t0 + 2h ) ) ,..., ( t0 + nh, y ( t0 + nh ) ) . Ở mỗi bước dịch h các giá trị trung gian

h
của y và f liên quan đến phần dịch sẽ được tính toán.
2


Mô tả cụ thể phương pháp (Runghe-Kutta bậc 4):
Cho trước ( t0 , y ( t0 ) )
Ở bước thứ j tổng quát, thực hiện các phép tính sau:
k0 = f ( t j , y j )
h
h 

k1 = f  t j + , y j + k 0 ÷
2
2 

h
h 

k2 = f  t j + , y j + k1 ÷
2
2 

k3 = f ( t j + h, y j + hk2 )

Suy ra các giá trị ước lượng y ( t j +1 ) : y j +1 = y j + ( k0 + 2k1 + 2k2 + k3 )
h
6

1.2.1 Sự ổn định của phương pháp Runge-Kutta bậc hai:
Xét phương pháp Runge-Kutta bậc hai cho phương trình thử .
Ta có:
k1 = hf ( x n , t n ) = λhx n ;
k 2 = hf ( x n + k1 , t n + h) = λh( x n + k1 ) = λh( x n + λhx n ) = λh(1 + λh ) x n


và x n +1 = x n +

2 2

1
( k1 + k 2 ) = x n + 1 ( λh + λh(1 + λh ) ) x n = 1 + λh + λ h
2
2
2



 x n .


λ2 h 2
σ

1
Để phương pháp ổn định thì
, trong đó σ = 1 + λh +
.
2
λ2 h 2
≤ 1 hay − 2 ≤ λh ≤ 0 .
Trường hợp 1. λ là số thực. Khi ấy 1 + λh +
2

Trường hơp 2. λ = iω thuần ảo, ω ≠ 0 .

1
4

Khi ấy σ = 1 + ω 4 h 4 > 1 . Phương pháp không ổn định.
Trường hợp 3. λ = λ R + iλ I là số phức.


Khi ấy 1 + λh +
Đặt 1 + λh +

λ2 + λ2I 2 
λ2 h 2 
= 1 + λ R h + R
h  + i ( λ I + λ R λ I ) là số phức.
2
2



λ2 h 2
= e iθ và tìm nghiệm phức λh của phương trình bậc hai
2

theo các giá trị của θ . Nhận xét rằng σ = 1 với mọi giá trị của θ .
1.2.2 Sự ổn định của phương pháp Runge-Kutta bậc bốn:
Xét phương pháp Runge-Kutta bậc bốn cho phương trình thử. Ta có:
k1 = hf ( x n , t n ) = λhx n ;
k 

 λh 

k 2 = λh x n + 1  = λh( x n + λhx n ) = λh1 +
 xn ;
2
2 


 λh λ 2 h 2
k2 

1  λh  

k 3 = λh x n +  = λh x n + λh1 +
+
 x n  = λh1 +
2
2
2
2
4

 




 λh λ 2 h 2
k 4 = λh( x n + k 3 ) = λh x n + λh1 +
+
2
4




Và x n +1 = x n +


 x n ;


 

λ 2 h 2 λ3 h 3 
 x n  = λh1 + λh +
 xn
+

2
4 
 


2 2
3 3
4 4


1
( k1 + 2k 2 + 2k 3 + k 4 ) = 1 + λh + λ h + λ h λ h  x n .
6
2

3! 4! 


λ 2 h 2 λ3 h 3 λ 4 h 4
+
Để phương pháp ổn định thì σ ≤ 1 , trong đó σ = 1 + λh +
.
2

3!

4!

Trường hợp 1. λ là số thực. Khi ấy − 2.785 ≤ λh ≤ 0 .
Trường hơp 2. λ = iω thuần ảo, ω ≠ 0 . Khi ấy 0 ≤ λh ≤ 2 2 .
Trường hợp 3. λ = λ R + iλ I là số phức. Đặt 1 + λh +

λ 2 h 2 λ3 h 3 λ 4 h 4
+
= e iθ và tìm
2
3! 4!

nghiệm phức λh của phương trình bậc bốn theo các giá trị của θ . Nhận xét rằng
σ = 1 với mọi giá trị của θ .

Miền ổn định được chỉ ra trên Hình 1.


1.3 Lược đồ


sai

phân

Phương

pháp

Ađam:
Ađam

cũng

là phương pháp

ước lượng giá trị nghiệm y ( t ) của phương trình vi phân khi nó được đưa về dạng
y ' = f ( y, t ) với k + 1 giá trị khởi đầu: ( t0 , y ( t0 ) ) ,..., ( tk , y ( tk ) ) .

Ta tìm các giá trị ước lượng điểm tiếp theo khi biến t được dịch chuyển
một đoạn bằng h . Tuy nhiên giá trị trung gian tham khảo không phải là biến t với
giá trị dịch chuyển

h
mà giá trị tham khảo là các giá trị của y trước đó. Phương
2

pháp này dựa trên khai triển lân cận Maclaurin.
Mô tả cụ thể phương pháp: (với k = 2 )
Cho trước ( t0 , y ( t0 ) ) , ( t1 , y ( t1 ) ) , ( t2 , y ( t2 ) ) .

Ở bước thứ j tổng quát, thực hiện phép tính sau:
y j +1 = y j +

(

h
23 f ( t j , y j ) − 16 f ( t j −1 , y j −1 ) + 5 f ( t j −2 , y j −2 )
12

)

1.4 So sánh:
Khác nhau:
Phương pháp Runghe-Cutta
- Cần 1 cặp giá trị khởi đầu.

Phương pháp Ađam
- Cần nhiều hơn 1 cặp giá trị khởi đầu
(k+1 cặp).


- Giá trị trung gian tham khảo để tính

- Giá trị trung gian tham khảo để tính

điểm kế tiếp nằm ở

điểm kế tiếp nằm ở

h


y  t j + ÷,
2



h 
h 
f  t j + , y  t j + ÷÷
2 
2 


y ( t j − h ) , y ( t j − 2h ) ,..., y ( t j − kh ) và

(
f (t

) (
− kh, y ( t − kh ) )

)

f t j − h, y ( t j − h ) , f t j − 2h, y ( t j − 2h ) ,...,

- Runghe-Cutta được coi là phương
pháp “non-memory”.

j


j

- Do các giá trị ở quá khứ được sử dụng
lại, phương pháp Ađam được gọi là

- Phương pháp dựa trên xấp xỉ tuyến
tính

phương pháp có “memory”.
- Phương pháp dựa trên xấp xỉ theo bậc
hàm đa thức (khai triển Maclaurin).

Giống nhau:
-

Đều là các phương pháp ước lượng giá trị cụ thể cho một hàm

y ( t ) với y ( t ) là nghiệm phương trình vi phân được đưa về dạng:

-

Đều ước lượng là từng bước, mở rộng từ các điểm khởi đầu thông

qua các vòng lặp.

Chương 2 : Ứng dụng
2.1 Bài toán 1: Giải bài toán giá trị ban đầu

dy
= x 2 + y 2 , y (0) = 1 bằng phương

dx

pháp Runge-Kutta
X
0,5
0,6
0,7
0,8
0,9

y với h = 0,01
2.0670
2.6440
3.6529
5.8486
14.3048

y với h = 0,005
2.0670
2.6440
3.6529
5.8486
14.3049

y với h = 0,0025
2.0670
2.6440
3.6529
5.8486
14.3049



Bảng trên cho các kết quả của phương pháp Runge - Kutta trên đoạn [0,0;
0,9] với các bước h = 0,1; h = 0,005 và h = 0,0025. Tuy vẫn còn khó khăn khi
gần điểm x = 0,9. Nhưng có thể kết luận rằng y(0,5) ≈ 2,0670.
X
0,1
0,3

y với h = 0,1
1.1115
1.4397

y với h = 0,05
1.1115
1.4397

y với h = 0,025
1.1115
1.4397

2.2 Bài toán 2: Dùng phương pháp Runge - Kutta để giải bài toán giá trị ban
đầu sau đây

dy
= x + y, y (0) = 1 .
dx

x
Có nghiệm chính xác là y(x) = 2e - x - 1. Lấy h = 0,5, với h = x + y, ta có

k1 = 0 + 1 = 1
k2 = (0 + 0,25) + [1 + (0,25).(1)] = 1,5
k3 = (0 + 0,25) + [1 + (0,25).1,5] = 1,625
k4 = 0,5 + [(1 + 0,5) . (1,625)] = 2,3125
Do đó: y1 = 1 +

0,5
+ [ 1 + 2.1,5 + 2.1,625 + 2,3125] ≈ 1,7969
6

Tương tự thực hiện bước 2 ta có
k1 = 0,5 + 1,7969 = 2,2969
k2 = 0,5 + 0, 25 + 1,7969 + 0,25.k1
k3 = 0,5 + 0,25 + 1,7969 + 0,25k 2
k 4 = 1+ 1,7969 + 0,25k3
Ví dụ 1: Tìm xấp xỉ nghiệm phương trình vi phân y ( x) trên đoạn [1,2], biết:
xy ' = x 2 − y 2 + y , thỏa điều kiện đầu y ( 1) = 1 .
Nghiệm của phương trình là y ( x ) = ± x , với điều kiện đầu y ( 1) = 1 , suy ra y ( x ) = x
. Kết quả này dùng để so sánh với nghiệm thực.
Giải:


Tính toán xấp xỉ hàm y ( x) bằng thực nghiệm y ( x)
* Dùng phương pháp Runge-Kutta bậc 4: y ' =

x2 − y 2 + y
x

Khởi đầu từ điều kiện đầu: y ( 1) = 1 , tính toán các điểm tiếp theo với h=0.1,
ta có kết quả tính toán trên đoạn [1,2] bằng chương trình Matlab ở bên trái bảng 1.

x2 − y 2 + y
x
Khởi đầu từ điều kiện đầu: y ( 1) = 1 , y ( 1.1) = 1.1 , y ( 1.2 ) = 1.2 , (chú ý ở đây

* Dùng phương pháp Adams với k = 2: y ' =

điều kiện đầu cần nhiều thông tin hơn: 3 cặp giá trị khởi đầu), tính toán các điểm
tiếp theo với h=0.1, ta có kết quả tính toán trên đoạn [1,2] bằng chương trình
Matlab ở bên phải bảng 1.
Chú ý: phần bôi xám là phần dữ liệu đã biết, là điều kiện đầu để khởi động quá
trình xấp xỉ.
Bảng 1: Kết quả tính toán Ví dụ 1:
Runge-Kutta
x
1.00000000000000
1.10000000000000
1.20000000000000
1.30000000000000
1.40000000000000
1.50000000000000
1.60000000000000
1.70000000000000
1.80000000000000
1.90000000000000
2.00000000000000

y
1.000000000000000
1.104210180700229
1.211042813112049

1.318053559644893
1.424824911269229
1.531453832081012
1.637753151103550
1.743759916191817
1.849425652623294
1.954759209204868
2.059959647804608

Adams
x
1.00000000000
1.10000000000
1.20000000000
1.30000000000
1.40000000000
1.50000000000
1.60000000000
1.70000000000
1.80000000000
1.90000000000
2.00000000000

y
1.00000000000
1.10000000000
1.20000000000
1.30000000000
1.40000000000
1.50000000000

1.60000000000
1.70000000000
1.80000000000
1.90000000000
2.00000000000

Ở đây nghiệm thực và kết quả ước lượng được vẽ trên đồ thị để dễ so sánh.
Phương pháp Runge-Kutta cho kết quả bên trái hình 1 và phương pháp Adams cho
kết quả bên phải hình 1. Độ dịch h = 0.01.


Hình 1: Kết quả trên đồ thị cho Ví dụ 1
π π

Ví dụ 2: Tìm nghiệm phương trình vi phân trên đoạn  , + 0.5 :
2 2

y ln y
π 
y'=
y  ÷= e .
,
thỏa
điều
kiện
đầu
sin x

( )


2

Nghiệm thực của phương trình là y ( x ) = e

 x
tg  ÷
2

. Kết quả này dùng để so sánh với

nghiêm thực.
y ln y

Dùng phương pháp Runge-Kutta: y ' = sin x
( )
π 
Khởi đầu từ điều kiện đầu: y  ÷ = e , tính toán các điểm tiếp theo với

2
π π

h=0.05, ta có kết quả tính toán trên đoạn  , + 0.5 bằng chương trình Matlab ở
2 2


bên trái bảng 2:
y ln y

Dùng phương pháp Adams với k=2: y ' = sin x
( )

Khởi đầy từ điều kiện ban đầu:
 π + 0.2 
÷
4 

π
 tg 
y  + 0.1÷ = e 
2



tg 
π 
π
y  ÷ = e , y  + 0.05 ÷ = e 
2
2


π + 0.1 
÷
4 

,

(chú ý ở đây điều kiện đầu cần nhiều thông tin hơn: 3 cặp

giá trị khởi đầu), tính toán các điểm tiếp theo với h=0.05, ta có kết quả tính toán
π π


trên đoạn  , + 0.5 bằng chương trình Matlab ở bên trái bảng 2.
2 2



Kết quả tính toán Ví dụ 2:
Runge-Kutta

x
1.570796326794897
1.620796326794897
1.670796326794897
1.720796326794897
1.770796326794897

y
2.718281828459046
2.860069824145512
3.017413869262638
3.192985231660636
3.390068631151312

Adams

x
1.570796326794897
1.620796326794897
1.670796326794897
1.720796326794897

1.770796326794897

y
2.718281828459046
2.861348484487429
3.020298267207424
3.197683474699343
3.397011401362318


1.820796326794897
1.870796326794897
1.920796326794897
1.970796326794897
2.020796326794897
2.070796326794897

3.612741184469464
3.866115431139968
4.156673992120922
4.492737415287411
4.885129081214274
5.348137406503780

1.820796326794897
1.870796326794897
1.920796326794897
1.970796326794897
2.020796326794897
2.070796326794897


3.622500911362077
3.879424940043827
4.174485242141456
4.516302465280232
4.916114492089147
5.388790476112742

Chú ý: phần bôi xám là phần dữ liệu đã biết, là điều kiện đầu để khởi động
quá trình xấp xỉ.
Ở đây nghiệm thực và kết quả ước lượng được vẽ trên đồ thị để dễ so
sánh. Phương pháp Runge-Kutta cho kết quả bên trái hình 1 và phương pháp
Adams cho kết quả bên phải hình 2. Độ dịch h = 0.05.

Hình 2: Kết quả trên đồ thị cho Ví dụ 2.

Nhận xét chung :
- Càng xa điểm (các điểm) khởi đầu thì sai số càng cao!
- Adams cho kết quả chính xác hơn Runge-Kutta vì thông tin ban đầu được cung
cấp nhiều hơn (Adams cần tới 3 cặp giá trị khởi tạo đối với k=2 trong khi RungeKutta chỉ cần 1 cặp).


KẾT LUẬN


TÀI LIỆU THAM KHẢO
1. Giáo trình “Phương trình sai phân và một số ứng dụng” _ Lê Đình
Thịnh_Đặng Đình Châu_Lê Đình Định_Phan Văn Hạp.
2. />



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×