Công cụ này làm gì?
Công cụ giải số một phương trình vi phân thường cấp hai viết dưới dạng \(y'' = F(x, y, y')\) trên khoảng [x0, xn], sử dụng phương pháp Runge-Kutta bậc hai (sơ đồ RK2 điểm giữa, hay còn gọi là Euler cải tiến). Bạn nhập vế phải F như một biểu thức theo x, y và p (với p đại diện cho y'), các giá trị đầu y(x0) và y'(x0), hai đầu mút của khoảng và số bước cần chia. Kết quả là một bảng các giá trị (x, y, y') tiến dần qua toàn bộ khoảng. Đây thuần túy là giải tích số, nên kết quả áp dụng như nhau ở bất cứ đâu.
Cách sử dụng
Hãy nhập hàm cưỡng bức F theo x, y và p, chẳng hạn -4*p-4*y cho phương trình \(y'' = -4y' - 4y\). Công cụ hỗ trợ các phép toán + - * / ^ (hoặc **) cùng các hàm sin, cos, tan, exp, log, ln, sqrt, abs, pow và các hằng số pi, e. Thiết lập x0, các giá trị đầu y0 và y'0 = p0, điểm cuối xn, rồi chọn số khoảng con n. Càng nhiều bước thì bước nhảy \(h = (x_n - x_0)/n\) càng nhỏ và sai số càng thấp (sai số toàn cục là \(O(h^2)\)).
Giải thích công thức
Phương trình trước hết được đưa về hệ cấp một bằng cách đặt p = y', ta được $$\begin{cases} y' = p \\ p' = F(x, y, p) \end{cases}$$ Mỗi bước RK2 lấy mẫu độ dốc tại điểm đầu và tại điểm giữa rồi kết hợp lại: \(j_1 = h\cdot F(x,y,p)\), \(k_1 = h\cdot p\), sau đó \(j_2\) và \(k_2\) được tính tại điểm giữa và dùng để cập nhật p cùng y. Sai số cắt cụt cục bộ mỗi bước là \(O(h^3)\).
Ví dụ minh họa
Với F = -4*p-4*y, x0 = 0, y0 = 0, p0 = 1, xn = 1, n = 50, bước nhảy là \(h = 0.02\). Bước đầu tiên cho \(y_1 = 0.0192\) và \(p_1 = 0.9224\). Lặp đến x = 1 ta thu được \(y(1) \approx 0.13533\) và \(y'(1) \approx -0.13533\), khớp với nghiệm chính xác \(y = x\cdot e^{-2x}\) mà tại x = 1 có giá trị \(e^{-2} = 0.135335\).
Câu hỏi thường gặp
Đây là RK2 hay RK4? Đây là Runge-Kutta bậc hai (quy tắc điểm giữa), không phải phương pháp bậc bốn cổ điển, nên độ chính xác toàn cục chỉ ở bậc hai.
xn có thể nhỏ hơn x0 không? Có. Khi đó bước nhảy đơn giản trở thành số âm và phép tích phân tiến hành ngược lại — điều này hoàn toàn hợp lệ về mặt toán học.
Vì sao tôi nhận được một dòng báo lỗi? Các sự cố khi tính toán như chia cho 0, lấy log của số không dương hoặc lấy căn bậc hai của số âm bên trong F sẽ dừng phép tích phân và báo cho bạn biết vị trí xảy ra.