You are on page 1of 56

PHƯƠNG TRÌNH VI PHÂN

Bài giảng điện tử

PHƯƠNG TRÌNH VI PHÂN 1 / 56


The motion of a swinging pendulum under certain simplifying assumptions is described by
the second-order differential equation
d2θ g
+ sin θ = 0,
Ta xét bài toán cơ bản về dao động
dt của con lắc đơn
L 2

where L is the length of the pendulum, g ≈ 32.17 ft/s2 is the gravitational constant of the
earth, and θ is the angle the pendulum makes with the vertical. If, in addition, we specify
xác định bởi phương trình
the position vi phân
of the pendulum when thebậc haiθ(t ) = θ , and its velocity at that
motion begins, 0 0
point, θ ′ (t0 ) = θ0′ , we have what is called an initial-value problem.
For small values of θ, the approximation θ ≈ sin θ can be used to simplify this problem
to the linear initial-value problem
d 2θ g
d2θ g+ θ(t sin
+ θ = 0,
θ=0 ′ ′
dt 2
dt 2 L L ) = θ , θ (t ) = θ . 0 0 0 0

This problem can be solved by a standard differential-equation technique. For larger values
of θ, the assumption that θ = sin θ is not reasonable so approximation methods must be
used. A problem of this type is considered in Exercise 8 of Section 5.9.
với L là chiều dài con lắc, g là hằng số hấp dẫn của trái đất, θ là góc tạo
Any textbook on ordinary differential equations details a number of methods for ex-
plicitly finding solutions to first-order initial-value problems. In practice, however, few of
bởi con lắc và trục thẳng đứng. the problems originating from the study of physical phenomena can be solved exactly.
259
Ta xét vị trí ban đầu của con lắc khi bắt đầu dao động là θ(t0 ) = θ0 và
vận tốc ban đầu tại điểm này là θ0 (t0 ) = θ00 , ta có bài toán giá trị đầu.
Copyright 2010 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.

PHƯƠNG TRÌNH VI PHÂN 2 / 56


Với giá trị θ nhỏ, ta xấp xỉ θ ≈ sin θ, khi đó bài toán trở thành tuyến tính

d 2θ g
+ θ = 0, θ(t0 ) = θ0 , θ0 (t0 ) = θ00
dt 2 L

Bài toán này có thể giải bằng các phương pháp quen thuộc. Tuy nhiên với
giá trị θ lớn, ta không thể giả thiết θ = sin θ. Để tìm nghiệm cho bài toán
này, ta cần sử dụng các phương pháp xấp xỉ nghiệm.

PHƯƠNG TRÌNH VI PHÂN 3 / 56


Bài toán Cauchy Đặt vấn đề

Bài toán Cauchy

Ta xét bài toán giá trị đầu bậc nhất, bài toán Cauchy,
 0
y (t) = f (t, y (t)), a 6 t 6 b,
(1)
y (a) = α

với y = y (t) là hàm cần tìm, khả vi trên đoạn [a, b], y0 là giá trị ban đầu
cho trước của y (t) tại t = a.

PHƯƠNG TRÌNH VI PHÂN 4 / 56


Bài toán Cauchy Đặt vấn đề

Đối với bài toán Cauchy (1) ta chỉ có thể tìm được nghiệm đúng của một
số phương trình đơn giản, còn đối với trường hợp f (x, y ) có dạng bất kỳ
thì nói chung không có phương pháp giải.
Ngoài ra, trong những trường hợp có thể tìm ra nghiệm đúng của bài toán
Cauchy (1) quá phức tạp thì người ta cũng ít dùng.
Vì vậy, việc tìm những phương pháp giải gần đúng bài toán Cauchy có vai
trò rất quan trọng trong thực tế.

PHƯƠNG TRÌNH VI PHÂN 5 / 56


Bài toán Cauchy Công thức Euler

Công thức Euler

Để tìm nghiệm gần đúng của bài toán (1) ta chia đoạn [a, b] thành n đoạn
nhỏ bằng nhau với
b−a
h= .
n
Khi đó các điểm nút là t0 = a, tk = t0 + kh, k = 0, 1, 2, . . . , n, tn = b.
Giả sử y (t) là nghiệm duy nhất của bài toán (1), có đạo hàm đến cấp 2
liên tục trên đoạn [a, b].
Khi đó với mỗi k = 0, 1, 2, . . . , n − 1 theo công thức khai triển Taylor trên
đoạn [tk , tk+1 ], ta có

(tk+1 − tk )2
y (tk+1 ) = y (tk ) + y 0 (tk )(tk+1 − tk ) + y 00 (ξk ) ,
2
với ξk ∈ (tk , tk+1 ).

PHƯƠNG TRÌNH VI PHÂN 6 / 56


Bài toán Cauchy Công thức Euler

Vì y = y (t) là nghiệm của phương trình (1) và h = tk+1 − tk nên ta có

h2 00
y (tk+1 ) = y (tk ) + h.f (tk , yk ) + y (ξk )
2

