giải phương trình vi phân

36
Chương 6 GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH VI PHÂN

Upload: nhuhoamac

Post on 05-Jan-2016

51 views

Category:

Documents


1 download

DESCRIPTION

Tài liệu tổng hợp các phương pháp giải phương trình vi phân.

TRANSCRIPT

Page 1: Giải Phương trình vi phân

Chương 6

GIẢI GẦN ĐÚNG

PHƯƠNG TRÌNH VI PHÂN

Page 2: Giải Phương trình vi phân

I. GIẢI GẦN ĐÚNG PTVP CẤP 1 :

Xét bài toán Cauchy : tìm nghiệm y=y(x) của phương trình vi phân với giá trị ban đầu y0

y’ = f(x, y), ∀x ∈ [a,b]

y(a) = y0

Các phương pháp giải gần đúng : Công thức Euler Công thức Euler cải tiến Công thức Runge-Kutta

Page 3: Giải Phương trình vi phân

1. Công thức Euler :

Để tìm nghiệm gần đúng của bài toán Cauchy ta chia đoạn [a,b] thành n đoạn nhỏ bằng nhau với bước h = (b-a)/n

xo= a, x1 = x0 +h, ... , xk = x0 + kh, ... , xn = b

Nghiệm gần đúng của bài toán là dãy {yk} gồm các giá trị gần đúng của hàm tại xk

Ta có yk ≈ y(xk) , k =0, n

Page 4: Giải Phương trình vi phân

Công thức Euler :

yk+1 = yk + h f(xk, yk) , k = 0, n-1

Page 5: Giải Phương trình vi phân

Ví dụ : Dùng công thức Euler tìm nghiệm gần đúng của bài toán Cauchy

y’ = y – x2 +1, 0≤x≤1

y(0) = 0.5

với n = 5

Tính sai số biết nghiệm chính xác là :

y(x) = (x+1)2 – 0.5ex

giải

ta có h = 0.2

x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1

Page 6: Giải Phương trình vi phân

Công thức Euler

y0 = 0.5

yk+1 = yk + 0.2 (yk - xk2 +1)

k xk yk y(xk) |y(xk) - yk |

0 0 0.5 0.5 0

1 0.2 0.8 0.8292986 0.0292986

2 0.4 1.152 1.2140877 0.0620877

3 0.6 1.5504 1.6489406 0.0985406

4 0.8 1.98848 2.1272295 0.1387495

5 1 2.458176 2.6408591 0.1826831

Page 7: Giải Phương trình vi phân

* Nhận xét : công thức Euler đơn gian, nhưng sai số còn lớn nên ít được sử dụng

Page 8: Giải Phương trình vi phân

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

yk+1 = yk + (k1+k2)/2 k = 0,1, ..., n-1

k1 = hf(xk, yk),

k2 = hf(xk+h, yk + k1)

Page 9: Giải Phương trình vi phân

Ví dụ :

Làm lại ví dụ trước nhưng dùng công thức Euler cải tiến

giải

ta có h = 0.2

x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1

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

yo = 0.5

yk+1 = yk + (k1 +k2) /2

k1= 0.2(yk - xk2 +1)

k2 = 0.2(yk + k1 – (xk+0.2)2 +1)

Page 10: Giải Phương trình vi phân

k xk yk y(xk) |y(xk) - yk |

0 0 0.5 0.5 0

1 0.2 0.826 0.8292986 0.0033

2 0.4 1.20692 1.2140877 0.0072

3 0.6 1.6372424 1.6489406 0.0117

4 0.8 2.1102357 2.1272295 0.0170

5 1 2.6176876 2.6408591 0.0232

Page 11: Giải Phương trình vi phân

3. Công thức Runge Kutta bậc 4 :

Page 12: Giải Phương trình vi phân

* Chú ý : Lập công thức Runge-Kutta bằng máy tính casio không được vì công thức quá dài, không đủ bộ nhớ, ta phải tính trực tiếp

Page 13: Giải Phương trình vi phân

Ví dụ : Xét bài toán Cauchy

y’ = 2.7xy + cos (x+2.7y), 1.2≤x

y(1.2) = 5.4

Dùng công thức Runge-Kutta tính gần đúng y(1.5) với bước h = 0.3

xo = 1.2, yo = 5.4, y1=y(1.5)

y1 = y0 + (K1+ 2K2+ 2K3+ K4) /6

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

giải

Page 14: Giải Phương trình vi phân

Bấm máy (lập hàm dùng phím calc) ta được

K1 = 4.949578057 K2 = 8.367054617

K3 = 10.33000627 K4 = 19.41193853

y(1.5) = 15.69260639 ≈ 15.6926

Page 15: Giải Phương trình vi phân

II. GIẢI GẦN ĐÚNG HỆ PTVP :

Xét hệ phương trình vi phân cấp 1

y’1 = f1(x, y1, y2, ..., ym)

y’2 = f2(x, y1, y2, ..., ym)

. . .

y’m = fm(x, y1, y2, ..., ym)với a≤ x ≤ b và thỏa điều kiện ban đầu

y1(a) = α1, y2(a) = α2, .... , ym(a) = αm

Nghiệm y = (y1, y2, …, ym)

Page 16: Giải Phương trình vi phân

Để tìm nghiệm gần đúng, ta chia đoạn [a,b] thành n đoạn nhỏ bằng nhau với bước h = (b-a)/n và các điểm chia

xo= a, x1 = x0 +h, ... , xk = x0 + kh, ... , xn = b

Công thức Euler :

yi k+1 = yi k + h fi(xk, y1 k, … , ym k)

∀i=1..m; k = 0.. n-1

Nghiệm gần đúng là dãy { yk=(y1 k, y2 k, …, ym k)}với yi k ≈ yi(xk), i=1,m

Page 17: Giải Phương trình vi phân

Công thức Euler cải tiến : yi k+1 = yi k + (K1 i + K2 i) / 2

K1 i = h fi(xk, y1 k, … , ym k)

K2 i = h fi(xk+h, y1 k+K1 1, … , ym k+K1 m)

∀i=1,m; k = 0, n-1Công thức Runge-Kutta bậc 4 :

yi k+1 = yi k + (K1 i+2K2 i+2K3 i+K4 i) / 6

K1 i = h fi(xk, y1 k, … , ym k)

K2 i = h fi(xk+h/2, y1 k+K11/2, … , ym k+K1 m/2)

K3 i = h fi(xk+h/2, y1 k+K21/2, … , ym k+K2 m/2)

K4 i = h fi(xk+h, y1 k+K31, … , ym k+K3 m)

∀i=1,m; k = 0, n-1

Page 18: Giải Phương trình vi phân

Ví dụ : Sử dụng công thức Euler giải gần đúng hệ pt vi phân

y’1 = 3y1 + 2y2 – (2x2 +1)e2x

y’2 = 4y1 + y2 + (x2 +2x –4) e2x

với 0 ≤x≤0.5

điều kiện ban đầu y1(0)=y2(0)=1

bước h = 0.1

Page 19: Giải Phương trình vi phân

Công thức Euler

y1 0 = 1

y1 k+1 = y1 k + h (3y1k + 2y2 k – (2xk2 +1)e2xk)

y2 0 = 1

y2 k+1 = y2 k + h (4y1k + y2 k + (xk2 +2xk –4) e2xk)

xk y1k y2k

0 1 1

0.1 1.4 1.1

0.2 1.9154 1.3071

0.3 2.5903 1.6729

0.4 3.4870 2.2732

0.5 4.6940 3.2187

Page 20: Giải Phương trình vi phân

III. GIẢI GẦN ĐÚNG PTVP CẤP CAO:

Xét phương trình vi phân cấp m

y(m) = f(x, y, y’, ... , y(m-1)), a≤x≤b

với điều kiện ban đầu

y(a) = α1, y’(a) = α2, .... , y(m-1)(a) = αm

Page 21: Giải Phương trình vi phân

Đặt y1 = y, y2 = y’, y3 = y”, ... , ym = y(m-1)

Ta chuyển phương trình vi phân bậc m về hệ m phương trình vi phân cấp 1

với điều kiện ban đầu

y1(a) = α1, y2(a) = α2, .... , ym(a) = αm,

y’1 = y2

y’2 = y3

. . .

y’m-1 = ym

y’m = f(x, y1, y2, ... , ym)

Page 22: Giải Phương trình vi phân

Ví dụ : Sử dụng công thức Euler giải gần đúng pt vi phân cấp 2 (tính xấp xỉ y và y’)

y “ – 2 y’ + 2y = sinx e2x , 0≤x≤0.5

điều kiện ban đầu

y(0) = -0.4, y’(0) = -0.6

với bước h = 0.1

Page 23: Giải Phương trình vi phân

đặt y1 = y, y2 = y’ chuyển pt về hệ

y’1 = y2

y’2 = sinx e2x– 2 y1 + 2y2

điều kiện y1(0) = -0.4, y2(0) = -0.6

Công thức Eulery1 0 = -0.4y1 k+1 = y1 k + 0.1 y2k y2 0 = -0.6y2 k+1 = y2 k + 0.1 (sinxke2xk - 2y1k +2y2 k)

Page 24: Giải Phương trình vi phân

xk y1 k=y y2 k=y’

0 -0.4 -0.6

0.1 -0.46 -0.64

0.2 -0.524 -0.6638

0.3 -0.5904 -0.6621

0.4 -0.6566 -0.6226

0.5 -0.7189 -0.5292

Page 25: Giải Phương trình vi phân

Ví dụ : Xét bài toán Cauchy

x“(t) = (Mt+5) x2(t) – 2Mx’(t)+1.2t + M, 1≤t

điều kiện ban đầu

x(1) = 1.3M, x’(1) = 1.8M

Dùng công thức Euler cải tiến, xấp xỉ giá trị của hàm x(t) và x’(t) tại điểm t = 1.2 với bước h = 0.2 và M = 2.7

đặt y1 = x, y2 = x’ chuyển pt về hệ

y’1 = y2

y’2 = (Mt+5)y12-2My2+1.2t+M

điều kiện y1(1) = 1.3M, y2(1) = 1.8M

giải

Page 26: Giải Phương trình vi phân

Công thức Euler cải tiến y1 0 = 1.3M y1 1 = y1 0 + (K11+K21)/2 y2 0 = 1.8M y2 1 = y2 0 + (K12+K22)/2

K11= 0.2*y2 0

K21= 0.2*(y2 0+K12)

K12= 0.2( (Mt0+5)y102 -2My20+ 1.2t0+M)

K22= 0.2( (M(t0+h)+5)(y10 +K11)2 -2M(y20+K12) + 1.2(t0+h)+M)

Page 27: Giải Phương trình vi phân

K11 = 0.972 K12 =14.504154

K21 = 3.8728308 K22 = 13.02027163

x(1.2) = y1 1 =5.9324154

x’(1.2) = y2 1=18.622212816

Page 28: Giải Phương trình vi phân

IV. GIẢI PTVP TUYẾN TÍNH CẤP 2 BẰNG PP SAI PHÂN HỮU HẠN :

Xét phương trình vi phân tuyến tính cấp 2 với điều kiện biên

p(x)y” + q(x)y’ + r(x)y = f(x), a≤x≤by(a) = α, y(b) = β

PP sai phân hữu hạn :

Chia đoạn [a,b] thành n đoạn bằng nhau với bước h=(b-a)/n và các điểm nút

x0 = a, x1 = x0 +h, ... , xk = x0 + kh, ... , xn = b

Page 29: Giải Phương trình vi phân

sử dụng các công thức sai phân hướng tâm ta xấp xỉ

y’(xk) ≈ (yk+1 – yk-1) /2h

y”( xk) ≈ (yk+1 – 2yk + yk-1)/h2

với yk là giá trị xấp xỉ của hàm tại điểm xk.

thay xk vào phương trình ta được

pk (yk+1–2yk + yk-1)/h2+ qk (yk+1–yk-1)/(2h) +rkyk= fk

với pk = p(xk), qk = q(xk), rk = r(xk), fk = f(xk),

Page 30: Giải Phương trình vi phân

biến đổi phương trình trên ta thu được hệ phương trình sau :

Đây chính là hệ phương trình tuyến tính

Ay = b

Page 31: Giải Phương trình vi phân

Với A là ma trận 3 đường chéo

Page 32: Giải Phương trình vi phân
Page 33: Giải Phương trình vi phân

Ví dụ : Giải gần đúng pt vi phân cấp 2

y“ - y’ – (x+1)y = x-1, 0≤x≤1

y(0) = 1, y(1) = 0

với bước h = 0.25

giảin = 4x0 = 0, x1 = 0.25, x2 = 0.5, x3 = 0.75, x4 = 1

k 1 2 3

qk -1 -1 -1

rk -1.25 -1.5 -1.75

fk -0.75 -0.5 -0.25

Page 34: Giải Phương trình vi phân

Vậy nghiệm gần đúngy(0) =1, y(0.25) = 0.8093, y(0.5) = 0.5827, y(0.75)=0.3182, y(1)=0

giải hệ phương trình tuyến tính: Ay = b

Page 35: Giải Phương trình vi phân

Ví dụ : Giải gần đúng pt vi phân cấp 2

Mx2y”+xy’-8My = -3M2x2, 1.4≤x≤1.8

y(1.4) = 0.5M, y(1.8) = 1.5M

với bước h = 0.1, M= 2.7

giảin = 4x0 = 1.4, x1 = 1.5, x2 = 1.6, x3 = 1.7, x4 = 1.8

k 1 2 3

pk 6.075 6.912 7.803

qk 1.5 1.6 1.7

rk -21.6 -21.6 -21.6

fk -49.2075 -55.9872 -63.2043

Page 36: Giải Phương trình vi phân

giải hệ phương trình tuyến tính : Ay = b

Vậy nghiệm gần đúngy(1.4) =1.35, y(1.5) = 2.0499, y(1.6) = 2.7247, y(1.7)=3.3882, y(1.8)=4.05