כיצד Pendulum מלמד אותך דברים שונים
אתה לא צריך תואר במתמטיקה כדי להבין את פותרי ODE. אתה צריך עטודה, מסך, 20 דקות. הנה איך אוילר, RK4, ושיטות הסתגלות עובדות למעשה - עם הקוד האמיתי.
התחל עם מה שאתה יכול לראות
תלו משקל ממחרוזת משוך אותו לצד אחד. בוא נלך. זה נדנדה.
יצרת מערכת הנשלטת על ידי משוואה שונה:
dθ/dt = ω dω/dt=(g/L) Sin(θ)
זו הזווית. ω הוא המהירות הזוויתית. g הוא כוח הכבידה (9.81 m/s2). L הוא אורך המיתרים. שני קווים אלה אומרים: הזווית משתנה בקצב שווה למהירות, והמהירות משתנה בקצב תלוי בכובד ראש, אורך ובזווית הנוכחית.
הבעיה: אנחנו לא יכולים לפתור את המשוואה הזו בדיוק. sin(θ) עושה את זה לא לינארי. אין נוסחה שנותנת לך θ בכל עת t. לכן אנו מתקרבים – אנו צועדים קדימה ברווחים קטנים, ממקדים את המדינה הבאה מההווה.
זה מה ש-ODE פותר. ויש דרכים טובות וגרועות יותר לעשות זאת.
שיטת אוילר: Obvious but Flaled
הרעיון הפשוט ביותר: אם אני מכיר את המדינה עכשיו, ואני יודע את קצב השינוי, אני יכול להעריך את המדינה צעד קטן אחר כך.
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, שגיאה זו מצטברת - העטלדום מדמה לאט מגביר את האנרגיה ואת נדנדה רחב יותר רחב יותר. אחרי כמה דקות היא מסתובבת במעגלים מלאים. עבריין אמיתי אף פעם לא עושה זאת.
RK4: סוס העבודה
בשנת 1901 פרסם קרל Runge ומרטין קוטה שיטה טובה יותר. במקום לבחון את קצב השינוי פעם אחר צעד, הביטו בו ארבע פעמים:
- מדדו את המדרון בתחילת הצעד
- שלב בחצי הדרך באמצעות k1, למדוד את המדרון שם
- שלב בחצי הדרך באמצעות k2, מדד שוב
- שלב עד הסוף באמצעות k3, למדוד עוד זמן
- שלב: ממוצע משקל (k1 + 2k2 + 2k3 + k4) / 6
זהו סדר רביעי מדויק. להחליש את גודל הצעד ואת השגיאה טיפות על ידי גורם של 16. הפין שומר אנרגיה נכונה עבור אלפי נדנדה.
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, מעיינות האביב, ואן דר פול סימולציות. זוהי אותה שיטה המשמשת בחישובי מסלול אווירוקל. 22 שורות קוד.
למה זה משנה מחוץ לפיזיקה
החוברת היא דוגמא הוראה. אבל אותה טכניקה - להתקדם, למדוד, לתקן - חל בכל מקום שיש לך שיעור שינוי:
- ** גידול Population**: dx/dt = rx (1 - x / K). צמיחה לוגיסטית עם יכולת ביצוע אותו פתרון.
- תגובות כימיות*: ריכוזים משתנים בשיעורים ביחס לריכוזים הנוכחיים. אותו פתרון.
- ** רשתות חילוניות**: gradientירידה היא ODE מלוטש. כל שלב אימון הוא צעד אוילר לאורך פני השטח של אובדן.
- ** ארגונומיה **: תרכובות עניין באופן קבוע באמצעות dy/dt = ry. צמיחה אקסטנטית היא ה-ODE הפשוטה ביותר.
- **תזמון גירוי **: עקומות הקלה הן פתרונות ל-damper ODEs באביב. ההקלות "אלסטיות" ו-"bounce" ב-CSS הן סימולציות פיזיות.
המתמטיקה לא משתנה. התחום עושה. זה מה שהופך את זה שפה - אותה דקדוק מתאר ספירת כבשים, נדנדה חודרים ואימון רשת עצבית.
נסו בעצמכם
פתח PinePaper ובחר את הגנרטור מערכת דינמי. בחרו "בלום". הבובה מתנדנדת. עכשיו לשנות את הפרמטרים:
- עלייה בכובד ראש (זמן קצר יותר)
- הגדלת אורך המוט איטי יותר (זמן ארוך יותר)
- התחל בזווית גדולה יותר לצפות כיצד התקופה עולה (אפקט לא לינארי כי ספר לימוד קטן מסתבך מתפספס)
כל שינוי שאתה עושה הוא מדידה. שינית פרמטר וראית את התוצאה. ה-RK4 מארגן מחדש 30 מסגרות לשנייה, והפניוט הראה לך מה המשוואה צופה.
זו הנקודה כולה. מתמטיקה היא מדידה. PinePaper עושה את זה גלוי.
תגית:pendulum-lab
הפניות
- Butcher, J.C. (2016) * שיטות נמרניות עבור אקוציות שונות רגילות* (3rd ed). וילי.
- ג'יי.ר. ונסיך, P.J. (1980) משפחה של נוסחה מוטבעת Runge-Kuttae. * כללי של מתמטיקה משלימה ושימושית*, 6(1), 19-26.
- אוילר, L. (1768) * Institutionum ceriאינטגרis*, Vol. Impensis Academye Imperialis Scientiarum.
- שיער, E., Nørsett, S.P., & Wanner, G. (1993). השתמשו במקרים שונים פשוטים I: Nonstiff Problem (2nd ed). אביב.
- קוטה, W. (1901) ביתrag zur näherungsweisen אינטגרציה כוללת יותר שונה gleialichungen. Zeitschrift für Mathematica und Physik*, 46, 435-453.
- ניוטון, אני (1687). פיליפופיליה Naturalis Principia Mathematica* לונדון: יוסף טופלר.
- ריצה, C. (1895) Über Die numerische Auflösung von Differentalgleichungen. Mathematische Annalen, 46(2), 167-178.
- Strogatz, S.H. (2015) לא ליניארי דינאמיקס וכאוס* (2nd ed). Westview Press.
ה- ODE שלPinePaper מכסה את אוילר, RK4, ו-Damand-Prince RK45 ב-200 שורות. נסו את הסימולציה של העטלום בחינם ב pinepaper.סטודיו/editor
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor