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

Bài giảng Phương pháp tính - Chương 6: Giải gần đúng phương trình vi phân

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 (502.54 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

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


* 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 k = 0,1, ..., n-1
k1 = hf(xk, yk),
k2 = hf(xk+h, yk + k1)


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

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


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 quá
dài, không đủ bộ nhớ, ta phải tính trực tiếp


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



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)


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


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


×