Πώς ένα εκκρεμές σας Διδάσκει Διαφορικές Εξισώσεις
Δεν χρειάζεσαι πτυχίο μαθηματικών για να καταλάβεις τους λύτες. Χρειάζεσαι εκκρεμές, οθόνη και 20 λεπτά. Εδώ είναι πώς Euler, RK4, και προσαρμοστικές μέθοδοι λειτουργούν πραγματικά - με τον πραγματικό κώδικα.
Ξεκινήστε με Ό, τι Μπορείτε να Βλέπετε
Κρεμάστε ένα βάρος από ένα κορδόνι. Τράβα το στη μία πλευρά. Άσε με. Κουνιέται.
Μόλις δημιούργησες ένα σύστημα που διέπεται από μια διαφορική εξίσωση:
δθ/η = ω do/dt = -(g/L) · sin(θ)
θ είναι η γωνία. Ω είναι η γωνιακή ταχύτητα. g είναι η βαρύτητα (9,81 m/s2). L είναι το μήκος χορδών. Αυτές οι δύο γραμμές λένε: η γωνία αλλάζει με ρυθμό ίσο με την ταχύτητα, και η ταχύτητα αλλάζει με ρυθμό που εξαρτάται από τη βαρύτητα, το μήκος και την τρέχουσα γωνία.
Το πρόβλημα: δεν μπορούμε να λύσουμε αυτή την εξίσωση ακριβώς. Το sin(θ) το κάνει μη γραμμικό. Δεν υπάρχει φόρμουλα που να σου δίνει Θ οποιαδήποτε στιγμή. Έτσι πλησιάζουμε — προχωρούμε μπροστά σε μικρές αυξήσεις, υπολογίζοντας την επόμενη κατάσταση από την τρέχουσα.
Αυτό κάνει ένας λύτης ODE. Και υπάρχουν καλύτεροι και χειρότεροι τρόποι να το κάνεις.
Η μέθοδος Euler: Προφανής αλλά φλεγόμενη
Η απλούστερη ιδέα: αν ξέρω το κράτος τώρα, και ξέρω το ρυθμό της αλλαγής, μπορώ να υπολογίσω το κράτος ένα μικρό βήμα αργότερα.
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]
];
}
Το πρόβλημα: Η μέθοδος του Όιλερ είναι ακριβής πρώτης τάξεως. Αυτό σημαίνει ότι αν μειώσετε το μέγεθος του βήματος, θα μειώσετε το σφάλμα. Για ένα εκκρεμές, αυτό το σφάλμα συσσωρεύεται — το προσομοιωμένο εκκρεμές κερδίζει σιγά σιγά ενέργεια και ταλαντεύεται ευρύτερα και ευρύτερα. Μετά από λίγα λεπτά, γυρίζει σε πλήρεις κύκλους. Ένα πραγματικό εκκρεμές δεν το κάνει ποτέ αυτό.
RK4: Ο ίππος εργασίας
Το 1901, ο Καρλ Ρανγκ και ο Μάρτιν Κούτα δημοσίευσαν μια καλύτερη μέθοδο. Αντί να κοιτάς το ρυθμό της αλλαγής μία φορά ανά βήμα, κοίτα το τέσσερις φορές:
- Μέτρηση της κλίσης στην αρχή του βήματος → k1
- Βήμα στα μισά χρησιμοποιώντας το k1, μετρήστε την κλίση εκεί → k2
- Βήμα στα μισά χρησιμοποιώντας το k2, μετρήστε ξανά → k3
- Βήμα προς το τέλος χρησιμοποιώντας το k3, μέτρο άλλη μια φορά → k4
- Συνδυασμός: σταθμισμένος μέσος όρος (k1 + 2k2 + 2k3 + k4) / 6
Αυτό είναι 4ης τάξης ακριβές. Μισούμε το μέγεθος του βήματος και το σφάλμα πέφτει κατά 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 χρησιμοποιεί για το εκκρεμές, άνοιξη-μάζα, και Van der Pol προσομοιώσεις. Είναι η ίδια μέθοδος που χρησιμοποιείται στους υπολογισμούς αεροδιαστημικής τροχιάς. 22 γραμμές κώδικα.
Γιατί Αυτό Έχει Σημασία έξω από τη Φυσική
Το εκκρεμές είναι ένα διδακτικό παράδειγμα. Αλλά η ίδια τεχνική — βήμα προς τα εμπρός, μέτρο, σωστό — εφαρμόζεται οπουδήποτε έχετε ένα ρυθμό αλλαγής:
- ** Αύξηση του πληθυσμού **: dx/dt = r·x·(1 - x/K). Λειτουργική ανάπτυξη με ικανότητα μεταφοράς. Ίδιος λύτης.
- ** Χημικές αντιδράσεις **: οι συγκεντρώσεις αλλάζουν σε ποσοστά ανάλογα με τις τρέχουσες συγκεντρώσεις. Ίδιος λύτης.
- ** Νευρικά δίκτυα **: κλίση κάθοδος είναι ένα dibretized ODE. Κάθε βήμα εκπαίδευσης είναι ένα βήμα Euler κατά μήκος της επιφάνειας απώλειας.
- Οικονομικά: Ενώσεις συμφερόντων συνεχώς μέσω dy/dt = r·y. Εκθετική ανάπτυξη είναι η απλούστερη ODE.
- **Χρόνος αντίδρασης **: Οι καμπύλες χαλάρωσης είναι λύσεις για τις ανοιξιάτικες ΟΔΔ. Τα "ελαστικά" και "κουν" χαλαρά σε CSS είναι φυσικές προσομοιώσεις.
Τα μαθηματικά δεν αλλάζουν. Η περιοχή έχει. Αυτό είναι που το κάνει γλώσσα — η ίδια γραμματική περιγράφει την καταμέτρηση προβάτων, τις κούνιες εκκρεμών και την εκπαίδευση του νευρικού δικτύου.
Δοκιμάστε τον Εαυτό Σας
Ανοίξτε PinePaper και επιλέξτε τη γεννήτρια Dynamic System. Επιλέξτε " εκκρεμές." Οι κούνιες. Τώρα άλλαξε τις παραμέτρους:
- Αύξηση βαρύτητας → ταχύτερη ταλάντευση (μικρότερη περίοδος)
- Αύξηση μήκους → πιο αργή ταλάντευση (μακρύτερη περίοδος)
- Ξεκινήστε από μια μεγαλύτερη γωνία → Παρακολουθήστε πώς η περίοδος αυξάνεται (μη γραμμικό αποτέλεσμα ότι το εγχειρίδιο μικρή-γωνιακή προσέγγιση αστοχεί)
Κάθε αλλαγή που κάνεις είναι μια μέτρηση. Αλλάξατε μια παράμετρο και παρατηρήσατε το αποτέλεσμα. Ο λύτης RK4 αποζημιώθηκε 30 πλαίσια το δευτερόλεπτο, και το εκκρεμές σας έδειξε αυτό που προβλέπει η εξίσωση.
Αυτό είναι το όλο θέμα. Τα μαθηματικά είναι μέτρηση. Το PinePaper το κάνει ορατό.
{{widget: pendulum- lab}
Παραπομπές
- Μπούτσερ, J.C. (2016). * Αριθμητικές Μέθοδοι για τις συνήθεις διαφορικές εξισώσεις* (3rd ed.). Γουάιλι.
- Dormand, J.R. & Prince, P.J. (1980). Μια οικογένεια από ενσωματωμένους τύπους Runge-Kutta. Περιοδικό Υπολογιστικών και Εφαρμοσμένων Μαθηματικών, 6(1), 19-26.
- Euler, L. (1768). * Institutionum calculi integratis*, Τόμος 1. Impensis Academiae Imperialis Scientiarum.
- Hairer, E., Nørsett, S.P., & Wanner, G. (1993). * Επίλυση Συνηθισμένων Διαφορικών Εξισώσεων I: Nonstiff Problems* (2nd ed.). Σπρίνγκερ.
- Κούτα, Γ. (1901). Beitrag zur näherungsweisen Integration totaler Differentialgleichungen (στα Αγγλικά). Zeitschrift für Mathematik und Physik, 46, 435-453.
- Newton, I. (1687). Φιλοσοφία Naturalis Principia Mathematica. Λονδίνο: Joseph Streater.
- Runge, C. (1895). Über die numerische Auflösung von Differentialgleichungen (στα Αγγλικά). Mathematische Annalen, 46(2), 167-178.
- Strogatz, S.H. (2015). * Nonlinear Dynamics and Chaos* (2nd ed.). Westview Press (στα Αγγλικά).
- PinePaper ODE λύτης καλύπτει Euler, RK4, και προσαρμοστική Dormand-Prince RK45 σε περίπου 200 γραμμές. Δοκιμάστε την προσομοίωση εκκρεμές δωρεάν σε [pinepaper.studio/editor] (/editor).*
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor