· 6 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]
  ];
}

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

RK 4: The Work Horse

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

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

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

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 آن را قابل مشاهده می کند.

{{vulum-lab}}

ارجاعات

  • دانلود زیرنویس فارسی فیلم Thecher, J.C. 2016 * روش های غیرمتعارف برای معادله های مختلف معمولی * (3rd ed) ویلی.
  • Dormand، J.R. & Prince، 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) بهار.
  • Kutta، 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 ODE Solver، RK4 و adaptive Dormand-Prince RK45 را در حدود 200 خط پوشش می دهد. سعی کنید شبیه سازی خودکار را به صورت رایگان در [pinepaper.studio/editor] (/editorQ) امتحان کنید

Ready to create?

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

Open PinePaper Editor