· 7 min read

چگونه یک Pendulum به شما معادلات مختلف را آموزش می دهد

شما نیاز به مدرک ریاضی برای درک حل کنندگان ODE ندارید. شما نیاز به یک قلم، یک صفحه نمایش و 20 دقیقه دارید. در اینجا چگونگی کار اولر، RK4 و روش های سازگار با آن وجود دارد با کد واقعی.

با آنچه می توانید ببینید شروع کنید

یک وزنه از یک رشته بردارید. آن را به یک طرف ببرید. برویم. نوسان می کند.

شما فقط یک سیستم را ایجاد کرده اید که توسط یک معادله متفاوت اداره می شود:

dgb/dt = ω dω/dt = (g/L) گناه (GB)

π زاویه است. سرعت زاویه ای است. g گرانش (9.81 m/s2) است. L طول رشته است. این دو خط می گویند: تغییر زاویه در نرخ برابر با سرعت و تغییرات سرعت در نرخی که به گرانش، طول و زاویه فعلی بستگی دارد.

مشکل: ما نمی توانیم این معادله را درست حل کنیم. sin(θ) آن را غیر خطی می کند. هیچ فرمولی وجود ندارد که به شما در هر زمان t را بدهد. ما به طور تقریبی - ما در پیشرفت های کوچک گام برمی داریم، حالت بعدی را از حالت فعلی محاسبه می کنیم.

این کاری است که یک حل کننده ODE انجام می دهد. و راه های بهتر و بدتری برای انجام آن وجود دارد.

روش اولر: خسته اما قانونی

ساده ترین ایده: اگر الان دولت را می شناسم و نرخ تغییر را می دانم، می توانم وضعیت را یک گام کوچک بعد تخمین بزنم.

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

این روش اولر است. مانند راه رفتن از طریق مه: شما می توانید یک قدم جلوتر ببینید، بنابراین شما این مرحله را می گیرید، سپس دوباره نگاه کنید. در کد:

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

مشکل: روش اولر برای اولین بار دقیق است. این بدان معنی است که اگر اندازه گام را نصف کنید، خطای را نصف می کنید. برای یک قلم، این خطا جمع می شود pendulum شبیه سازی شده به آرامی انرژی و نوسانات گسترده تر و گسترده تر به دست می آورد. بعد از چند دقیقه، در حال چرخش در حلقه های کامل است. یک قلم واقعی هرگز این کار را انجام نمی دهد.

RK 4: The Work Horse

در سال 1901، کارل روژ و مارتین کوتتا روش بهتری را منتشر کردند. به جای نگاه کردن به نرخ تغییر یک بار در هر مرحله، چهار بار به آن نگاه کنید:

  1. شیب را در ابتدای مرحله اندازه گیری کنید – k1
  2. گام در نیمه راه با استفاده از k1، اندازه گیری شیب وجود دارد
  3. گام در نیمه راه استفاده از k2 دوباره اندازه گیری
  4. گام به پایان با استفاده از k3، اندازه گیری یک زمان بیشتر
  5. ترکیب: میانگین وزن (k1 + 2k2 + 2k3 + k4) / 6

این چهارمین سفارش دقیق است. اندازه گام را حل کنید و خطا با یک عامل ۱۶ کاهش می یابد. پنتوم انرژی را به درستی برای هزاران نوسان حفظ می کند.

این ادعا ارزش چک کردن دارد نه باور کردن. در زیر، هر دو روش ادغام y′ = y از 0 تا 1 در صورتی که پاسخ دقیق * در چهار مرحله اندازه ها. حل این مرحله خطای اولر را حدود 2 و RK4 در حدود 16 تقسیم می کند, این همان چیزی است که سفارش اول و چهارم سفارش می دهند.

Interactive demo — open in editor pp:PinePaper

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])
  ];
}

این روش PinePaper برای Pendulum، spring-mass و Van der Pol شبیه سازی استفاده می شود. این همان روش مورد استفاده در محاسبات مسیر هوافضا است. 22 خط کد.

چرا این موضوع در خارج از فیزیک اهمیت دارد؟

قلم یک مثال آموزشی است. اما همان تکنیک – گام به جلو، اندازه گیری، درست در هر جایی که نرخ تغییر دارید، اعمال می شود:

  • ** رشد پیگیری - dx / dt = r · 1 - x/K. رشد یکپارچه با ظرفیت حمل. همان حل کننده.
  • ** واکنش های نظری - تغییرات غلظت در نرخ متناسب با غلظت فعلی. همان حل کننده.
  • شبکه های عصبی شیب دار یک ODE دیسک شده است. هر مرحله آموزشی یک گام اولر در طول سطح از دست دادن است.
  • ** اقتصاد - ترکیبات مورد علاقه به طور مداوم از طریق dy/dt = r ·y. رشد نمایی ساده ترین ODE است.
  • ** زمان بندی: کاهش منحنی ها راه حل هایی برای ODE های بهار است. "لستیک" و "bounce" کاهش در CSS شبیه سازی فیزیکی هستند.

ریاضی تغییر نمی کند. دامنه انجام می دهد. این چیزی است که آن را یک زبان می سازد همان دستور زبان، شمارش گوسفند، نوسانات خودکار و آموزش شبکه عصبی را توصیف می کند.

خودتان را امتحان کنید

PinePaper را باز کنید و ژنراتور سیستم دینامیک را انتخاب کنید. گزینه “Saveulum” را انتخاب کنید. پیچ های بو. حالا پارامترهای را تغییر دهید:

  • افزایش گرانش سریع تر (دوره کوتاه)
  • افزایش طول میله - آهسته تر نوسان (دوره طولانی)
  • شروع در یک زاویه بزرگتر - ببینید که چگونه دوره افزایش می یابد (اثر آنلاین که کتاب درسی کم است)

هر تغییری که انجام می دهید یک اندازه گیری است. یک پارامتر را تغییر داده و نتیجه را مشاهده کردید. RK4 حل کننده 30 فریم در ثانیه است و Pendulum به شما نشان داد که معادله پیش بینی می کند.

این تمام نقطه است. ریاضیات اندازه گیری است. PinePaper آن را قابل مشاهده می کند.

Interactive demo — open in editor pp:PinePaper

ارجاعات

  • اماچر، J.C. 2016. * روش های غیرمتعارف برای معادله های مختلف معمولی * (3rd ed). ویلی.
  • دوربان، J.R. شاهزاده، P.J. (1980). یک خانواده فرمول Runge-Kutta جاسازی شده است. * ژورنال ریاضی محاسباتی و کاربردی *، 6 (1)، 19-26.
  • اوی، L. (1768). * Institutionum calculi انتگرالis *، Vol. 1. Impensis Academiae Imperialis Scientiarum.
  • موتر، E.، Nørsett، S.P.، و Wanner، G. (1993). حل معادله های مختلف معمولی I: Nonstiff Problem* (2nd ed). بهار.
  • کوتا، W. (1901). Beitrag zur näherungsweisen ادغام کلرگلیچونگن. *Zeitschrift für Mathematik بدون فیزیوتراپی *، 46، 435-453.
  • نیوتن، من. (1687). *Philosophiæ Naturalis Principia Mathematica. لندن: Joseph Streater.
  • Runge، C. (1895). Über می میرد numerische Auflösung von Differentalgleichungen. *Mathematische آنالن - 46 (2)، 167-7.1.
  • Strogatz، S.H. (2015). Nonlinear Dynamics و Chaos * (2nd ed). Westview Press.

PinePaper’s ODE Solver، RK4 و adaptive Dormand-Prince RK45 را در حدود 200 خط پوشش می دهد. سعی کنید شبیه سازی خودکار را در [pinepaper.studio/editor] (/editor).

Ready to create?

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

Open PinePaper Editor