Bằng cách bỏ đi phần dư, ta xấp xỉ yk ≈ y (tk ) với k = 1, 2, . . . n, ta có


công thức Euler

y0 = α
yk+1 ≈ yk + hf (tk , yk ),

với k = 0, 1, 2, . . . , n − 1.

PHƯƠNG TRÌNH VI PHÂN 7 / 56


2 y(t 2)
Bài toán Cauchy Công thức Euler
y(t 1) y(t 1)
y(t 0) ! α y(t 0) ! α
Ý nghĩa hình học của phương
t ! a t t pháp t a! bEuler
. . t. ! t tt . . . 0 1 2 0 N 1 2 tN ! b t

e 5.3 y Figure 5.3 y Figure 5.4 y Figure 5.4 y


y" ! f (t, y), y" ! f (t, y),
y" ! f (t, y), y" ! f (t, y), y(b) !α
y(a)y(b)
y(a) ! α wN y(a) ! α
y(a) ! α wN

Slope y"(a) ! f (a, α)Slope y"(a) ! f (a, α) w2 w2


w1 w1 w1 w1
α α α α
t0 ! a t1 t2 t N a! bt 1
. . .t 0 ! t2 t . . . tN ! b t t0 ! a t1 t2 t N a! bt 1
. . t. 0 ! t2 t . . . tN ! b t

Từ (t0 , y0 ) = (a, α) thuộc đường cong y = y (t), kẻ tiếp tuyến với đường
Example 1 Euler’s method1 wasEuler’s
Example used 0inmethod
the first illustration with h = 0.5 to approximate
with h = 0.5 the solution
cong (cóto hệ số góc
the initial-value (a) =wasfproblem
làtheyinitial-value
problem
to
used in the
(a, α)). first illustration
Đường tiếp tuyến tosẽapproximate
cắt t =thetsolution
1 tại
y1 chính là giá trị gần đúng của y (t 1 ).
y′ = y − t 2 + 1, 0′ ≤ t ≤ 2,2 y(0) 1, = 0.5.
Tại (t1 , y1 ), ta kẻ đường thẳng vớiy =hệy −sốt +góc 0≤
f (tt 1≤, 2,y1 )y(0)
cắt= 0.5.
t = t2 tại y2 là
giá trị gần đúng của
Use Algorithm 5.1 UseyAlgorithm
with (t
N 2=).
10 to5.1
determine
with N = approximations,
10 to determine and compare these and
approximations, withcompare
the these with the
exact values given exact = (t +
by y(t)values 1)2 −
given by0.5e
t
y(t) .= (t + 1)2 − 0.5et .

Solution With N =Solution


10 we have ==
Withh N 0.2, = have
10tiwe h 0==0.2,
0.2i, w 0.5,ti and
= 0.2i, w0 = 0.5, and
PHƯƠNG TRÌNH VI PHÂN 8 / 56
Bài toán Cauchy Công thức Euler

Ví dụ
Sử dụng phương pháp Euler để xấp xỉ nghiệm của bài toán Cauchy
 0
y (t) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5

với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .

PHƯƠNG TRÌNH VI PHÂN 9 / 56


Bài toán Cauchy Công thức Euler

Giải.
2−0
Với n = 10 thì h = = 0.2, tk = 0.2k, y0 = 0.5.
10
Công thức tính nghiệm gần đúng là

yk+1 = yk + h(yk − tk2 + 1)

với k = 0, 1, . . . , 9.
Bấm máy. Y = Y + 0.2(Y − M 2 + 1) : M = M + 0.2
1 CALC Y = 0.5 =, M = 0 =
2 Y =, M = 0.2 =

PHƯƠNG TRÌNH VI PHÂN 10 / 56


Bài toán Cauchy Công thức Euler

k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5000000 0.5000000 0.0000000
1 0.2 0.8000000 0.8292986 0.0292986
2 0.4 1.1520000 1.2140877 0.0620877
3 0.6 1.5504000 1.6489406 0.0985406
4 0.8 1.9884800 2.1272295 0.1387495
5 1.0 2.4581760 2.6408591 0.1826831
6 1.2 2.9498112 3.1799415 0.2301303
7 1.4 3.4517734 3.7324000 0.2806266
8 1.6 3.9501281 4.2834838 0.3333557
9 1.8 4.4281538 4.8151763 0.3870225
10 2.0 4.8657845 5.3054720 0.4396874

PHƯƠNG TRÌNH VI PHÂN 11 / 56


Bài toán Cauchy Công thức Euler

Sai số của công thức Euler

Giả sử f là hàm liên tục và thỏa điều kiện

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

với hằng số L > 0, và tồn tại M thỏa

y 00 (t) ≤ M với t ∈ [a, b].

Khi đó với y (t) là nghiệm chính xác của bài toán giá trị đầu
y 0 (t) = f (t, y ), a ≤ t ≤ b, y (a) = α và y0 , y1 , . . . , yn là nghiệm
xấp xỉ của bài toán cho bởi công thức Euler, khi đó với mỗi k = 0, 1, . . . , n
hM L(tk −a)
|y (tk ) − yk | ≤ [e − 1]
2L

PHƯƠNG TRÌNH VI PHÂN 12 / 56


Bài toán Cauchy Công thức Euler cải tiến

Công thức Euler cải tiến

f (tk , yk ) + f (tk+1 , yk+1 )


Trong công thức Euler, thay f (tk , yk ) bởi ta
2
được công thức Euler cải tiến

f (tk , yk ) + f (tk+1 , yk+1 )


y (tk+1 ) ≈ yk+1 = yk + h ,
2
với k = 0, 1, 2, . . . , n − 1.
Việc tính toán theo công thức Euler cải tiến rất phức tạp vì cả 2 vế đều
chứa yk+1 là ẩn cần tìm. Để đơn giản ta thay yk+1 ở vế phải bởi

yk + hf (tk , yk ).

PHƯƠNG TRÌNH VI PHÂN 13 / 56


Bài toán Cauchy Công thức Euler cải tiến

Lúc này ta có công thức

f (tk , yk ) + f (tk+1 , yk + hf (tk , yk ))


y (xk+1 ) ≈ yk+1 = yk + h ,
2
k = 0, 1, 2, . . . , n − 1.

PHƯƠNG TRÌNH VI PHÂN 14 / 56


Bài toán Cauchy Công thức Euler cải tiến

Ví dụ
Sử dụng phương pháp Euler cải tiến để xấp xỉ nghiệm của bài toán Cauchy
 0
y (t) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5

với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .

PHƯƠNG TRÌNH VI PHÂN 15 / 56


Bài toán Cauchy Công thức Euler cải tiến

2−0
Với n = 10 thì h = = 0.2, y0 = 0.5. Công thức tính nghiệm gần
10
đúng là
f (tk , yk ) + f (tk+1 , yk + hf (tk , yk ))
yk+1 = yk + h
2
với k = 0, 1, . . . , 9.
Bấm máy.
Y = Y + 0.1 × (Y − M 2 + 1 + Y + 0.2(Y − M 2 + 1) − (X + 0.2)2 + 1) :
M = M + 0.2
1 CALC Y = 0.5 = M = 0 =
2 Y =, M = 0.2

PHƯƠNG TRÌNH VI PHÂN 16 / 56


Bài toán Cauchy Công thức Euler cải tiến

Cách 2. X0 = 0 Shift-Sto E ; Y0 = 0.5 Shift-Sto F ;


Nhập hf (X , Y ) = 0.2 × (Y − M 2 + 1)
1 CALC Y = F , M = E ⇒ Shift- Sto- A
2 CALC Y = F + A, M = E + h ⇒ Shift- Sto- B
3 F = F + (A + B)/2, E = E + h

PHƯƠNG TRÌNH VI PHÂN 17 / 56


Bài toán Cauchy Công thức Euler cải tiến

k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5 0.5000000 0.0000000
1 0.2 0.826 0.8292986 0.0032986
2 0.4 1.20692 1.2140877 0.0071677
3 0.6 1.6372424 1.6489406 0.0116982
4 0.8 2.110235728 2.1272295 0.0169938
5 1.0 2.617687588 2.6408591 0.0231715
6 1.2 3.149578858 3.1799415 0.0303627
7 1.4 3.693686206 3.7324000 0.0387138
8 1.6 4.235097172 4.2834838 0.0483866
9 1.8 4.755618549 4.8151763 0.0595577
10 2.0 5.23305463 5.3054720 0.0724173

PHƯƠNG TRÌNH VI PHÂN 18 / 56


Bài toán Cauchy Công thức Euler cải tiến

Bài tập

Sử dụng công thức Euler và công thức Euler cải tiến để xấp xỉ nghiệm của
các bài toán sau
1 y 0 = te 3t − 2y , 0 ≤ t ≤ 1, y (0) = 0 với h = 0.5.
2 y 0 = cos 2t + sin 3t, 0 ≤ t ≤ 1, y (0) = 1 với h = 0.25
3 y 0 = 1 + y /t, 1 ≤ t ≤ 2, y (1) = 2 với h = 0.25.
1+t
4 y0 = , 1 ≤ t ≤ 2, y (1) = 2, với h = 0.25
1+y

PHƯƠNG TRÌNH VI PHÂN 19 / 56


Bài toán Cauchy Công thức Runge-Kutta

Công thức Runge- Kutta bậc hai


Xét khai triển Taylor bậc hai của y (t), ta có

h2 00 h3
y (tk+1 ) = y (tk ) + hy 0 (tk ) + y (tk ) + y 000 (ξ)
2 3!
h2 0 h3
= y (tk ) + hf (tk , y (tk )) + f (tk , y (tk )) + y 000 (ξ)
2 3!
Ta lại có
∂f ∂f
f 0 (tk , y (tk ) = (tk , y (tk )) + (tk , y (tk )).y 0 (tk )
∂t ∂y

và y 0 (tk ) = f (tk , y (tk ))



h ∂f h ∂f
y (tk+1 ) ≈ y (tk )+h f (tk , y (tk )) + (tk , y (tk )) + (tk , y (tk )).f (tk , y (
2 ∂t 2 ∂y

PHƯƠNG TRÌNH VI PHÂN 20 / 56


Bài toán Cauchy Công thức Runge-Kutta

Từ công thức khai triển Taylor


 
∂f ∂f
a1 f (tk + α,y (tk ) + β) ≈ a1 f (tk , y (tk ) + α (tk , y (tk ) + β (tk , y (tk ))
∂t ∂y
∂f ∂f
= a1 f (tk , y (tk )) + a1 α (tk , y (tk )) + a1 β (tk , y (tk ))
∂t ∂y

Chọn a1 , α, β thỏa
h h
1 = a1 , = a1 α, f (tk , y (tk )) = a1 β
2 2
ta được
h h
a1 = 1, α= , β= f (tk , y (tk ))
2 2
Vậy  
h h
y (tk+1 ) ≈ y (tk ) + hf tk + , y (tk ) + f (tk , y (tk ))
2 2

PHƯƠNG TRÌNH VI PHÂN 21 / 56


Bài toán Cauchy Công thức Runge-Kutta

Công thức điểm giữa

y0 = α
  
h h
yk+1 = yk + h f tk + , yk + f (tk , yk )
2 2

với k = 0, 1, . . . , n − 1 và sai số O(h2 ).

PHƯƠNG TRÌNH VI PHÂN 22 / 56


Bài toán Cauchy Công thức Runge-Kutta

Nếu ta sử dụng

a1 f (t, y ) + a2 f (t + α, y + βf (t, y ))

1
và đồng nhất các hệ số, ta có a1 = a2 = và α = β = h. Ta có công
2
thức Euler cải tiến
Công thức Euler cải tiến

y0 = α
h
yk+1 = yk + [f (tk , yk ) + f (tk+1 , yk + hf (tk , yk ))]
2

với k = 0, 1, . . . , n − 1 và sai số O(h2 ).

PHƯƠNG TRÌNH VI PHÂN 23 / 56


Bài toán Cauchy Công thức Runge-Kutta

Công thức Runge-Kutta có độ chính xác cao hơn công thức Euler, vì dùng
khai triển Taylor nghiệm y = y (x) của bài toán (1) với nhiều số hạng hơn.
Sử dụng quá trình xây dựng trên đối với công thức Taylor bâc cao hơn, ta
có thể xây dựng Phương pháp Runge - Kutta với các bậc cao, và phổ biến
nhất là bậc 4


1
yk+1 = y (tk + h) ≈ yk + (K1k + 2K2k + 2K3k + K4k )


6



K1k = hf (t
k , yk )




K1k

h


K2k = hf tk + , yk +
 2 2 
K2k
 
 h
K3k


 = hf tk + , yk +
2 2



 Kk
 k
= hf (tk + h, yk + K3 )
4

PHƯƠNG TRÌNH VI PHÂN 24 / 56


Bài toán Cauchy Công thức Runge-Kutta

Ví dụ
Sử dụng phương pháp Runge-Kutta bậc 4 để xấp xỉ nghiệm của bài toán
Cauchy  0
y (x) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5
với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .

PHƯƠNG TRÌNH VI PHÂN 25 / 56


Bài toán Cauchy Công thức Runge-Kutta

Giải.
2−0
Với n = 10 thì h = = 0.2, tk = 0.2k, y0 = 0.5. Ta có
10

K1k = hf (tk , yk ) = 0.2(yk − 0.04k 2 + 1),


" #
K1k K1k h 2
   
k h
K2 = hf tk + , yk + = h yk + − tk + +1 ,
2 2 2 2
" #
K2k K2k h 2
   
k h
K3 = hf tk + , yk + = h yk + − tk + +1 ,
2 2 2 2
h i
K4k = hf (tk + h, yk + K3k ) = h yk + K3k − (xk + h)2 + 1 .

Công thức tính nghiệm gần đúng là


1
yk+1 = yk + (K1k + 2K2k + 2K3k + K4k )
6
với k = 0, 1, . . . , 9.
PHƯƠNG TRÌNH VI PHÂN 26 / 56
Bài toán Cauchy Công thức Runge-Kutta

Bấm máy. 0.2(Y − M 2 + 1)


Tính K10 . CALC M = 0, Y = 0.5 ⇒ K10 Shift-STO-A
Tính K20 . CALC M = 0 + 0.2 ÷ 2, Y = 0.5 + A ÷ 2. ⇒ K20 Shift-STO-B
Tính K30 . CALC M = 0 + 0.2 ÷ 2, Y = 0.5 + B ÷ 2. ⇒ K30 Shift-STO-C
Tính K40 . CALC M = 0 + 0.2, Y = 0.5 + C . ⇒ K40 Shift-STO-D

PHƯƠNG TRÌNH VI PHÂN 27 / 56


Bài toán Cauchy Công thức Runge-Kutta

1
y (0.2) ≈ y1 = y0 + (K10 + 2K20 + 2K30 + K40 )
6
1
= 0.5 + (A + 2B + 2C + D) ≈ 0.8292933
6
Shift - STO - F

PHƯƠNG TRÌNH VI PHÂN 28 / 56


Bài toán Cauchy Công thức Runge-Kutta

k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5000000 0.5000000 0.0000000
1 0.2 0.8292933 0.8292986 0.0000053
2 0.4 1.2140762 1.2140877 0.0000114
3 0.6 1.6489220 1.6489406 0.0000186
4 0.8 2.1272027 2.1272295 0.0000269
5 1.0 2.6408227 2.6408591 0.0000364
6 1.2 3.1798942 3.1799415 0.0000474
7 1.4 3.7323401 3.7324000 0.0000599
8 1.6 4.2834095 4.2834838 0.0000743
9 1.8 44.8150857 4.8151763 0.0000906
10 2.0 5.3053630 5.3054720 0.0001089

PHƯƠNG TRÌNH VI PHÂN 29 / 56


Bài toán Cauchy Công thức Runge-Kutta

Bài tập

Sử dụng công thức Runge - Kutta bậc 4 để xấp xỉ nghiệm cho các phương
trình sau
y  y 2
1 y0 = − với 1 ≤ t ≤ 2, y (1) = 1 và h = 0.1, nghiệm chính
t t
xác y (t) = t/(1 + ln t).
y  y 2
2 y0 = 1 + + với 1 ≤ t ≤ 3, y (1) = 0 và h = 0.2, nghiệm chính
t t
xác y (t) = t tan(ln t).
3 y 0 = −5y + 5t 2 + 2t với 0 ≤ t ≤ 1, y (0) = 1/3 và h = 0.1, nghiệm
1
chính xác y (t) = t 2 + e −5t .
3

PHƯƠNG TRÌNH VI PHÂN 30 / 56


Hệ phương trình vi phân

Hệ phương trình vi phân

Xét hệ phương trình vi phân


 0
 x (t) = f (t, x(t), y (t))
 0

y (t) = g (t, x(t), y (t))
t ∈ [t0 , t0 + H]

 x(t0 ) = α
y (t0 ) = β

H
Chia đoạn [t0 , t0 + H] thành n đoạn nhỏ bằng nhau có độ dài h = . Các
n
điểm chia là tk = t0 + kh, k = 0, 1, . . . , n. Giá trị gần đúng tại điểm tk của
x(t) là xk = x(tk ), của y (t) là yk = y (tk )

PHƯƠNG TRÌNH VI PHÂN 31 / 56


Hệ phương trình vi phân Công thức Euler

Công thức Euler


 x(tk ) ≈ xk = xk−1 + hf (tk−1 , xk−1 , yk−1 )
y (tk ) ≈ yk = yk−1 + hg (tk−1 , xk−1 , yk−1 )
k = 1, 2, . . . , n

PHƯƠNG TRÌNH VI PHÂN 32 / 56


Hệ phương trình vi phân Công thức Euler cải tiến

Công thức Euler cải tiến



 K1x = hf (tk−1 , xk−1 , yk−1 )
K1y = hg (tk−1 , xk−1 , yk−1 )




K2x = hf (tk−1 + h, xk−1 + K1x , yk−1 + K1y )





 K2y = hg (tk−1 + h, xk−1 + K1x , yk−1 + K1y )
1

 x(tk ) ≈ xk = xk−1 + (K1x + K2x )

 2

 1

 y (tk ) ≈ yk = yk−1 + (K1y + K2y )
2



k = 1, 2, . . . , n

PHƯƠNG TRÌNH VI PHÂN 33 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Công thức Runge-Kutta bậc bốn




 K1x = hf (tk−1 , xk−1 , yk−1 )
K1y = hg (t
k−1 , xk−1 , yk−1 )



 
h K1x K1y


K2x = hf tk−1 + , xk−1 + , yk−1 +





  2 2 2 
h K1x K1y


K2y = hg tk−1 + , xk−1 + , yk−1 +





  2 2 2 
h K2x K2y


K3x = hf tk−1 + , xk−1 + , yk−1 +


 2 2 2 
 h K2x K2y
K3y = hg tk−1 + , xk−1 + , yk−1 +





 2 2 2
K4x = hf (tk−1 + h, xk−1 + K3x , yk−1 + K3y ),







 K4y = hg (tk−1 + h, xk−1 + K3x , yk−1 + K3y )
1


x(tk ) ≈ xk = xk−1 + (K1x + 2K2x + 2K3x + K4x )




 6

 1
y (tk ) ≈ yk = yk−1 + (K1y + 2K2y + 2K3y + K4y )


6
PHƯƠNG TRÌNH VI PHÂN 34 / 56
Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Ví dụ
Cho hệ  0
 x (t) = tx − 2y + 1
 0

y (t) = 2x + ty + sin t
, t>1

 x(1) = 0.25
y (1) = 0.75

Sử dụng công thức Euler cải tiến để xấp xỉ giá trị của x(t) và y (t) tại
t = 1.2 với bước h = 0.2.

PHƯƠNG TRÌNH VI PHÂN 35 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Ta có t0 = 1, x0 = 0.25, y0 = 0.75, h = 0.2,


f (t, x, y ) = tx − 2y + 1,
g (t, x, y ) = 2x + ty + sin t

K1x = hf (t0 , x0 , y0 ) = h(t0 x0 − 2y0 + 1) = −0.05


K1y = hg (t0 , x0 , y0 ) = h(2x0 + t0 y0 + sin t0 ) = 0.4183
K2x = hf (t0 + h, x0 + K1x , y0 + K1y )
= h[(t0 + h)(x0 + K1x ) − 2(y0 + K1y ) + 1] = −0.2193
K2y = hg (t0 + h, x0 + K1x , y0 + K1y )
= h[2(x0 + K1x ) + (t0 + h)(y0 + K1y ) + sin(t0 + h)] = 0.5468

1
x(1.2) ≈ x1 = x0 + (K1x + K2x ) = 0.1153
2
1
y (1.2) ≈ y1 = y0 + (K1y + K2y ) = 1.2325
2

PHƯƠNG TRÌNH VI PHÂN 36 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Đối với phương trình vi phân cấp 2,


 00
 x (t) = F (t, x(t), x 0 (t))
x(t0 ) = α t ∈ [t0 , t0 + H]
 0
x (t0 ) = β

được chuyển về hệ phương trình vi phân cấp 1 bằng cách đặt y (t) = x 0 (t)
 0
 x (t) = f (t, x(t), y (t)) = y
 0

y (t) = g (t, x(t), y (t)) = F (t, x, y )
 x(t0 ) = α

y (t0 ) = β

PHƯƠNG TRÌNH VI PHÂN 37 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Ví dụ
Cho phương trình vi phân cấp 2

x 00 − 2x 0 + 2x = e 2t . sin t, (0 < t < 1)

với điều kiện ban đầu x(0) = −0.4, x 0 (0) = −0.6.


Dùng phương pháp Runge-Kutta bậc 4 để xấp xỉ nghiệm gần đúng của
phương trình với bước h = 0.1.
So sánh kết quả thu được với nghiệm chính xác

x(t) = 0.2e 2t (sin t − 2 cos t),

y (t) = x 0 (t) = 0.2e 2t (4 sin t − 3 cos t).

PHƯƠNG TRÌNH VI PHÂN 38 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

Đặt y (t) = x 0 (t). Phương trình đã cho được biến đổi thành hệ
 0
 x (t) = f (t, x(t), y (t)) = y
 0
y (t) = g (t, x(t), y (t)) = −2x + 2y + e 2t sin t


 x(0) = −0.4
y (0) = −0.6

Với h = 0.1 ta có

PHƯƠNG TRÌNH VI PHÂN 39 / 56


Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn



 K1x = h.yk−1
K1y = h(−2x 2tk−1 . sin t
 k−1 + 2yk−1
 +e k−1 )




K1y


K2x = h yk−1 +





  2 
h K1x K1y


K2y = hg tk−1 + , xk−1 + , yk−1 +





  2 2 2 
h K2x K2y


K3x = hf tk−1 + , xk−1 + , yk−1 +


 2 2 2 
 h K2x K2y
K3y = hg tk−1 + , xk−1 + , yk−1 +





 2 2 2
K4x = hf (tk−1 + h, xk−1 + K3x yk−1 + K3y ),







 K4y = hg (tk−1 + h, xk−1 + K3x , yk−1 + K3y )
1


x(tk ) ≈ xk = xk−1 + (K1x + 2K2x + 2K3x + K4x )




 6

 1
y (tk ) ≈ yk = yk−1 + (K1y + 2K2y + 2K3y + K4y )


6
với k = 1, 2, . . . , n.
PHƯƠNG TRÌNH VI PHÂN 40 / 56
Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn

tk x(tk ) xk x 0 (tk ) yk
0.0 −0.4000 −0.4000 −0.60000 −0.6000
0.1 −0.4617 −0.4617 −0.6316 −0.6316
0.2 −0.5256 −0.5256 −0.6401 −0.6401
0.3 −0.5886 −0.5886 −0.6136 −0.6136
0.4 −0.6466 −0.6466 −0.5366 −0.5366

PHƯƠNG TRÌNH VI PHÂN 41 / 56


Bài toán biên tuyến tính cấp 2 Đặt vấn đề

Các phương pháp tìm nghiệm gần đúng của phương trình vi phân
thường đòi hỏi các điều kiện được cho tại một thời điểm ban đầu nào
đó.
Đối với phương trình vi phân bậc hai, ta cần 2 giá trị y (x0 ) và y 0 (x0 ).
Tuy nhiên, nhiều bài toán trong thực tế cho thấy điều kiện của hàm
cần tìm được cho tại nhiều thời điểm khác nhau. Vấn đề này dẫn tới
việc tìm nghiệm gần đúng của 1 dạng bài toán thứ hai được gọi là bài
toán biên.

PHƯƠNG TRÌNH VI PHÂN 42 / 56


Bài toán biên tuyến tính cấp 2 Đặt vấn đề

Introduction
A common problem in civil engineering concerns the deflection of a beam of rectangular
cross section subject to uniform loading while the ends of the beam are supported so that
they
Xétundergo no deflection.
bài toán

S S
0 l x
w(x)

Suppose that l, q, E, S, and I represent, respectively, the length of the beam, the intensity
of the uniform load, the modulus of elasticity, the stress at the endpoints, and the central
moment of inertia. The differential equation approximating the physical situation is of the
form
d2w S qx
(x) = w(x) + (x − l),
dx 2 EI 2EI
where w(x) is the deflection a distance x from
PHƯƠNG theVI left
TRÌNH PHÂNend of the beam. Since no deflection
43 / 56
Bài toán biên tuyến tính cấp 2 Đặt vấn đề

Trong phần này chúng ta chỉ xét bài toán biên của phương trình vi
phân thường tuyến tính cấp hai với điều kiện biên được cho ở 2 điểm
có dạng

p(x)y 00 (x) + q(x)y 0 (x) + r (x)y (x) = f (x),



a < x < b,
y (a) = α, y (b) = β.

với phương pháp sai phân hữu hạn.

PHƯƠNG TRÌNH VI PHÂN 44 / 56


Bài toán biên tuyến tính cấp 2 Phương pháp sai phân hữu hạn

Phương pháp sai phân hữu hạn

Chọn số tự nhiên bất kỳ n > 0. Chia đều đoạn [a, b] thành n đoạn bởi
các điểm chia x0 = a, xk = x0 + kh, k = 1, 2, . . . , n − 1, xn = b với
b−a
h= .
n
Tại các nút xk , k = 1, 2, . . . , n − 1 bên trong đoạn [a, b] sử dụng công
thức sai phân hướng tâm, ta có

y (xk+1 ) − y (xk−1 ) yk+1 − yk−1


y 0 (xk ) ≈ =
2h 2h

PHƯƠNG TRÌNH VI PHÂN 45 / 56


Bài toán biên tuyến tính cấp 2 Phương pháp sai phân hữu hạn

y (xk+1 ) − 2y (xk ) + y (xk−1 )


y 00 (xk ) ≈
h2
yk+1 − 2yk + yk−1
=
h2

Thay vào phương trình đã cho ta được


yk+1 − 2yk + yk−1 yk+1 − yk−1
pk 2
+ qk + rk yk = fk ,
h 2h
∀k = 1, 2, . . . , n − 1
với pk = p(xk ), qk = q(xk ), rk = r (xk ) và fk = f (xk ).

PHƯƠNG TRÌNH VI PHÂN 46 / 56


Bài toán biên tuyến tính cấp 2 Phương pháp sai phân hữu hạn

Từ các điều kiện biên y0 = α, yn = β sau khi biến đổi ta thu


được hệ phương trình

 y0 = α, yn= β 
p qk  2pk p qk 
k k
− yk−1 + rk − 2 yk + 2 + yk+1 = fk
h2 2h h h 2h

∀k = 1, 2, . . . , n − 1.
Đây chính là hệ phương trình đại số tuyến tính cấp
n − 1 : AY = B với A là ma trận
2p1 p1 q1
 
r 1 − 2 2
+ 0 ... 0
 p2 hq2 h 2p 2h
 
2 p2 q2 
 − r2 − 2 + ... 0 
A= h 2 2h h h 2 2h 
... ... ... ... ...

 
 2pn−1 
0 0 0 . . . rn−1 −
h2
PHƯƠNG TRÌNH VI PHÂN 47 / 56
Bài toán biên tuyến tính cấp 2 Phương pháp sai phân hữu hạn

Y = [y1 , y2 , . . . , yn−1 ]T
và p
 1 q1  
f1 − − α
 h2 2h 

 f2 

B=
 ... 

 p fn−2 q
 
  
n−1 n−1
fn−1 − + β
h2 2h

PHƯƠNG TRÌNH VI PHÂN 48 / 56


Bài toán biên tuyến tính cấp 2 Ma trận 3 đường chéo

Ma trận A ở trên là ma trận 3 đường chéo. Để giải hệ phương trình trên


thì ta dùng phương pháp phân rã LU.
 
a11 a12 0 . . . 0 0
 a21 a22 a23 . . . 0 0 
 
 0 a32 a33 . . . 0 0 
A=  
 ... ... ... ... ... ... 
 0 0 0 . . . an−1,n−1 an−1,n 
0 0 0 . . . an,n−1 ann

PHƯƠNG TRÌNH VI PHÂN 49 / 56


Bài toán biên tuyến tính cấp 2 Ma trận 3 đường chéo

Khi đó phân rã Doolittle cho ta


 
1 0 0 ... 0
 `21 1 0 ... 0 
 
L=  0 `32 1 ... 0 ,

 ... ... ... ... ... 
0 0 0 ... 1
 
u11 u12 0 ... 0
 0 u22 u23 ... 0 
 
U =  0 0 u33 ... 0 

 ... ... ... ... ... 
0 0 0 . . . unn

PHƯƠNG TRÌNH VI PHÂN 50 / 56


Bài toán biên tuyến tính cấp 2 Ví dụ

Ví dụ
Xét bài toán biên

 y 00 − y 0 − 2y = cos x, π
0<x <
π 2
 y (0) = −0.3, y ( ) = −0.1
2
có nghiệm chính xác

y (x) = −0.1(sin x + 3 cos x).

Sử dụng phương pháp sai phân hữu hạn xấp xỉ nghiệm gần đúng và so
π
sánh với nghiệm chính xác trong trường hợp h = .
8

PHƯƠNG TRÌNH VI PHÂN 51 / 56


Bài toán biên tuyến tính cấp 2 Ví dụ

Ta có hệ phương trình


 y0 = −0.3,  y4 =−0.1
 1 −1 2
 
1 −1

− yk−1 + −2 − 2 yk + + yk+1 = cos(xk )

 h2 2h h h2 2h
∀k = 1, 2, 3.



 y0 = −0.3, y4 = −0.1
 1 2
( h2 + 2h )y0 + (−2 − h2 )y1 + ( h12 − 2h
1 1
)y2 = cos( π8 )

( 12 + 2h
1
)y1 + (−2 − h22 )y2 + ( h12 − 2h
1
)y3 = cos( π4 )
 1h

1
)y2 + (−2 − h22 )y3 + ( h12 − 2h
1
)y4 = cos( 3π

( h2 + 2h 8
)
 (−2 − h22 )y1 +( h12 − 2h
1
cos( π8 ) − ( h12 + 2h
1

)y2 +0y3 = )y0
⇔ ( 1 + 2h
1
)y1 +(−2 − h22 )y2 +( h12 − 2h
1
)y3 = cos( π4 )
 h2
0y1 +( h12 + 2h
1
)y2 +(−2 − h22 )y3 = cos( 3π
8
) − ( h12 − 2h1
)y4

PHƯƠNG TRÌNH VI PHÂN 52 / 56


Bài toán biên tuyến tính cấp 2 Ví dụ

Bấm máy.
π
−Shift+STO+M
8
Mode - eqn - anx+bny+cnz=dn
k xk yk y (xk ) |y (xk ) − yk |
0 0 −0.30000 −0.30000 0.00000
π
1 −0.31569 −0.31543 0.00025
8
π
2 −0.28291 −0.28284 0.00007
4

3 −0.20700 −0.20719 0.00019
8
π
4 −0.10000 −0.10000 0.00000
2

PHƯƠNG TRÌNH VI PHÂN 53 / 56


Bài toán biên tuyến tính cấp 2 Ví dụ

Bài tập
1 Sử dụng phương pháp sai phân hữu hạn giải bài toán
y 00 = 2y 0 − y + xe x − x 0 ≤ x ≤ 2, y (0) = 0, y (2) = −4
với h = 0.5 và so sánh sai số với nghiệm là
y (x) = 61 x 3 e x − 35 xe x + 2e x − x − 2,
2 Sử dụng phương pháp sai phân hữu hạn giải bài toán
y 00 = 4(y − x), 0 ≤ x ≤ 1, y (0) = 0, y (1) = 2
1 1
với h = và h = và so sánh sai số với nghiệm là
2 4
y (x) = e 2 (e 4 − 1)−1 (e 2x − e −2x ) + x,
3 Sử dụng phương pháp sai phân hữu hạn giải bài toán
π π
y 00 + 4y = cos x, 0 ≤ x ≤ , y (0) = 0, y( ) = 0
4 4
π
với h = 8 và so sánh sai số với nghiệm là

−1 2
y (x) = 3 cos 2x − 6 sin 2x + 13 cos x.
PHƯƠNG TRÌNH VI PHÂN 54 / 56
Bài toán biên tuyến tính cấp 2 Ví dụ

Sử dụng phương pháp sai phân hữu hạn giải bài toán
1 y 00 = −(x − 1)y 0 + 2y + (1 − x 2 )e −x , 0 ≤ x ≤ 1, y (0) =
−1, y (1) = 0 với h = 14 .
2 y 00 = x −1 y 0 + 3x −2 y + x −1 − 1, 1 ≤ x ≤ 2, y (1) = y (2) = 0, với
h = 0.5

PHƯƠNG TRÌNH VI PHÂN 55 / 56


The end

THANK YOU FOR ATTENTION

PHƯƠNG TRÌNH VI PHÂN 56 / 56

You might also like