You are on page 1of 7

1.

Phương trình vi phân


Để nói tới ODE (Ordinary differential equation) thì trước tiên phải nói về phương trình vi
phân (PTVP).

PTVP là một phương trình toán học nhằm biễu diễn mối quan hệ giữa một hàm chưa được
biết (một hoặc nhiều biến) với đạo hàm của nó (có bậc khác nhau). Hàm chưa biết trong
PTVP gọi là ẩn hàm. Mục tiêu của PTVP là tìm ra công thức của ẩn hàm, nhưng thông
thường kết quả là một họ các hàm sai khác nhau một hằng số C. Hằng số này sẽ được xác
định nếu có điều kiện ban đầu (initial value problem – IVP) hoặc điều kiện biên (boundary
value problem – BVP) kèm theo.

Có các loại PTVP sau:

• PTVP thường (Ordinary differential equation – ODE): là PTVP mà ẩn hàm là hàm


một biến (độc lập). Lưu ý là ẩn hàm cũng có thể là hàm cho kết quả là vector, ma
trận… chứ không nhất thiết phải là hàm có giá trị thực hay phức.
• PTVP riêng phần (Partial differential equation – PDE): là PTVP mà ẩn hàm là hàm
nhiều biến độc lập, và trong PTVP chứa các đạo hàm riêng của nó.
• Delay differential equation – DDE: PTVP mà ẩn hàm là hàm một biến, thường là
thời gian. Đạo hàm của các ẩn hàm tại thời điểm nào đó được xác định dựa trên các
thời điểm trước đó.
• Stochastic differential equation – SDE
• Differential algebraic equation – DAE

Mỗi loại này còn chia ra thành 2 loại là tuyến tính (linear) và phi tuyến (nonlinear). PTVP
tuyến tính là các PTVP mà ẩn hàm và các đạo hàm của nó đều có lũy thừa 1, nếu có lũy thừa
bậc cao hơn thì gọi là PTVP phi tuyến. Ví dụ với u là ẩn hàm thì là PTVP tuyến tính,
nhưng là PTVP phi tuyến.

Trong các PTVP tuyến tính, người ta còn quan tâm đặc biệt đến các PTVP tuyến tính có hệ số
hằng (hệ số của ẩn hàm và các đạo hàm của nó trong PTVP đều là hằng). Đây là loại PTVP
phức tạp nhất mà SV Đại học không chuyên ngành Toán ở VN được học cách giải.

2. Phương trình vi phân thường (ODE) và cách giải


2.1. Định nghĩa ODE

Gọi là hàm theo biến

và là đạo hàm bậc n của y. Gọi là hàm

Khi đó phương trình có dạng

gọi là PTVP thường (ODE) bậc n.


PTVP có dạng như trên còn gọi là ODE rõ (explicit ODE) bậc n. Tổng quát hơn, PTVP có
dạng

được gọi là ODE ẩn (implicit ODE) bậc n, với F là hàm .

Theo định nghĩa trên, một PTVP gọi là tuyến tính (linear) nếu F có thể viết dưới dạng tổ hợp
tuyến tính của các đạo hàm của ẩn hàm:

với là các hàm liên tục theo x. Nếu thì PTVP tuyến tính gọi là thuần nhất
(homogeneous), ngược lại gọi là không thuần nhất (non-homogeneous, inhomogeneous).

Một ví dụ khá phổ biến về ODE có thể kể tới là phương trình định luật 2 Newton: ,
với , ẩn hàm là .

2.2. Cách giải

Một số ODE dạng đặc biệt có thể giải được với kết quả chính xác, tuy nhiên không phải ODE
nào cũng giải được như vậy. Phần này trình bày cách giải một số ODE đặc biệt, phần cuối
cùng sẽ trình bày thuật toán Runge-Kutta như một cách tìm lời giải xấp xỉ trong trường hợp
không thể tìm được lời giải tổng quát.

2.2.1. PTVP thường tuyến tính bậc một phân tích được (Separable first-order linear
ODE)

Dạng chung của PTVP loại này là

với là hàm biết trước. Ta viết PT này thành

Lấy nguyên hàm 2 vế được:

Có thể kiểm chứng dễ dàng bằng cách thay y vào PTVP ban đầu.
2.2.2. PTVP thường tuyến tính bậc 1 không phân tích được (Non-separable first-order
linear ODE)

Cho PTVP có dạng sau:

Để giải dạng này, ta chọn một hàm làm thừa số tích phân:

có đặc điểm là đạo hàm của nó bằng chính nó nhân với :

Nhân cả 2 vế của PTVP với :

Do nên pt tương đương:

Nguyên hàm 2 vế:

Do cũng là hàm theo x nên vế phải có thể rút gọn được.

2.2.3. Cách giải PTVP thường tổng quát

Rất nhiều PTVP không rời vào các dạng đặc biệt để có thể tìm được lời giải một cách chính
xác. Trong những trường hợp đó, người ta thường phải chấp nhận lời giải xấp xỉ bằng các
phương pháp số học (gọi là Numerical ODEs), hoặc sử dụng giải tích để viết các chuỗi khai
triển của lời giải. Một số phương pháp số học hay dùng để giải xấp xỉ PTVP bậc 1 là phương
pháp Euler, Euler ngược… các phương pháp này là tiền đề của các phương pháp khác cho ra
kết quả chính xác hơn như Runge-Kutta, Richardson extrapolation…

Phần kế tiếp sẽ nói về phương pháp Runge-Kutta.


3. Phương pháp Runge-Kutta bậc 4 (fourth-order Rungke-
Kutta method)
Đây là phương pháp thông dụng nhất trong họ các phương pháp Runge-Kutta, thường được
gọi là RK4, phương pháp Runge-Kutta cổ điển hay đơn giản là phương pháp Runge-Kutta.

Cho PTVP với điều kiện ban đầu như sau:

Theo phương pháp RK4 thì lời giải cho PT này là:

trong đó là xấp xỉ của , h là khoảng cách giữa 2 lần xấp xỉ liên tiếp, và
là các slope, lần lượt là các hệ số góc trong khoảng h:

Tổng quát hơn, ta có phương pháp Runge-Kutta bậc s, khi đó các công thức tương ứng được
viết:

trong đó:

Chi tiết có thể tham khảo trên wiki.

4. Ví dụ
Xét chuyển động của chất điểm khối lượng m, kích thước không đáng kể. Theo định luật 2
Newton, ta có:
trong đó là hợp lực tác dụng lên vật, là gia tốc, là tọa độ của vật trên quỹ đạo.
Trong trường hợp này, là ẩn hàm cần tìm. Ta có:

Phương trình này xuất hiện đạo hàm bậc 2 của x. Ta đặt ẩn phụ để đưa PT này thành 2 PT chỉ
chứa đạo hàm bậc 1:

Ta sẽ tìm x theo 2 cách, một là dùng phương pháp chỉ ra trong phần 2.2.1 để tìm công thức
chính xác của , 2 là dùng RK4 để tìm các giá trị của x trong đoạn cho trước. Kết quả sẽ cho
thấy RK4 cho ra lời giải xấp xỉ khá tốt so với công thức chính xác.

Để so sánh kết quả giữa 2 phương pháp, ta cần một số điều kiện biên:
.

4.1. Tìm nghiệm chính xác

Từ (2) ta được:

thay vào (1):

Do , ta có phương trình x theo t là:

Trong Hình 1 là đồ thị của x theo t trên đoạn [1, 3].


Hình 1: Đồ thị x(t) trên đoạn 1;3

4.2. Sử dụng RK4

Đoạn chương trình đơn giản sau cài đặt phương pháp RK4 để tìm x:

view source
print?
01 function w = runge_kutta4(a, b, N, alpha)
02
03 h = (b-a)/N; %the step size
04 t = zeros(1, N+1);
05 w = zeros(1, N+1);
06 t(1) = a;
07 w(1) = alpha; %the initial value
08
09 for i = 1:N
10 k1 = h*f(t(i), w(i));
11 k2 = h*f(t(i)+h/2, w(i)+(k1)/2);
12 k3 = h*f(t(i)+h/2, w(i)+(k2)/2);
13 k4 = h*f(t(i)+h, w(i)+k3);
14 w(i+1) = w(i) + (k1 + 2*k2 + 2*k3 + k4)/6;
15 t(i+1) = a + i*h;
16 end
17
18 [t' w']
19
20 plot(t, w, 'r*')
21
22 function dx = f(t, x)
23 dx = 4*t + 1;

Ở đây hàm f được dùng để tính đạo hàm của dãy. Do nên . Trong
Matlab, thực thi lệnh sau:

view source
print?
1 >> runge_kutta4(1, 3, 2000, 4)

sẽ cho kết quả như Hình 2.

Hình 2: Đồ thị x(t) trên 1;3 tính theo phương pháp RK4

Trong matlab, phương pháp Runge-Kutta 4/5 được cài đặt sẵn trong hàm ode45, cùng với khá
nhiều tùy chọn như tự động chọn step size, hỗ trợ event detection v.v… Ngoài ra matlab cũng
hỗ trợ nhiều phương pháp khác để giải ODE

You might also like