Professional Documents
Culture Documents
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.
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.
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à .
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)
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)
Để giải dạng này, ta chọn một hàm làm thừa số tích phân:
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…
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 đó:
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:
.
Từ (2) ta được:
Đ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)
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