Máy tính phương pháp Runge-Kutta bậc 2 là gì?
Công cụ này giải số một phương trình vi phân thường (PTVP) cấp 1 có dạng \(y' = F(x, y)\) trên đoạn \([x_0, x_n]\), xuất phát từ điều kiện ban đầu \(y_0 = f(x_0)\). Máy tính áp dụng phương pháp Runge-Kutta bậc 2 (còn gọi là phương pháp điểm giữa), từ đó tạo ra bảng các giá trị xấp xỉ \((x, y)\) và cho biết giá trị cuối cùng \(y_n = f(x_n)\). Đây là một công cụ toán học mang tính phổ quát, không bị giới hạn bởi bất kỳ quốc gia hay quy định nào.
Cách sử dụng
Nhập vế phải \(F(x,y)\) dưới dạng một biểu thức toán học theo \(x\) và \(y\) (ví dụ 1-y^2, x*y, hay sin(x)+y). Sau đó cung cấp điểm ban đầu \(x_0\) và \(y_0\), điểm cuối của khoảng \(x_n\), và chọn số đoạn chia bằng nhau \(n\). Khoảng \([x_0, x_n]\) sẽ được chia thành \(n\) bước với độ dài mỗi bước là \(h = (x_n - x_0)/n\). Giá trị \(n\) càng lớn thì bước càng nhỏ và kết quả càng chính xác. Ô chọn độ chính xác hiển thị chỉ quyết định số chữ số có nghĩa được trình bày, chứ không ảnh hưởng đến phép tính.
Giải thích công thức
Lược đồ Runge-Kutta điểm giữa tiến từng bước một như sau:
$$k_1 = h \cdot F(x_i, y_i)$$$$k_2 = h \cdot F\left(x_i + \frac{h}{2},\; y_i + \frac{k_1}{2}\right)$$$$y_{i+1} = y_i + k_2, \qquad x_{i+1} = x_i + h$$Độ dốc được ước lượng ngay tại điểm giữa của bước, nhờ đó triệt tiêu được số hạng sai số bậc thấp nhất. Sai số cắt cụt cục bộ là \(O(h^3)\) và sai số toàn cục là \(O(h^2)\), nên khi giảm \(h\) đi một nửa thì sai số giảm xuống còn khoảng một phần tư.
Ví dụ minh họa
Giải \(y' = 1 - y^2\) với \(x_0 = 0\), \(y_0 = 0\), \(x_n = 1\), \(n = 50\) (vậy \(h = 0.02\)). Nghiệm chính xác là \(y = \tanh(x)\). Bước 1: \(k_1 = 0.02 \cdot (1-0) = 0.02\); \(k_2 = 0.02 \cdot (1-0.01^2) = 0.019998\); \(y_1 = 0.019998\). Tiếp tục đủ 50 bước ta được \(y(1) \approx 0.76159\), khớp với \(\tanh(1) \approx 0.7615942\) đến năm chữ số thập phân.
Câu hỏi thường gặp
Kết quả chính xác đến đâu? Độ chính xác tăng lên khi \(n\) càng lớn, vì sai số toàn cục tỉ lệ với \(h^2\). Với các phương trình cứng (stiff) hoặc bước quá lớn, kết quả có thể phân kỳ.
\(x_n\) có thể nhỏ hơn \(x_0\) không? Có. Khi đó \(h\) mang giá trị âm và phương pháp sẽ tích phân ngược theo \(x\), điều này vẫn hoàn toàn hợp lệ.
Tôi có thể dùng những hàm nào? Các hàm thông dụng: sin, cos, tan, exp, ln, log, sqrt, cùng các phép toán +, -, *, /, ^, dấu ngoặc đơn, và các hằng số \(e\) và \(\pi\).