Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Approximate y at the final x = 1
0,135296935
y' (= p) at that point: -0,1351841876
Phương pháp Runge-Kutta bậc hai (điểm giữa), sai số cục bộ O(h^3)
Bước nhảy h 0,02
Số bước n 50
x y y' = p
0.0000000000000000 0.0000000000000000 1.0000000000000000
0.020000000000000000 0.019200000000000000 0.92240000000000000
0.040000000000000000 0.036894720000000000 0.84934720000000000
0.060000000000000000 0.053172670463999996 0.78060434278399990
0.080000000000000000 0.068117735709081600 0.71594578469232630
0.10000000000000000 0.081809400586607000 0.65515694969774430
0.12000000000000001 0.094322966500334410 0.59803380843614800
0.14000000000000000 0.10572975724910819 0.54438238107427720
0.16000000000000000 0.11609731515993502 0.49401826294618173
0.18000000000000000 0.12548958795637377 0.44676617193727500
0.19999999999999998 0.13396710678720436 0.40245951663989300
0.21999999999999997 0.14158715582126055 0.36093998434738000
0.23999999999999996 0.14840393379607325 0.32205714799495050
0.25999999999999995 0.15446870789053943 0.28566809119500390
0.27999999999999997 0.15982996027517107 0.25163705055227820
0.30000000000000000 0.16453352767755470 0.21983507448028827
0.32000000000000000 0.16862273428543417 0.19013969777498171
0.34000000000000000 0.17213851829528548 0.16243463123452180
0.36000000000000004 0.17511955240035207 0.13660946564564497
0.38000000000000006 0.17760235849882816 0.11255938948719588
0.40000000000000010 0.17962141689018327 0.090184919730279480
0.42000000000000010 0.18120927021549250 0.069391645142043710
0.44000000000000010 0.18239662238604734 0.050089981526471296
0.46000000000000013 0.18321243273344676 0.032194938360768685
0.48000000000000015 0.18368400560378675 0.015625896310044324
0.50000000000000010 0.18383707560845658 0.00030639512601406127
0.52000000000000010 0.18369588873438927 -0.013836068542494098
0.54000000000000010 0.18328327950738588 -0.026870233878397654
0.56000000000000020 0.18262074439331474 -0.038861259595601230
0.58000000000000020 0.18172851161356454 -0.049870899020389145
0.60000000000000020 0.18062560754308220 -0.059957666948328710
0.62000000000000020 0.17932991985163985 -0.069176998652447110
0.64000000000000020 0.17785825754163154 -0.077581401401623160
0.66000000000000030 0.17622640802868705 -0.085220598832054500
0.68000000000000030 0.17444919140468865 -0.092141668499290240
0.70000000000000030 0.17254051201637852 -0.098389172923625410
0.72000000000000030 0.17051340748663180 -0.10400528442760995
0.74000000000000030 0.16838009529963238 -0.10902990405100074
0.76000000000000030 0.16615201706561347 -0.11350077481565485
0.78000000000000040 0.16383988057550042 -0.11745358960059915
0.80000000000000040 0.16145369975070850 -0.12092209387579109
0.82000000000000040 0.15900283258849274 -0.12393818353188411
0.84000000000000040 0.15649601719860975 -0.12653199803260615
0.86000000000000040 0.15394140602262482 -0.12873200910612914
0.88000000000000040 0.15134659832296904 -0.13056510518203110
0.90000000000000050 0.14871867102481567 -0.13205667177110950
0.92000000000000050 0.14606420798999050 -0.13323066797637725
0.94000000000000050 0.14338932779845207 -0.13410969931504166
0.96000000000000050 0.14069971010936450 -0.13471508702311555
0.98000000000000050 0.13800062067043317 -0.13506693400652098
1.0000000000000004 0.13529693504097162 -0.13518418759510423

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)\).

Quảng cáo
Sơ đồ rút gọn phương trình vi phân bậc hai thành hai phương trình bậc nhất liên kết
Một phương trình vi phân bậc hai được viết lại thành hai phương trình bậc nhất liên kết bằng cách dùng y' = p.
Sơ đồ minh họa phương pháp RK2 trung điểm ước lượng độ dốc tại trung điểm của một bước
Phương pháp RK2 trung điểm tính độ dốc ban đầu, rồi dùng độ dốc tại trung điểm khoảng để tiến tới nghiệm.

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.

Cập nhật lần cuối: