Tải bản đầy đủ (.pptx) (36 trang)

GIẢI gần ĐÚNG PHƯƠNG TRÌNH VI PHÂN (PHƯƠNG PHÁP TÍNH SLIDE)

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 (411.88 KB, 36 trang )

Chương 6

GIẢI GẦN ĐÚNG
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


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


Công thức Euler :

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



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


Công thức Euler
y0 = 0.5
yk+1 = yk + 0.2 (yk - xk2 +1)

k

x

y(x )
k

|y(x ) - y |
k
k

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

k


y

k


* 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


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

yk+1 = yk + (k1+k2)/2
k1 = hf(xk, yk),
k2 = hf(xk+h, yk + k1)

k = 0,1, ..., n-1


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)



k

x

y
k

y(x )
k

|y(x ) - y |
k
k

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

k


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


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


Ví dụ : Xét bài tố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

giải
Công thức Runge-Kutta bậc 4
xo = 1.2, yo = 5.4, y1=y(1.5)
y1 = y0 + (K1+ 2K2+ 2K3+ K4) /6


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


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)


Để 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

Nghiệm gần đúng là dãy { yk=(y1 k, y2 k, …, ym k)}

với yi k ≈yi(xk), i=1,m
Công thức Euler :
yi k+1 = yi k + h fi(xk, y1 k, … , ym k)
∀i=1..m; k = 0.. n-1


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-1
Cô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


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


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)
x

y
1k

y

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

k

2k


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


Đặ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

y’1 = y2
y’2 = y3
...
y’m-1 = ym
y’m = f(x, y1, y2, ... , ym)
với điều kiện ban đầu
y1(a) = α1, y2(a) = α2, .... , ym(a) = αm,


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


đặ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 Euler
y1 0 = -0.4
y1 k+1 = y1 k + 0.1 y2k
y2 0 = -0.6
y2 k+1 = y2 k + 0.1 (sinxke2xk - 2y1k +2y2 k)


x


y =y
1k

y =y’
2k

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

k


Ví dụ : Xét bài tố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

giải

đặ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



×