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 \([x_0, x_n]\) bằng phương pháp Runge-Kutta bậc 4 (RK4) cổ điển. Bạn nhập vế phải F dưới dạng biểu thức toán học theo x, y và p (trong đó p đại diện cho y'), các điều kiện đầu \(y(x_0)\) và \(y'(x_0)\), hai đầu mút của khoảng và số bước cần chia. Máy tính trả về bảng đầy đủ các giá trị x, y và y' cùng với giá trị tại điểm cuối. Đây thuần túy là phương pháp giải tích số nên áp dụng được ở mọi nơi.
Cách sử dụng
Nhập F(x, y, p) — ví dụ -4*p - 4*y cho phương trình \(y'' + 4y' + 4y = 0\). Đặt x0, \(y_0 = f(x_0)\) và \(p_0 = y'(x_0)\). Nhập điểm cuối xn rồi chọn số khoảng con n (n càng lớn thì bước nhảy \(h = (x_n - x_0)/n\) càng nhỏ và độ chính xác càng cao). Chọn số chữ số có nghĩa muốn hiển thị. Sai số toàn cục của RK4 là \(O(h^4)\), nên khi tăng gấp đôi n thì sai số giảm xuống khoảng 16 lần.
Giải thích công thức
Phương trình vi phân cấp hai được hạ về hệ hai phương trình cấp một bằng cách đặt \(p = y'\): khi đó \(y' = p\) và \(p' = F(x, y, p)\). Mỗi bước, RK4 đẩy cả hai ẩn số tiến lên bằng bốn lần ước lượng độ dốc có trọng số (k cho y, j cho p), rồi kết hợp lại theo công thức \((k_1 + 2k_2 + 2k_3 + k_4)/6\) và \((j_1 + 2j_2 + 2j_3 + j_4)/6\).
Ví dụ minh họa
Xét \(y'' = -4p - 4y\) với \(x_0 = 0\), \(y_0 = 0\), \(p_0 = 1\), \(x_n = 1\) và chỉ một bước thô (\(n = 1\), \(h = 1\)). Bốn giai đoạn cho ra \(k_1=1\), \(k_2=-1\), \(k_3=2\), \(k_4=-5\) và \(j_1=-4\), \(j_2=2\), \(j_3=-6\), \(j_4=12\). Khi đó $$y(1) = \frac{1 - 2 + 4 - 5}{6} = -\frac{1}{3} = -0.3333$$ và $$p(1) = 1 + \frac{-4 + 4 - 12 + 12}{6} = 1.$$ Nghiệm chính xác là \(y = x e^{-2x}\), nên \(y(1) = e^{-2} = 0.1353\); một bước "khổng lồ" \(h = 1\) rõ ràng là quá thô. Dùng \(n = 50\) hoặc \(100\) sẽ hội tụ đúng về giá trị chính xác.
Câu hỏi thường gặp
Tôi có thể tích phân ngược không? Có — đặt xn nhỏ hơn x0 thì bước nhảy h trở thành số âm, tích phân từ x0 lùi về xn.
Vì sao kết quả sai khi chia ít bước? Độ chính xác của RK4 phụ thuộc vào bước nhảy nhỏ. Hãy tăng n cho đến khi các kết quả liên tiếp không còn thay đổi.
F có thể chứa những hàm nào? + - * / ^, dấu ngoặc, và sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log/ln, log10, sqrt, abs, cùng các hằng số pi và e.