· 6 min read

Một nhà văn dạy bạn về phương diện khác nhau

Bạn không cần một bằng toán học để hiểu được các giải pháp ODE. Bạn cần một con lắc, một màn hình, và 20 phút. Đây là những phương pháp thực sự hiệu quả, RK4 và thích ứng với mã thật.

Bắt đầu với những gì bạn có thể thấy

Treo một sợi dây lên. Kéo qua một bên. Bỏ ra. Nó xoay.

Bạn vừa tạo ra một hệ thống được điều khiển bởi một phương trình vi phân:

dcoptic/dt = tôm d vội/dt = - (g/L) · Sin( tôm)

nghiêng về góc độ. tôm là vận tốc góc. g là lực hấp dẫn (9.81 m/s2). L là chiều dài dây. Hai đường này nói: góc độ thay đổi ở tốc độ bằng vận tốc, và vận tốc thay đổi với tốc độ phụ thuộc vào trọng lực, chiều dài, và góc hiện tại.

Vấn đề là: chúng ta không thể giải phương trình này một cách chính xác. XQQ làm nó phi tuyến tính. Không có công thức nào cung cấp cho bạn vội vàng bất cứ lúc nào. Vì vậy, chúng tôi ước lượng — chúng tôi bước lên phía trước trong những gia tăng nhỏ, tính toán trạng thái tiếp theo từ hiện tại.

Đó là điều mà một nhà giải quyết ODE làm. Và có những cách tốt hơn và tệ hơn để làm điều đó.

Phương pháp háu ăn: Hiển nhiên nhưng được tô điểm

Ý tưởng đơn giản nhất: nếu bây giờ tôi biết bang này, và tôi biết tỷ lệ thay đổi, tôi có thể ước tính tiểu bang này một thời gian ngắn sau đó.

next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt

Đây là phương pháp của kính thiên văn. Nó giống như đi xuyên qua sương mù: bạn có thể thấy một bước trước, vì vậy bạn đi bước đó, sau đó nhìn lại. Trong mã:

function euler(f, t, y, dt) {
  const dy = f(t, y);
  return [
    y[0] + dt * dy[0],
    y[1] + dt * dy[1]
  ];
}

Vấn đề ở đây là: phương pháp của thiên hà là chính xác. Điều đó có nghĩa là nếu bạn chia nhỏ kích thước bước, bạn giải quyết các lỗi. Đối với một con lắc, lỗi này tích lũy — con lắc mô phỏng từ từ lấy năng lượng và lắc lư rộng hơn và rộng hơn. Sau vài phút, nó quay tròn. Một con lắc thực sự không bao giờ làm điều này.

RK4:

Năm 1915, Carl Runge và Martin Kutta đã xuất bản một phương pháp tốt hơn. Thay vì nhìn vào tốc độ thay đổi một lần mỗi bước, hãy nhìn vào nó bốn lần:

  1. Đo độ dốc ở đầu bước k1
  2. Bước nửa chừng sử dụng k1, đo độ dốc ở đó k2
  3. Bước nửa chừng sử dụng k2, đo lại k3
  4. Bước đến cuối sử dụng k3, đo thêm một lần nữa k4
  5. Tổng hợp: trung bình (k1 + 2k2 + 2k3 + k4) / 6

Đúng thứ tư rồi. Halve kích thước bước và lỗi giảm bởi một yếu tố 16. Con lắc tiết kiệm năng lượng đúng cho hàng ngàn đường xích đu.

function rk4(f, t, y, dt) {
  const k1 = f(t, y);
  const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
  const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
  const k4 = f(t + dt,   [y[0] + dt   * k3[0], y[1] + dt   * k3[1]]);
  return [
    y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
    y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
  ];
}

Đây là phương pháp PinePaper sử dụng cho lắc lắc lắc, mùa xuân, và mô phỏng Van der Pol. Đó là phương pháp tương tự được sử dụng trong các tính toán quỹ đạo không gian. 22 dòng mã.

Tại sao vật lý học bên ngoài là vấn đề

Con lắc là một ví dụ dạy học. Nhưng kỹ thuật tương tự — bước lên, đo lường, đúng đắn — áp dụng ở bất cứ nơi nào bạn có một tỉ lệ thay đổi:

  • ** Dân chủ tăng trưởng**: dx/dt = r·x·(1 - x/K). Tăng trưởng hậu cần với khả năng mang. Cùng một kẻ phá án.
  • ** Phản ứng tiêu cực**: sự tập trung thay đổi ở tỷ lệ thuận với sự tập trung hiện tại. Cùng một kẻ phá án.
  • ** Mạng Neural**: gradient descent là một phân dạng hoá ODE. Mỗi bước huấn luyện là một bước của một tác phẩm tác động dọc theo bề mặt mất mát.
  • Economics: Hợp chất lãi liên tục thông qua y/dt = r·y. Sự tăng trưởng tiềm năng là điều đơn giản nhất.
  • Sự sống thời gian: làm giảm đường cong là giải pháp cho các sản phẩm phụ mùa xuân. Chữ "listic" và "bounce" trong CSS là mô phỏng vật lý.

Toán học không thay đổi. Lãnh địa thì có. Điều đó biến nó thành một ngôn ngữ - cùng ngữ pháp mô tả đếm cừu, dao động, và đào tạo mạng lưới thần kinh.

Thử tự mình

Mở PinePaper và chọn bộ tạo hệ thống động. Chọn "pendulum." Cái xích đu. Bây giờ thay đổi tham số:

  • Tăng lực hấp dẫn
  • Tăng độ dài hình gậy
  • Bắt đầu ở một góc lớn hơn tôm hùm xem làm thế nào thời gian tăng (không tuyến tính hiệu ứng mà sách giáo khoa nhỏ hình chữ nhật bỏ lỡ)

Mỗi thay đổi bạn tạo ra là một thước đo. Bạn đã thay đổi một tham số và quan sát kết quả. Bộ giải RK4 đã ghép lại 30 khung trên giây, và con lắc cho bạn thấy phương trình dự đoán.

Đó là toàn bộ vấn đề. Toán học là đo lường. PinePaper làm cho nó nhìn thấy được.

được rồi

Tham khảo

  • Butcher, J.C. (20 2016). Numeical Methods for normal equalications (3rd ed.). Wiley.
  • Dormand, J.R. & Prince, P.J. (1980). Một gia đình có công thức Runge-Kutta. Joural of Computional and A ứng dụng Toán học, 6(1), 19-26.
  • Thiên đường, L. (1768). Incacyum calculi mici, Vol. 1. Imensis Academiae Imperialis Scitiarum.
  • Thợ làm tóc, E., Ncirsett, S.P., & wanter, G. (1993). * Solving bình thường phương trình I: nonstiff vấn đề* (nd ed.). Springer.
  • Kutta, W. (1901). Bộ phận kết hợp đa dạng hơn. Zeitschled für Mathematik und Physik, 46, 455-453.
  • Newton, I. (1687). Philosophi Reuture Naturalis Pricitia Mathematica. Luân Đôn: Joseph Struat.
  • Runge, C. (1895). Cái chết là numerische Aufösung von khác biệt. Mathematische Annalen, 46(2), 167-178.
  • Strogatz, S.H. (205). Không tuyến tính Động lực và Hỗn loạn (nd ed.). Báo Westview.

PinePaper's ODDE giải câu đố trên trang web kính thiên văn, RK4, và linh hoạt Demand-Prince RK45 trong khoảng 200 dòng. Thử mô phỏng con lắc miễn phí ở [pineudio/dotor].

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor