Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 25

Trường Đại học Bách khoa tp Hồ Chí Minh

Bộ môn Toán ứng dụng


-------------------------------------------------------------------------------------

Môn học Phương pháp tính

Chương 6: Phương trình vi phân

Giảng viên: TS Đặng Văn Vinh


Nội dung chương 6

1/ Phương pháp Euler giải phương trình vi phân

2/ Phương pháp Euler cải tiến

3/ Phương pháp Runge - Kutta

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


1/ Phương pháp Euler

Xét phương trình vi phân y '  f  x, y  , y  x0   y0 , a  x  b


Chia a, b  thành n đoạn nhỏ bằng nhau bởi các điểm chia
ba
xi  a  ih, i  0,1,..., n  1, xn  b, h 
n
Gọi nghiệm đúng của phương trình là y  x 
Giá trị của nghiệm đúng tại xi là y  xi 
Giá trị của gần đúng của nghiệm tại xi là yi

Khai triển Taylor của y  x  tại xi đến cấp 1 với phần dư Lagrange
 x  xi  ''
2

y  x   y  xi    x  xi  y  xi  
'
y c  , c   xi , x 
2!

Thay x  xi 1  xi  h, y  xi   f  xi , y  xi  vào đẳng thức trên:


'
h 2 ''
y  xi 1   y  xi   hf  xi , y  xi   y c  , c   xi , x 
2

Thay y  xi  , y  xi 1  lần lượt bởi yi , yi 1 ta có

yi 1  yi  hf  xi , yi  , i  0,1, 2,..., n  1 với y0  y  x0  đã biết.

Đây là công thức Euler giải phương trình vi phân

Người ta chứng minh được sai số của phương pháp Euler:

yi  y  xi   Mh với M là hằng số dương không phụ thuộc vào h.


Ví dụ 1
Cho bài toán Côsi: y '  e x  y , y  0   1. Hãy tìm nghiệm gần đúng bằng
phương pháp Euler trên 0,1 với h  0.5 . yi 1  yi  hf  xi , yi  , i  0,1, 2
y  xi  
i xi yi f  xi , yi  hf  xi , yi 
 
ln e xi  e  1
0 0 1 0.3678794 0.1839397 1

1 0.5 1.1839397 0.504625 0.2523125 1.2140231

2 1 1.4362522 1.489988

A  h * f  X ,Y  : Y  Y  A : X  X  h

A  0.5* e X Y : Y  Y  A : X  X  h

Bấm Calc X  0, Y  1
Ví dụ 2
Cho bài toán Côsi: y '   y  x y , y  2   2 . Hãy tìm nghiệm gần
đúng bằng phương pháp Euler trên 2,3 với h  0.25 .
yi 1  yi  hf  xi , yi  , i  0,1, 2,3

i xi yi hf  xi , yi 
0 2 2 0.2071067812

1 2.25 2.2071067812 0.2838921267

2 2.5 2.4909989 0.3636814406

3 2.75 2.854680348 0.4479161165

4 3 3.302596465 0.5373294278

A  h * f  X ,Y  : Y  Y  A : X  X  h

 
A  0.25* Y  X Y : Y  Y  A : X  X  0.25

Bấm Calc X  2, Y  2
1/ Phương pháp Euler cải tiến
Xét phương trình vi phân y '  f  x, y  , y  x0   y0 , a  x  b
xi 1
y  xi 1   y  xi    y '  x dx
xi

Tính gần đúng tích phân xác định ở vế trái bằng công thức hình thang
h ' h3 '''
y  xi 1   y  xi    y  xi   y  xi 1   y ci  , ci   xi , xi 1 
'

2 2

Thay y  xi  , y  xi 1  lần lượt bởi yi , yi 1 ta có


h
yi 1  yi   f  xi , yi   f  xi 1 , yi 1  , i  0,1, 2,..., n  1 với y0  y  x0  đã biết.
2
Để đơn giản, để thay yi 1 ở vế phải ta dùng yi 1  yi  hf  xi , yi 

Người ta chứng minh được sai số của phương pháp Euler:


yi  y  xi   Mh 2 với M là hằng số dương không phụ thuộc vào h.
Ví dụ 3
Dùng phương pháp Euler cải tiến giải phương trình vi phân
2  2 xy h
'
y  2
x 1
, y 0   1
2
 
yi 1  yi   f  xi , yi   f xi 1 , yi*1 

trên đoạn 0,1 với h  0.1 . yi*1  yi  hf  xi , yi 
A B
A  h * f  X ,Y  : X  X  h : B  h * f  X ,Y  A  : Y  Y 
2
Ví dụ 4
Dùng phương pháp Euler cải tiến giải phương trình vi phân
2
y y
y '   2 , y 1  1 y  y  h  f  x , y   f  x , y * 
2
x x i 1 i i i i 1 i 1 

trên đoạn 1, 2 với h  0.1 . yi*1  yi  hf  xi , yi 


A B
A  h * f  X ,Y  : X  X  h : B  h * f  X ,Y  A  : Y  Y 
2
3/ Phương pháp Runge - Kutta

Xét phương trình vi phân y '  f  x, y  , y  x0   y0 , a  x  b

Chia a, b  thành n đoạn nhỏ bằng nhau bởi các điểm chia
ba
xi  a  ih, i  0,1,..., n  1, xn  b, h 
n
Khai triển Taylor của y  x  tại xi đến cấp 2 với phần dư Lagrange
 x  xi   x  xi 
2 3

y  x   y  xi    x  xi  y '  xi   y ''  xi   y '''  c  , c   xi , x 


2! 3!

Thay x  xi 1  xi  h, y  xi   f  xi , y  xi  vào đẳng thức trên:


'

h 2 '' h3 '''
y  xi 1   y  xi   hy  xi   y  xi   y  c  , c   xi , x 
'

2! 3!
với y '  xi   f  xi , y  xi  , y ''  xi   f x'  xi , y  xi   f y'  xi , y  xi  y '  xi 

h2 '
 yi 1  yi  hy   f x  xi , yi   f y'  xi , yi  yi'    h 3
2!
'
i  
Công thức Runge – Kutta bậc bốn (RK4)
1
yi 1  yi   K1   2 K 2   2 K 3   K 4  
i i i i

6 

K1   hf  xi , yi 
i

 h K 
K 2   hf  xi  , yi  1 
i

 2 2 

 h K 
K 3   hf  xi  , yi  2 
i

 2 2 

K 4   hf  xi  h, yi  K 3 
i
i  0,1, 2,..., n  1
Ví dụ 5

Nhập 0.25*  X 2  Y  cos  X  Y 


Bấm Calc X? 1 Y? M=3.2 1.1725652
Bấm shift +sto +A
Bấm Calc X? 1+0.125 Y? M+A/2 1.213537107
Bấm shift +sto +B
Bấm Calc X? 1+0.125 Y? M+B/2 1.213692
Bấm shift +sto +C
Bấm Calc X? 1+0.25 Y? M+C 1.290504862
1
 y 1.25    A  2 B  2C  D 
6
Lặp lại quá trình trên với A, B, C, D mới để tính y(1.5)
Ví dụ 6

Nhập 
0.2* Y 2  X  3.2 
Bấm Calc X? 1 Y? 0.5
Bấm shift +sto +A
Bấm Calc X? 1.1 Y? 0.5+A/2
Bấm shift +sto +B
Bấm Calc X? 1.1 Y? 0.5+B/2
Bấm shift +sto +C
Bấm Calc X? 1.2 Y? M+C
1
 y 1.2    A  2 B  2C  D 
6
4/ Hệ phương trình vi phân
 dx
 dt  f t , x t  , y t 
 at b
 dy
  g t , x t  , y t 
 dt
 x  t0    , y  t0   

sử dụng cả ba công thức: Euler, Euler cải tiến, Runge – Kutta cấp 4
ta có các công thức để giải hệ phương trình vi phân cấp 1.
Chia a, b  thành n đoạn nhỏ bằng nhau bởi các điểm chia
ba
ti  a  ih, i  0,1,..., n  1, xn  b, h 
n
Công thức Euler cho hệ  xk 1  xk  hf tk , xk , yk 

 yk 1  yk  hg tk , xk , yk 

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

 h
x
 i 1  xi 
2
f  t i , xi , yi   f 
t , x *
i 1 i 1 , y *
i 1 

 y  y  h  g t , x , y   g t , x * , y *
 
 i 1 2
i i i i i 1 i 1 i 1

 xi*1  xi  hf ti , xi , yi 
 *
 yi 1  yi  hg ti , xi , yi 
Công thức Runge – Kutta bậc bốn (RK4) cho hệ
 1  i  i  i  i  
x
 i 1  x  K  2 K  2 K  K
6
i 1 2 3 4 


 y  y  1  Li   2 Li   2 Li   Li  
6
4 
 i 1 i 1 2 3

K1   hf ti , xi , yi 
i

 K1  L1  
i i
i  h
K2  hf  ti  , xi  , yi  
 2 2 2
 
 K 2  L2  
i i
i  h
K  hf  ti  , xi  , yi  
3  2 2 2
 
K 4 
i

 hf ti  h, xi  K 3  , yi  L3 
i i

Tương tự cho L1  , L2  , L3  , L4 
i i i i
Đổi biến z  x   y ' x  y'  z
 xM
 x 1
Ta có hệ z'  z x y x
 e 1
x
e 1 e 1
 y 1  0; z 1  M

Công thức Euler cho hệ  yk 1  yk  hf  xk , yk , zk 



 zk 1  zk  hg  xk , yk , zk 
Đổi biến z  x   y ' x 
y'  z
Ta có hệ  z '   xz  x 2 y  e x

 y 1  0.1; z 1  0.5

Công thức Euler cải tiến cho hệ
 h
y
 i 1  yi 
2
f  x i , y i , z i   f xi 1 , y *
, z *
i 1 i 1 

 z  z  h  g  x , y , z   g x , y* , z*
 
 i 1 i 2  i i i i 1 i 1 i 1

 yi*1  yi  hf  xi , yi , zi 
 *
 zi 1  zi  hg  xi , yi , zi 
5/ Phương pháp sai phân hữu hạn
 p  x  y ''  q  x  y '  r  x  y  f  x 
Xét phương trình  a  x  b, y  a    , y b   


Chia đoạn a, b  thành n đoạn nhỏ bằng nhau bởi các điểm
xk  a  kh, k  0...n  1, xn  b

Khai triển Taylor của y đến cấp 3 tại xk

 x  xk   x  xk 
2 3

y  x   y  xk    x  xk  y '  xk   y ''  xk   y '''  xk 


2! 3!
Thay x  xk 1  xk  h và x  xk 1  xk  h
h 2 '' h3 '''
y  xk 1   y  xk   hy  xk   y  xk   y  xk 
'

2! 3!
2 3
h h
y  xk 1   y  xk   hy '  xk   y ''  xk   y '''  xk 
2! 3!
y  xk 1   y  xk 1   2 y  xk   h 2 y ''  xk 

1 yk 1  2 yk  yk 1
y  xk   2  y  xk 1   2 y  xk   y  xk 1  
''

h h2
1 yk 1  yk 1
y  xk  
'

2h
 y  xk 1   y  xk 1  
2h

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


y  xk 1   2 y  xk   y  xk 1  y  xk 1   y  xk 1 
2
p  xk   q  xk   r  xk  y  xk   f  xk 
h 2h
yk 1  2 yk  yk 1 yk 1  yk 1
2
pk  qk  rk yk  f k , k  1, 2,..., n  1
h 2h
y0   , yn  

 pk qk   2 pk   pk qk 
 2  y 
 k 1  kr  2  k
y   2   yk 1  f k
h 2h   h  h 2h 
Ta có hệ phương trình ma trận AX  b
 2 p1 p1 q1 
r 
 1 h2  0   0 
h 2 2h
 
 p2  q2 2p
r2  22
p2 q2
  0 
 h 2 2h h h 2 2h 
 0 0 0  0 0 
A 
      
 
 2 pn  2 pn  2 qn  2 
0 0 0  rn  2  
 h2 h 2
2h 
 pn 1 qn 1 2 pn 1 
 0 0 0   rn 1  2 
 h2 2h h 

  p1 q1  
 f1   2    
 y1    h 2h 

 y 
 2   f2 
 
X    ,b    
 
 yn  2   f n2 
y   
 n 1   p q
 f  n 1  n 1   
 n 1  h 2 
2h  
 
Trường hợp A vuông cấp 3: N  3

 2 p1 p1 q1 
r 
 1 h2 2
 0 
h 2h
 
p q 2p p2 q2 
A   22  2 r2  22 
h 2h h h 2
2h 
 p3 q3 2 p3 
 0  r3  2 
 h 2 2h h 

  p1 q1  
 1  h 2  2h   
f 
 1
y
   
X   y2  , b   f2 
y   
 2 f   p q  
 3  h 2  2h   
3 3

   
Ví dụ 7
Cho ptvp y ''
  xy '
 16 y  4 x, x  0,1, y (0)  0, y (1)  1 .
Sử dụng pp sai phân hữu hạn, tính y  x  trong [0,1], với h  0.25 .

 2 p1 p1 q1 
r 
 1 h2  0 
h 2 2h
 
p q 2p p2 q2 
A   22  2 r2  22 
h 2h h h 2 2h 
 p3 q3 2 p3 
 0  r3  2 
 h 2 2h h 

  p1 q1  
 f1   2
  
 y1    h 2h  
X   y2  , b   f2 
y   
 2  p
 f  3  3 q 
 3  h 2 2h  
   
 2 p1 p1 q1 
r 
 1 h2  0 
h 2 2h
 
p q 2p p2 q2 
A   22  2 r2  22 
h 2h h h 2 2h 
 p3 q3 2 p3 
 0  r3  2 
 h 2 2h h 

  p1 q1  
 f1   2
  
 y1    h 2h  
X   y2  , b   f2 
y   
 2  p
 f  3  3 q 
 3  h 2 2h  
   

You might also like