24/05/2018, 21:25

Giải gần đúng phương trình vi phân cấp 1

Bài toán Cauchy: Nhắc lại một số phương trình vi phân cấp 1 giải được 1. Biến số phân li 2. Đẳng cấp 3. Tuyến tính 4. Becnuli 5. Vi phân toàn ...

Bài toán Cauchy:

Nhắc lại một số phương trình vi phân cấp 1 giải được

1. Biến số phân li

2. Đẳng cấp

3. Tuyến tính

4. Becnuli

5. Vi phân toàn phần

Bài toán Cauchy

Cho phương trình vi phân cấp 1:

y’ = f(x,y)

Tìm nghiệm y=y(x) của phương trình thỏa mãn điều kiện ban đầu:

y(x0) =y0

Các phương pháp số giải bài toán trên theo cách tiếp cận sau. Chọn bước h đủ bé, xác định các điểm xi=x0 +h (i=0,1,…) và tính gần đúng giá trị y(xi) bởi yi.

Phương pháp Euler.

Ta có công thức số gia hữu hạn Lagrange:

y(xi+1) = y(xi) + y’(ci) h

Phương pháp Euler thay gần đúng y’(ci) bởi f(xi,yi) và nhận được công thức tính xấp xỉ yi như sau:

yi+1 = yi +hf(xi,yi)

Giả sử trong miền R={ |x-x0| ≤a; |y-y0| ≤b} hàm f(x,y) thỏa mãn các điều kiện:

ở đây M và N là các hằng số.

Ta có ước lượng sai số như sau:

Trong thực hành để ước lượng sai số người ta dùng cách tính kép, t.l tính lại với bước h/2 ta có các xấp xỉ y(xn)= yn*. Khi đó ta có

| y(xn) - yn*| ≈ | yn - yn*|.

Hay | y(xn) - yn| < | yn - yn*| +| y(xn) - yn*|=2| yn - yn*|

Ví dụ 1:

Giải phương trình vi phân với điều kiện ban đầu y(0)=1; h=0,2.

Phương trình có nghiệm đúng là .

Tính theo phương pháp Ơ le ta có:

Nhận xét.

Ưu điểm của phương pháp Euler là tính toán đơn giản, nhưng nhược điểm là độ chính xác thấp. Khi ta giảm bước h thì độ chính xác tăng lên và sai số tích lũy cũng tăng lên. Để giảm sai số tích luỹ, trong bài trình tính toán trên máy tính ta nên dùng các đại lượng có độ chính xác gấp đôi.

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

Tính thêm các điểm giữa các điểm trong phương pháp gốc.

Và công thức lặp là:

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

Ta đặt

Các phương pháp Euler cải tiến đều có độ chính xác O(h3).

Để đánh giá sai số tại xn người ta dùng cách tính kép, t.l tính lại với bước h/2 ta có các xấp xỉ y(xn)= yn*. Khi đó ta có

3 | y(xn) - yn*| ≈ | yn - yn*|.

Hay | y(xn) - yn| < | yn - yn*| +| y(xn) - yn*|= (4*| yn - yn*|)/3.

Ví dụ 2. Xét lại ví dụ trước

y(0) =1; h=0,2.

Phương pháp Runge-Kutta

Theo Runge-Kutta giá trị gần đúng của yi+1 được xác định nhờ công thức sau:

trong đó:

Độ chính xác là h4.

Để đánh giá sai số tại xn người ta dùng cách tính kép, t.l tính lại với bước h/2 ta có các xấp xỉ y(xn)= yn*. Khi đó ta có

15. | y(xn) - yn*| ≈ | yn - yn*|.

Hay | y(xn) - yn| < | yn - yn*| +| y(xn) - yn*|= (16.| yn - yn*|)/15.

Ví dụ 1:

Giải phương trình vi phân với điều kiện ban đầu y(0)=1; h=0,2.

Phương trình có nghiệm đúng là

0