ΨΗΦΙΑΚΟ ΕΡΓΑΣΤΗΡΙΟ ΑΡΜΟΝΙΚΟΥ ΤΑΛΑΝΤΩΤΗ

Από την προσομοίωση
στις μετρήσεις και στο Excel

Αναλυτικό μαθητικό εργαστήριο: αλλάζουμε την ανεξάρτητη μεταβλητή Δt, εξάγουμε CSV και αναπαράγουμε στο Excel τους υπολογισμούς σφάλματος, ενέργειας, φάσης, περιόδου και κόστους του paper.

Student Guide · 20 κεφάλαια · Έκδοση 2026-09-15 · Αυτοτελής οδηγός μαθητών

Ξεκίνα το πείραμα

01. Τι θα μετρήσουμε

Από την κίνηση στην οθόνη σε ένα πείραμα που μπορεί να επαναληφθεί.

Εργάζεσαι στο Ψηφιακό Εργαστήριο Αρμονικού Ταλαντωτή. Μία μάζα κινείται δεμένη σε ιδανικό ελατήριο χωρίς απόσβεση, τριβή ή εξωτερική διέγερση. Η αναλυτική λύση Exact είναι η αναφορά. Οι τέσσερις αριθμητικές μέθοδοι είναι Explicit Euler (ρητή), Symplectic Euler (συμπλεκτική ή ημιπεπλεγμένη), Velocity Verlet και Runge–Kutta 4 (RK4). Η Exact δεν είναι πέμπτη αριθμητική μέθοδος στην πειραματική σύγκριση.

Στόχος είναι να απαντήσεις με δεδομένα: πόσο αλλάζει το σφάλμα όταν μικραίνει το χρονικό βήμα; Πόσο αυξάνεται το υπολογιστικό έργο; Αρκεί η καλή διατήρηση ενέργειας για να είναι σωστή η περίοδος και η φάση; Οι οδηγίες ακολουθούν το πρωτόκολλο και τους υπολογισμούς του πειραματικού μέρους της εργασίας «Όταν τα Μαθηματικά προβλέπουν την κίνηση».

  1. Διάβασε τα κεφάλαια 02–05 και πάρε έξι πλήρεις εξαγωγές με κοινές φυσικές παραμέτρους.
  2. Κάνε το αναλυτικό παράδειγμα Excel για Δt=0,1 s στα κεφάλαια 06–10.
  3. Συγκέντρωσε τα 24 αποτελέσματα και υπολόγισε τάξη, κόστος και λόγους σύγκρισης στα κεφάλαια 11–12.
  4. Για τις μετρήσεις του paper, ολοκλήρωσε και τα κεφάλαια 13–14 για φάση και περίοδο.
  5. Κάνε το ξεχωριστό πείραμα ορίου σφάλματος και ετοίμασε γραφήματα και συμπεράσματα. Η χρονομέτρηση στο κεφάλαιο 17 είναι πρόσθετη μελέτη, όχι προϋπόθεση για τον υπολογισμό του Cₐ.

Πώς χρησιμοποιείς αυτό το tutorial

Ο οδηγός κατασκευάζει νέο βιβλίο Excel από το μηδέν. Τα ονόματα φύλλων και οι διευθύνσεις κελιών που δίνονται εδώ αποτελούν ενιαίο παράδειγμα· δεν είναι οι διευθύνσεις των παλαιότερων έτοιμων βιβλίων εργασίας. Μην αναμειγνύεις τα δύο σύνολα διευθύνσεων.

Πίσω στα περιεχόμενα ↑

02. Φυσικό μοντέλο και μετρήσιμα μεγέθη

Ορίζουμε κάθε σύμβολο πριν το χρησιμοποιήσουμε στο Excel.

Σύμβολα και μονάδες

ΣύμβολοΣημασίαΤιμή στο πείραμα
mΜάζα1 kg
kΣταθερά ελατηρίου1 N/m
x₀Αρχική θέση, από τη θέση ισορροπίας1 m
v₀Αρχική ταχύτητα0 m/s
h = ΔtΧρονικό βήμα υπολογισμούΜία από τις έξι τιμές
TΣυνολική διάρκεια προσομοίωσης60 s
ωΓωνιακή συχνότητα √(k/m)1 rad/s
P₀Θεωρητική περίοδος 2π/ω6,283185307… s
E₀Αρχική μηχανική ενέργεια0,5 J

Μαθηματική σχέση

F = −k x,   a = F/m = −(k/m)x
x(t) = x₀ cos(ωt) + (v₀/ω) sin(ωt)
v(t) = −x₀ω sin(ωt) + v₀ cos(ωt)
E(t) = m v(t)²/2 + k x(t)²/2

Το αρνητικό πρόσημο της επιτάχυνσης δηλώνει ότι το ελατήριο έλκει τη μάζα προς την ισορροπία. Η ενέργεια είναι άθροισμα κινητικής και δυναμικής. Στο ιδανικό μοντέλο παραμένει σταθερή. Αν η αριθμητική ενέργεια αλλάζει, παρατηρούμε σφάλμα της προσέγγισης, όχι φυσική απόσβεση. Χρησιμοποιούμε P για την περίοδο και T για τα 60 s, ώστε να μη συγχέονται δύο διαφορετικοί χρόνοι.

Για m=k=x₀=1 και v₀=0 η Exact απλοποιείται σε x(t)=cos(t), v(t)=−sin(t), E₀=0,5 J. Οι τριγωνομετρικές συναρτήσεις χρησιμοποιούν ακτίνια (rad), όχι μοίρες.

Τι συγκρίνουμε δίκαια

ΠοσότηταΕρώτημα
max |eₓ| και RMSE, σε mΠόσο αποκλίνει η θέση από την Exact;
max |ΔE|, σε %Πόσο αποκλίνει η ενέργεια από την E₀;
Δφ, σε rad, και ΔP, σε msΕίναι σωστός ο χρονισμός της κίνησης;
Cₐ, πλήθος υπολογισμών επιτάχυνσηςΠόσο αριθμητικό έργο απαιτήθηκε;
Πίσω στα περιεχόμενα ↑

03. Το πρωτόκολλο των έξι σειρών

Κοινές συνθήκες, πλήρες διάστημα 0–60 s, τέσσερις μέθοδοι ανά χρονικό βήμα.

Η ανεξάρτητη μεταβλητή είναι το Δt όταν εξετάζουμε μία μέθοδο. Σε κάθε σταθερό Δt συγκρίνουμε τις τέσσερις μεθόδους. Οι ελεγχόμενες μεταβλητές είναι m, k, x₀, v₀, T. Οι εξαρτημένες μετρήσεις είναι τα σφάλματα, η περίοδος/φάση και το κόστος. Δεν αλλάζουμε μάζα ή αρχική ταχύτητα μαζί με το Δt, γιατί τότε δεν ξέρουμε ποιος παράγοντας προκάλεσε τη διαφορά.

  1. Άνοιξε Initial Conditions. Πληκτρολόγησε m=1, k=1, x₀=1, v₀=0, Total simulation time T=60. Κράτησε μονάδες SI.
  2. Για την κύρια σύγκριση ΑΠΕΝΕΡΓΟΠΟΙΗΣΕ το «Stop the method when error exceeds threshold». Διατήρησε το όριο στο 0,15 m για τη μετέπειτα ξεχωριστή δοκιμή, αλλά χωρίς ενεργό checkbox τώρα.
  3. Επίλεξε Exact και όλες τις αριθμητικές μεθόδους. Ξεκίνα με Δt=0,2 s και πάτησε Apply. Περίμενε να ολοκληρωθεί ο υπολογισμός/να ανταποκρίνεται η εφαρμογή.
  4. Αποθήκευσε το αποτέλεσμα με Save Data όπως εξηγείται στο κεφάλαιο 05. Επανέλαβε με 0,1, 0,05, 0,025, 0,001 και 0,0001 s, αλλάζοντας μόνο το Δt.
  5. Για κάθε αρχείο σημείωσε ομάδα, ημερομηνία, έκδοση εφαρμογής από About, περιβάλλον (Editor, Windows ή browser), πραγματικές ρυθμίσεις και όνομα εξαγωγής. Κράτησε το JSON μαζί με τα CSV.

Έξι σειρές και έλεγχος πληρότητας

Σειρά / suffixΔt (s)N βήματαN+1 δείγματαΤελευταία γραμμή Excel
dt0p2_full0,2300301302
dt0p1_full0,1600601602
dt0p05_full0,05120012011202
dt0p025_full0,025240024012402
dt0p001_full0,001600006000160002
dt0p0001_full0,0001600000600001600002

Μαθηματική σχέση

tₙ = n h,   n = 0, 1, …, N
Για τις έξι σειρές: N = T/h ακριβώς ως ακέραιος.
Δείγματα = N+1. Με μία γραμμή επικεφαλίδων, τελευταία γραμμή Excel = N+2.

Το Step είναι ο ακέραιος δείκτης n, όχι χρόνος. Για h=0,1 το Step 30 είναι t=3 s και η γραμμή του στο Excel είναι 32. Στη γραμμή 2 βρίσκεται το αρχικό δείγμα Step 0. Σε γενική διάρκεια που δεν είναι ακέραιο πολλαπλάσιο του h, η εφαρμογή μπορεί να χρησιμοποιεί μικρότερο τελικό βήμα· οι συγκεκριμένες έξι σειρές αποφεύγουν αυτή την περίπτωση.

Προσοχή

Η ρητή Euler θα εμφανίσει πολύ μεγάλα σφάλματα στα μεγάλα βήματα. Αυτό αποτελεί αποτέλεσμα του πειράματος. Αν παραμείνει ενεργή η πρόωρη διακοπή, δεν θα αναπαράγεις τη σύγκριση 60 s του paper.

Οργάνωση τάξης: κάθε ομάδα μπορεί να αναλάβει ένα από τα έξι Δt. Όλοι πρώτα κάνουν το κοινό παράδειγμα Δt=0,1. Έπειτα συγκεντρώνουν τέσσερις γραμμές ανά ομάδα: 6×4=24 συνδυασμούς. Δεν χρειάζονται 24 ξεχωριστές εξαγωγές, διότι μία εξαγωγή περιέχει όλες τις επιλεγμένες μεθόδους.

Πίσω στα περιεχόμενα ↑

04. Χειριστήρια και σωστή πηγή μέτρησης

Ξεχωρίζουμε τον υπολογισμό από την αναπαραγωγή της κίνησης.

Πρακτική χρήση

Χειριστήριο / περιοχήΤι κάνειΤι χρειάζεται στο πείραμα
Initial Conditions → ApplyΔημιουργεί νέες χρονοσειρές από τις ρυθμίσειςΝέο run όταν αλλάζει το Δt
Play • Pause • Step • ResetΑναπαραγωγή, παύση, επόμενο δείγμα, επιστροφή στην αρχήΔεν είναι χρονόμετρο υπολογιστικού κόστους
Method rowΣτιγμιαία x, v, E και σφάλματα στο ορατό δείγμαΔεν δίνει από μόνη της μέγιστο 60 s
Summary στην οθόνηΣυγκεντρωτικά έως το σημείο αναπαραγωγήςΓια πλήρη μέτρηση προτίμησε το εξαγόμενο summary
Analysis SettingsΕπιλογή ορατών μεθόδωνΒοηθά όταν επικαλύπτονται καμπύλες· δεν αλλάζει τους τύπους
Fit Screen / Detailed, Light / DarkΔιάταξη και χρώματαLight και Detailed για ευανάγνωστα screenshots
Save DataΕξάγει τις υπολογισμένες χρονοσειρές και συνόψειςΠηγή για το Excel
Performance StudyΞεχωριστές επαναληπτικές χρονομετρήσειςΠροαιρετική μελέτη, κεφάλαιο 17

Μετά το Apply τα αποτελέσματα έχουν υπολογιστεί πριν ολοκληρωθεί το animation. Το Save Data εξάγει το υπολογισμένο αποτέλεσμα και δεν απαιτεί να περιμένεις 60 πραγματικά δευτερόλεπτα αναπαραγωγής. Αν διαβάζεις τον πίνακα Summary της οθόνης κατά την αναπαραγωγή, μπορεί να βλέπεις μόνο το ιστορικό μέχρι το τρέχον t. Πάντα έλεγξε το τελευταίο Time_s στο CSV και τα Steps στο summary.

Προσοχή

Ένας χρόνος 60 s στην οθόνη είναι χρόνος του φυσικού μοντέλου. Δεν είναι χρόνος που χρειάστηκε ο υπολογιστής για τις πράξεις. Το πλήθος frames επίσης δεν είναι το πλήθος αριθμητικών βημάτων.

Πίσω στα περιεχόμενα ↑

05. Λήψη CSV και JSON

Αποθήκευση με την ακρίβεια που απαιτούν τα μικρά σφάλματα.

  1. Πάτησε Save Data. Επίλεξε All methods data, Raw time series, Error metrics, Simulation settings και Summary statistics. Αν υπάρχουν επιμέρους επιλογές στηλών, κράτησε όλες όσες αναφέρονται παρακάτω.
  2. Στο Numeric precision βάλε 15. Πρόκειται για δεκαδικές θέσεις της εξαγωγής, όχι για ακρίβεια του αλγορίθμου. Η προεπιλογή 6 δεν αρκεί για τις μικρές αποκλίσεις της RK4.
  3. Για το ελληνικό παράδειγμα επίλεξε decimal separator Comma. Οι τιμές γράφονται π.χ. 0,1 και τα πεδία χωρίζονται με ελληνικό ερωτηματικό / semicolon (;). Εναλλακτικά Dot δίνει τιμές 0.1 και διαχωριστικό πεδίων κόμμα (,). Κατέγραψε ποιο επέλεξες.
  4. Χρησιμοποίησε suffix dt0p1_full για Δt=0,1 και αντίστοιχα τα ονόματα του πίνακα. Κράτησε timestamp για να μη συγχέονται επαναλήψεις.
  5. Σε Windows build/Editor επίλεξε τον φάκελο αποθήκευσης και επιβεβαίωσε ότι δημιουργήθηκαν τα αρχεία εκεί. Στην έκδοση browser πάτησε Prepare Download και στο παράθυρο λήψης Save As… ή Download ZIP. Αν ο browser δεν υποστηρίζει επιλογή φακέλου, έλεγξε τις Λήψεις (Downloads).
  6. Άνοιξε το ZIP και κάνε Εξαγωγή όλων / Extract All σε φάκελο του run. Έλεγξε ότι περιέχει *_timeseries.csv, *_summary.csv και *_configuration.json. Μην θεωρείς μια ένδειξη στην εφαρμογή απόδειξη ότι ολοκληρώθηκε η λήψη· εντόπισε το πραγματικό αρχείο.

Περιεχόμενο εξαγωγής

ΑρχείοΧρήση
*_timeseries.csvΜία γραμμή ανά δείγμα. Όλες οι μέθοδοι σε ομάδες στηλών στον ίδιο χρόνο.
*_summary.csvΜία γραμμή ανά μέθοδο: μέγιστο σφάλμα, RMSE, μέγιστη απόλυτη ενεργειακή απόκλιση, Steps, Status, StoppedAt_s.
*_configuration.jsonΤεκμηρίωση των πραγματικών m, k, x₀, v₀, Δt, T και stopWhenErrorExceedsThreshold. Το JSON έχει πάντα τελεία στα δεκαδικά.

Προσοχή

Δεν αντικαθιστούμε τα αρχικά CSV με αρχεία που έχουμε επεξεργαστεί. Δουλεύουμε σε ξεχωριστό .xlsx. Για h=0,0001 το raw αρχείο είναι μεγάλο· άφησε χρόνο για προετοιμασία και λήψη, χωρίς επαναλαμβανόμενα κλικ.

Πίσω στα περιεχόμενα ↑

06. Από CSV σε πραγματικές στήλες Excel

Εισαγωγή με έλεγχο διαχωριστικών και αριθμητικού τύπου δεδομένων.

  1. Άνοιξε κενό βιβλίο στο Excel. Επίλεξε Δεδομένα → Από κείμενο/CSV (Data → From Text/CSV). Διάλεξε το *_timeseries.csv για dt0p1_full.
  2. Στην προεπισκόπηση όρισε UTF-8 για την κωδικοποίηση και το πραγματικό διαχωριστικό πεδίων: Semicolon (;) για εξαγωγή Comma ή Comma (,) για εξαγωγή Dot. Πρέπει να βλέπεις πολλές στήλες, όχι ένα μακρύ κείμενο στην Α.
  3. Επίλεξε Μετασχηματισμός δεδομένων / Transform Data. Για αριθμούς με δεκαδικό κόμμα χρησιμοποίησε Αλλαγή τύπου → Χρήση τοπικών ρυθμίσεων / Change Type → Using Locale: Decimal Number και Greek (Greece). Για δεκαδική τελεία χρησιμοποίησε English (United States). Το Step είναι Whole Number.
  4. Αν δημιουργήθηκε αυτόματο βήμα Changed Type με λάθος ερμηνεία, αφαίρεσε εκείνο το βήμα και όρισε τον σωστό τύπο από τα αρχικά κείμενα. Δεν αρκεί να μορφοποιήσεις ως αριθμούς δεδομένα που έχουν ήδη μετατραπεί λανθασμένα. Μην επιλέξεις Fixed Decimal Number/Currency: περιορίζει τα δεκαδικά και βλάπτει τα μικρά σφάλματα.
  5. Κλείσιμο και φόρτωση σε… / Close & Load To… → Table, σε νέο φύλλο με αρχή Α1. Μετονόμασέ το Data. Η γραμμή 1 πρέπει να είναι οι επικεφαλίδες, η γραμμή 2 το t=0, η γραμμή 3 το t=0,1 και η γραμμή 602 το t=60.
  6. Για τους τύπους αυτού του tutorial χρησιμοποίησε απλή περιοχή: επίλεξε κελί του εισαγόμενου πίνακα → Σχεδίαση πίνακα / Table Design → Μετατροπή σε περιοχή / Convert to Range. Έτσι οι τύποι θα χρησιμοποιούν τις διευθύνσεις H2, C2 κ.λπ. που δίνονται εδώ. Μην ανανεώνεις την εισαγωγή αφού προσθέσεις υπολογισμούς· κράτησε το αρχικό CSV για νέο import αν χρειαστεί.
  7. Αποθήκευση ως → Excel Workbook (*.xlsx), π.χ. Lab_dt0p1.xlsx. Η απλή μετονομασία της κατάληξης .csv σε .xlsx δεν είναι μετατροπή. Το CSV δεν αποθηκεύει πολλά φύλλα, τύπους και γραφήματα όπως το .xlsx.

Έλεγχος σε οποιοδήποτε άδειο κελί: πρέπει να δώσει TRUE

=ISNUMBER(Data!B3)

Έλεγχος h=0,1: πρέπει να δώσει 601

=COUNT(Data!B2:B602)

Αν όλα άνοιξαν στη στήλη Α, κάνε νέα εισαγωγή με τη σωστή επιλογή Delimiter. Εναλλακτικά, σε αντίγραφο του αρχείου: επίλεξε Α → Δεδομένα → Κείμενο σε στήλες / Text to Columns → Delimited → μόνο το σωστό διαχωριστικό, και έλεγξε Advanced για το δεκαδικό σύμβολο. Μην κάνεις μαζική αντικατάσταση όλων των κομμάτων: μπορεί να καταστρέψεις αριθμούς ή διαχωριστικά.

Προσοχή

Στους τύπους του οδηγού τα ορίσματα χωρίζονται με ;, όπως συνήθως στο ελληνικό Excel. Αν το δικό σου Excel απαιτεί κόμμα, άλλαξε μόνο τα διαχωριστικά ορισμάτων σε ,. Οι αγγλικές ονομασίες συναρτήσεων εμφανίζονται με την αυτόματη συμπλήρωση· αν η εγκατάστασή σου χρησιμοποιεί μεταφρασμένες ονομασίες, επίλεξε την αντίστοιχη συνάρτηση από fx. Το = αρχίζει τον τύπο, το : δηλώνει περιοχή, το ! χωρίζει όνομα φύλλου και κελί, το ^ δηλώνει δύναμη.

Μορφοποίησε μικρά σφάλματα ως Επιστημονική / Scientific με 6–8 δεκαδικά στην εμφάνιση. Για παράδειγμα 4,849490E−05 σημαίνει 4,849490×10⁻⁵. Η εμφάνιση δεν αλλάζει την αποθηκευμένη τιμή. Οι στήλες που ήδη περιέχουν αριθμό επί 100 έχουν μονάδα % στην επικεφαλίδα: ΜΗΝ τους βάλεις επιπλέον μορφοποίηση Percentage, γιατί το Excel θα τις πολλαπλασιάσει ξανά επί 100 στην εμφάνιση.

Πίσω στα περιεχόμενα ↑

07. Χάρτης των στηλών και πρώτο δείγμα

Έλεγξε τις επικεφαλίδες πριν αντιγράψεις τύπους.

Οι παρακάτω διευθύνσεις ισχύουν όταν εξάγονται όλες οι μέθοδοι και όλες οι ποσότητες στην τρέχουσα διάταξη. Αν λείπει μέθοδος/πεδίο ή η επικεφαλίδα διαφέρει, κάνε πλήρη εξαγωγή πριν συνεχίσεις. Το Time_s είναι στη Β, το Step στην Α. Σε κάθε μέθοδο ακολουθούν θέση, ταχύτητα, ενέργεια, απόλυτο σφάλμα θέσης και προσημασμένη ενεργειακή απόκλιση επί 100.

Data: οι 27 πρωτογενείς στήλες

Μέθοδοςx (m)v (m/s)E (J)|eₓ| (m)ΔE (%)
ExactCDEFG
Explicit EulerHIJKL
Symplectic EulerMNOPQ
Velocity VerletRSTUV
RK4WXYZAA

Παράδειγμα επικεφαλίδας: ExplicitEuler_Position_m στη H1, Exact_Position_m στη C1. Η θέση μπορεί να είναι αρνητική· το PositionError_m είναι απόλυτη διαφορά και δεν είναι αρνητικό. Η EnergyError_percent μπορεί να είναι αρνητική αν η ενέργεια είναι μικρότερη από E₀.

Στη γραμμή 3: t=0,1 s, όχι στη γραμμή 2

ΜέθοδοςxvE
Exact0,995004165278…−0,099833416647…0,5
Explicit Euler1−0,10,505
Symplectic Euler0,99−0,10,49505
Velocity Verlet0,995−0,099750,49998753125
RK40,995004166667…−0,099833333333…0,499999993064…

Για Euler στο πρώτο βήμα: |eₓ|=|1−0,995004165278…|=0,004995834722… m. Η απόκλιση ενέργειας είναι 100(0,505−0,5)/0,5=1%. Αυτά είναι στιγμιαία σφάλματα στο t=0,1· δεν είναι τα μέγιστα όλης της προσομοίωσης.

Πίσω στα περιεχόμενα ↑

08. Κατασκευή του φύλλου Params

Γράφουμε τις κοινές παραμέτρους μία φορά και τις χρησιμοποιούμε με σταθερές αναφορές.

Πρόσθεσε νέο φύλλο και ονόμασέ το ακριβώς Params. Βάλε τις ετικέτες στη στήλη Α και τις τιμές/τύπους στη Β στις παρακάτω γραμμές. Το παράδειγμα αφορά h=0,1. Όταν ανοίξεις δεδομένα άλλου run, άλλαξε τη B7 και έλεγξε το JSON. Μην αλλάξεις τις άλλες παραμέτρους.

Ακριβής διάταξη Params

ΚελίΕτικέτα στη στήλη ΑΤιμή ή τύπος
B2m (kg)1
B3k (N/m)1
B4x0 (m)1
B5v0 (m/s)0
B6T (s)60
B7h (s)0,1
B8Όριο |e_x| (m)0,15
B9omega (rad/s)
=SQRT(B3/B2)
B10E0 (J)
=B2*B5^2/2+B3*B4^2/2
B11N βήματα
=ROUND(B6/B7;0)
B12Δείγματα
=B11+1
B13Τελευταία γραμμή
=B12+1
B14Θεωρητική περίοδος (s)
=2*PI()/B9

Το SQRT υπολογίζει τετραγωνική ρίζα. Το PI() δίνει το π. Το ROUND(...;0) εδώ διορθώνει μόνο πιθανό αριθμητικό υπόλοιπο στο ακέραιο T/h· δεν είναι γενικός κανόνας για αυθαίρετο μη ακέραιο T/h. Στις συγκεκριμένες έξι σειρές το πηλίκο είναι ακέραιο.

Το Params!$B$2 σημαίνει «πάρε πάντα τη μάζα από το B2 του Params». Τα δύο $ κρατούν σταθερά στήλη και γραμμή όταν γεμίζεις προς τα κάτω. Αντίθετα, H2 γίνεται H3 στην επόμενη γραμμή, ώστε να διαβάζεται η νέα θέση. Δεν βάζουμε $ στη γραμμή ενός δείγματος όταν θέλουμε να αλλάζει ο χρόνος.

Προαιρετικός ανεξάρτητος έλεγχος Exact στο Data!AV2

=Params!$B$4*COS(Params!$B$9*B2)+(Params!$B$5/Params!$B$9)*SIN(Params!$B$9*B2)

Προαιρετικός έλεγχος ταχύτητας στο Data!AW2

=-Params!$B$4*Params!$B$9*SIN(Params!$B$9*B2)+Params!$B$5*COS(Params!$B$9*B2)

Βάλε επικεφαλίδες Exact_check_x και Exact_check_v στα AV1 και AW1 και γέμισε ως τη γραμμή 602. Σύγκρινε με C και D. Χρησιμοποιούμε χρόνο από B2, όχι τον δείκτη A2. Μικρές διαφορές στα τελευταία ψηφία μπορούν να προκύπτουν από στρογγυλοποίηση της εξαγωγής και τις υλοποιήσεις των τριγωνομετρικών συναρτήσεων.

Πίσω στα περιεχόμενα ↑

09. Τύποι ανά δείγμα για όλες τις μεθόδους

Στο Data κρατάμε τις αρχικές A:AA ανέπαφες και προσθέτουμε υπολογισμούς δεξιά.

Μαθηματική σχέση

eₙ = |xₙ − xExact(tₙ)|
qₙ = eₙ²
Eₙ = m vₙ²/2 + k xₙ²/2
dₙ = 100(Eₙ−E₀)/E₀
aₙ = |dₙ|

Χρειαζόμαστε το qₙ για το RMSE. Χρειαζόμαστε και το προσημασμένο dₙ για να δούμε αν η ενέργεια αυξήθηκε ή μειώθηκε, αλλά και το απόλυτο aₙ για να βρούμε τη μεγαλύτερη απόκλιση ανεξάρτητα από πρόσημο. Δεν παίρνουμε απόλυτη τιμή της ίδιας της θέσης: αρνητική θέση είναι φυσιολογική.

Explicit Euler — στήλες AB:AF

Στη γραμμή 1 βάλε, αντίστοιχα, τις επικεφαλίδες err_x, err_x_squared, energy_check_J, energy_signed_percent, energy_abs_percent με πρόθεμα το όνομα της μεθόδου. Γράψε τους πέντε τύπους στη γραμμή 2.

Data!AB2 — απόλυτο σφάλμα θέσης

=IF(COUNT(H2;C2)=2;ABS(H2-C2);NA())

Data!AC2 — τετράγωνο σφάλματος

=AB2^2

Data!AD2 — ενέργεια από x και v

=IF(COUNT(H2;I2)=2;Params!$B$2*I2^2/2+Params!$B$3*H2^2/2;NA())

Data!AE2 — προσημασμένη ενεργειακή απόκλιση (%)

=IF(Params!$B$10>0;100*(AD2-Params!$B$10)/Params!$B$10;NA())

Data!AF2 — απόλυτη ενεργειακή απόκλιση (%)

=ABS(AE2)

Symplectic Euler — στήλες AG:AK

Στη γραμμή 1 βάλε, αντίστοιχα, τις επικεφαλίδες err_x, err_x_squared, energy_check_J, energy_signed_percent, energy_abs_percent με πρόθεμα το όνομα της μεθόδου. Γράψε τους πέντε τύπους στη γραμμή 2.

Data!AG2 — απόλυτο σφάλμα θέσης

=IF(COUNT(M2;C2)=2;ABS(M2-C2);NA())

Data!AH2 — τετράγωνο σφάλματος

=AG2^2

Data!AI2 — ενέργεια από x και v

=IF(COUNT(M2;N2)=2;Params!$B$2*N2^2/2+Params!$B$3*M2^2/2;NA())

Data!AJ2 — προσημασμένη ενεργειακή απόκλιση (%)

=IF(Params!$B$10>0;100*(AI2-Params!$B$10)/Params!$B$10;NA())

Data!AK2 — απόλυτη ενεργειακή απόκλιση (%)

=ABS(AJ2)

Velocity Verlet — στήλες AL:AP

Στη γραμμή 1 βάλε, αντίστοιχα, τις επικεφαλίδες err_x, err_x_squared, energy_check_J, energy_signed_percent, energy_abs_percent με πρόθεμα το όνομα της μεθόδου. Γράψε τους πέντε τύπους στη γραμμή 2.

Data!AL2 — απόλυτο σφάλμα θέσης

=IF(COUNT(R2;C2)=2;ABS(R2-C2);NA())

Data!AM2 — τετράγωνο σφάλματος

=AL2^2

Data!AN2 — ενέργεια από x και v

=IF(COUNT(R2;S2)=2;Params!$B$2*S2^2/2+Params!$B$3*R2^2/2;NA())

Data!AO2 — προσημασμένη ενεργειακή απόκλιση (%)

=IF(Params!$B$10>0;100*(AN2-Params!$B$10)/Params!$B$10;NA())

Data!AP2 — απόλυτη ενεργειακή απόκλιση (%)

=ABS(AO2)

RK4 — στήλες AQ:AU

Στη γραμμή 1 βάλε, αντίστοιχα, τις επικεφαλίδες err_x, err_x_squared, energy_check_J, energy_signed_percent, energy_abs_percent με πρόθεμα το όνομα της μεθόδου. Γράψε τους πέντε τύπους στη γραμμή 2.

Data!AQ2 — απόλυτο σφάλμα θέσης

=IF(COUNT(W2;C2)=2;ABS(W2-C2);NA())

Data!AR2 — τετράγωνο σφάλματος

=AQ2^2

Data!AS2 — ενέργεια από x και v

=IF(COUNT(W2;X2)=2;Params!$B$2*X2^2/2+Params!$B$3*W2^2/2;NA())

Data!AT2 — προσημασμένη ενεργειακή απόκλιση (%)

=IF(Params!$B$10>0;100*(AS2-Params!$B$10)/Params!$B$10;NA())

Data!AU2 — απόλυτη ενεργειακή απόκλιση (%)

=ABS(AT2)

Το IF(συνθήκη;αν_ισχύει;αν_δεν_ισχύει) επιλέγει τι θα υπολογιστεί. Το COUNT μετρά αριθμητικές τιμές. Αν λείπει x ή v ή αν οι τιμές εισήχθησαν ως κείμενο, το NA() εμφανίζει #N/A: σταματάμε και διορθώνουμε την εισαγωγή. Δεν μετατρέπουμε σιωπηρά το κενό σε μηδενικό σφάλμα. Στο κύριο πλήρες πείραμα δεν πρέπει να υπάρχει τέτοιο κενό.

  1. Έχοντας γράψει τους 20 τύπους στα AB2:AU2, πάτησε στο πλαίσιο ονόματος αριστερά από τη γραμμή τύπων του Excel.
  2. Πληκτρολόγησε AB2:AU602 και Enter. Επίλεξε Κεντρική → Συμπλήρωση → Κάτω (Home → Fill → Down) ή Ctrl+D.
  3. Έλεγξε AB3: πρέπει να αναφέρεται σε H3 και C3. Έλεγξε AD602: πρέπει να χρησιμοποιεί I602 και H602, αλλά ακόμη Params!$B$2 και Params!$B$3.
  4. Σύγκρινε AB3 με K3, AG3 με P3, AL3 με U3, AQ3 με Z3. Σύγκρινε AE3 με L3, AJ3 με Q3, AO3 με V3, AT3 με AA3. Οι τιμές πρέπει να συμφωνούν μέσα στα όρια στρογγυλοποίησης.

Προσοχή

Για άλλη πλήρη σειρά αλλάζεις το 602 στην τελευταία γραμμή του κεφαλαίου 03. ΜΗΝ χρησιμοποιείς αυτή τη διαδικασία χωρίς αλλαγή στην πρόωρα σταματημένη δοκιμή: εκεί υπάρχουν πραγματικά κενά μετά τη διακοπή. Η διαφορετική ανάλυση εξηγείται στο κεφάλαιο 15.

Πίσω στα περιεχόμενα ↑

10. Από τα δείγματα στις συνολικές μετρικές

Υπολογίζουμε μέγιστο, RMSE, ενεργειακή απόκλιση και πλήθος βημάτων για όλο το run.

Μαθηματική σχέση

MaxError = max(e₀, e₁, …, eN)
RMSE = √[(q₀+q₁+…+qN)/(N+1)]
MaxEnergyPercent = max(a₀, a₁, …, aN)

Το μέγιστο δείχνει το χειρότερο δείγμα. Το RMSE περιγράφει τη συνολική απόκλιση: τετραγωνίζουμε για να μη σβήνονται μεταξύ τους θετικά και αρνητικά σφάλματα, βρίσκουμε τον μέσο όρο και παίρνουμε ρίζα για να επιστρέψουμε σε μέτρα. Η αρχική εγγραφή συμμετέχει, άρα εδώ διαιρούμε με 601 και όχι 600. Η εφαρμογή ακολουθεί την ίδια σύμβαση. Το MAX των θετικών μόνο dₙ δεν αρκεί: μπορεί να χάσει μεγάλη αρνητική ενεργειακή απόκλιση.

Δημιούργησε φύλλο Metrics. Στη γραμμή 1 γράψε A:Method, B:h_s, C:Steps, D:Samples, E:MaxError_m, F:RMSE_m, G:MaxEnergy_percent, H:EvaluationsPerStep, I:AccelerationEvaluations. Βάλε τις τέσσερις μεθόδους στις γραμμές 2–5 όπως παρακάτω. Οι τύποι είναι για το κοινό παράδειγμα h=0,1, γραμμές Data 2:602.

Metrics — γραμμή 2: Explicit Euler

ΚελίΤι πληκτρολογώ
A2Explicit Euler
B2
=Params!$B$7
D2
=COUNT(Data!H2:H602)
C2
=D2-1
E2
=MAX(Data!AB2:AB602)
F2
=SQRT(AVERAGE(Data!AC2:AC602))
G2
=MAX(Data!AF2:AF602)
H21
I2
=C2*H2

Metrics — γραμμή 3: Symplectic Euler

ΚελίΤι πληκτρολογώ
A3Symplectic Euler
B3
=Params!$B$7
D3
=COUNT(Data!M2:M602)
C3
=D3-1
E3
=MAX(Data!AG2:AG602)
F3
=SQRT(AVERAGE(Data!AH2:AH602))
G3
=MAX(Data!AK2:AK602)
H31
I3
=C3*H3

Metrics — γραμμή 4: Velocity Verlet

ΚελίΤι πληκτρολογώ
A4Velocity Verlet
B4
=Params!$B$7
D4
=COUNT(Data!R2:R602)
C4
=D4-1
E4
=MAX(Data!AL2:AL602)
F4
=SQRT(AVERAGE(Data!AM2:AM602))
G4
=MAX(Data!AP2:AP602)
H42
I4
=C4*H4

Metrics — γραμμή 5: RK4

ΚελίΤι πληκτρολογώ
A5RK4
B5
=Params!$B$7
D5
=COUNT(Data!W2:W602)
C5
=D5-1
E5
=MAX(Data!AQ2:AQ602)
F5
=SQRT(AVERAGE(Data!AR2:AR602))
G5
=MAX(Data!AU2:AU602)
H54
I5
=C5*H5

Πριν χρησιμοποιήσεις τις μετρικές, επιβεβαίωσε Samples=601 και Steps=600 και στις τέσσερις γραμμές, με τελευταίο χρόνο Data!B602=60. Για άλλο Δt άλλαξε όλα τα άκρα περιοχών, όχι μόνο το πλήθος βημάτων. Το AVERAGE αγνοεί κενά/κείμενο· γι’ αυτό ο έλεγχος πλήθους είναι ουσιώδης και οι τύποι του κεφαλαίου 09 εμφανίζουν #N/A όταν λείπουν τιμές.

Αναμενόμενες τιμές h=0,1, T=60, stop OFF

Μέθοδοςmax |eₓ| (m)RMSE (m)max |ΔE| (%)Cₐ
Explicit Euler18,71442258605,253899864639058,3396999600
Symplectic Euler0,07429640876040,04434877583005,26281690170600
Velocity Verlet0,02423436122430,01013323636030,2499943082001200
RK44,84948980002E−052,02806882235E−050,0008322882092400
  1. Εισήγαγε και το *_summary.csv σε νέο φύλλο με όνομα ExportSummary, αρχή A1, με την ίδια σωστή επιλογή locale.
  2. Βρες τη γραμμή της ίδιας μεθόδου από το Method, όχι από μια υποτιθέμενη σταθερή θέση. Το summary περιλαμβάνει και Exact, ενώ το Metrics μας έχει μόνο τις τέσσερις αριθμητικές μεθόδους.
  3. Σύγκρινε E του Metrics με MaxPositionError_m, F με RMSE_m, G με MaxAbsoluteEnergyError_percent και C με Steps. Για h=0,1, οι αριθμοί πρέπει να συμφωνούν στα εμφανιζόμενα 8 περίπου σημαντικά ψηφία.
  4. Αν διαφέρουν ουσιαστικά, έλεγξε stop OFF, τις τιμές του JSON, τα δεκαδικά, την τελευταία γραμμή και αν συμπεριέλαβες t=0. Μην αλλάζεις αυθαίρετα τον τύπο για να μοιάσει με την αναμενόμενη τιμή.
Πίσω στα περιεχόμενα ↑

11. Κοινός πίνακας 24 αποτελεσμάτων και τάξη σύγκλισης

Η ίδια ακριβώς μετρική σε έξι χρονικά βήματα.

Για τις πυκνές σειρές h=0,001 και 0,0001, κράτησε όλα τα πρωτογενή αρχεία, αλλά εισήγαγε αρχικά μόνο τα μικρά summary. Στα 0,0001 υπάρχουν 600001 δείγματα και περίπου 16,2 εκατομμύρια raw αριθμητικά κελιά. Το φύλλο χωρά έως 1048576 γραμμές, αλλά η μνήμη μπορεί να μην αρκεί για πολλές τέτοιες σειρές και πρόσθετους τύπους. Ένα βιβλίο ανά Δt, χωρίς ένωση όλων των μεθόδων σε μία πολύ μακριά λίστα, είναι πρακτικότερο. Τα summary υπολογίζονται από ΟΛΑ τα δείγματα, όχι από αραιωμένα σημεία γραφημάτων.

Δημιούργησε βιβλίο Study.xlsx με φύλλο Study. Στη γραμμή 1 βάλε τις στήλες του επόμενου πίνακα. Για κάθε run πάρε B από το JSON, C:D:E:F από την αριθμητική γραμμή του summary όπως αντιστοιχίζονται παρακάτω. Αντέγραψε αριθμητικές τιμές, όχι screenshots. Κράτησε το αρχικό όνομα αρχείου στη L. Το CSV του summary δεν περιέχει το Δt ως ξεχωριστή στήλη, άρα είναι απαραίτητη η αντιστοίχιση με το JSON του ίδιου run.

Study — στήλες

ΣτήληΠεριεχόμενοΠηγή
AMethodSummary: Method
Bh_sJSON: simulation.timeStep
CStepsSummary: Steps
DMaxError_mSummary: MaxPositionError_m
ERMSE_mSummary: RMSE_m
FMaxEnergy_percentSummary: MaxAbsoluteEnergyError_percent
Gs_m1, 1, 2 ή 4
HC_a
=C2*G2, έπειτα κάτω
IErrorReductionD της μεγαλύτερης h / D της επόμενης μικρότερης h
JObservedOrderln(λόγος σφαλμάτων) / ln(λόγος βημάτων)
KStatusSummary: Status, κύριο πείραμα Completed
LSourceRunΌνομα αρχείων CSV/JSON

Ταξινόμησε ανά μέθοδο και, μέσα σε κάθε μέθοδο, κατά φθίνουσα B: 0,2, 0,1, 0,05, 0,025, 0,001, 0,0001. Χρησιμοποίησε αυτή τη σειρά: Euler γραμμές 2–7, Symplectic 8–13, Verlet 14–19, RK4 20–25. Οι συγκρίσεις πρέπει να γίνονται ΜΟΝΟ ανάμεσα σε δύο βήματα της ίδιας μεθόδου.

Study!I2 — παράγοντας μείωσης σφάλματος, συμπλήρωση μέχρι I25

=IF(A2=A3;IF(AND(D2>0;D3>0);D2/D3;NA());"")

Study!J2 — παρατηρούμενη τάξη, συμπλήρωση μέχρι J25

=IF(A2=A3;IF(AND(D2>0;D3>0;B2>B3;B3>0);LN(D2/D3)/LN(B2/B3);NA());"")

Μαθηματική σχέση

Αν e(h) ≈ C hᵖ, τότε e(h₁)/e(h₂) ≈ (h₁/h₂)ᵖ.
Άρα p ≈ ln[e(h₁)/e(h₂)] / ln(h₁/h₂).

Παράδειγμα Verlet από 0,1 σε 0,05: 0,0242343612243 / 0,00605557382854 ≈ 4,002, άρα p≈2,0007. Στην RK4 η μείωση είναι περίπου 16 και p≈4, ενώ οι Euler τείνουν σε p≈1 στα αρκετά μικρά βήματα. Οι πρώτες μεγάλες μειώσεις της ρητής Euler δεν αποδεικνύουν τέταρτη τάξη: η μακρόχρονη ενεργειακή αύξηση στα χονδρά βήματα αλλοιώνει τη συμπεριφορά έξω από την ασυμπτωτική περιοχή.

Προσοχή

Από 0,025 σε 0,001 ο λόγος h είναι 25, όχι 2. Από 0,001 σε 0,0001 είναι 10. Χρησιμοποίησε LN(B2/B3), όχι πάντα LN(2). Στην RK4 στο μικρότερο βήμα κυριαρχεί η στρογγυλοποίηση· η τελευταία εκτίμηση p≈1,14 δεν σημαίνει ότι η μέθοδος έγινε πρώτης τάξης. Για καθαρή εκτίμηση RK4 χρησιμοποίησε τις σειρές 0,2–0,025.

Έλεγχος τάξης μεγέθους: max |eₓ| σε m (όχι τιμές προς αντιγραφή αντί μετρήσεων)

h (s)EulerSymplecticVerletRK4
0,2318,79240,197300840,0968221810,00077330142
0,118,7144230,0742964090,0242343614,8494898e-05
0,053,44903580,0310585270,00605557383,0288853e-06
0,0251,10932690,0140144140,00151374821,8928028e-07
0,0010,0302996790,000502421662,4220028e-064,8071616e-13
0,00010,00298939515,0024216e-052,4220036e-083,4749981e-14
Πίσω στα περιεχόμενα ↑

12. Κόστος και ποσοτικές συγκρίσεις του paper

Διαχωρίζουμε το έργο ανά βήμα από το συνολικό έργο και από τον χρόνο εκτέλεσης.

Μαθηματική σχέση

Cₐ = N · sₘ
sₘ: Euler 1, Symplectic Euler 1, Velocity Verlet 2, RK4 4

Κάθε αξιολόγηση επιτάχυνσης υπολογίζει a(x)=−(k/m)x. Στη συγκεκριμένη υλοποίηση η Verlet αξιολογεί δύο επιταχύνσεις σε κάθε βήμα και η RK4 τέσσερις. Αυτοί οι συντελεστές αφορούν τον κώδικα του εργαστηρίου: μια διαφορετική Verlet με επαναχρησιμοποίηση της προηγούμενης επιτάχυνσης θα είχε διαφορετική καταμέτρηση. Το Cₐ δεν μετρά όλες τις εντολές της CPU, τα γραφήματα ή την Exact που χρησιμοποιείται για τον έλεγχο σφάλματος.

Για T=60, h=0,1: N=600 και Cₐ=(600,600,1200,2400). Αν υποδιπλασιάσουμε το h, διπλασιάζεται το N και το Cₐ της ίδιας μεθόδου. Το κόστος ανά βήμα δεν αλλάζει. Δεν γράφουμε «η RK4 είναι τέσσερις φορές πιο αργή» μόνο από το sₘ=4: ο χρόνος εκτέλεσης χρειάζεται ξεχωριστή μέτρηση.

Στο Metrics του h=0,1 μπορείς να αναπαράγεις τους λόγους του paper με τους παρακάτω τύπους. Αν ο αριθμητής είναι το σφάλμα μιας μεθόδου και ο παρονομαστής το μικρότερο σφάλμα άλλης, το αποτέλεσμα δείχνει πόσες φορές μεγαλύτερο είναι το πρώτο, όχι ποσοστό.

Λόγοι για h=0,1

ΣύγκρισηΤύπος σε άδειο κελίΠερίπου
Σφάλμα Verlet / RK4
=Metrics!E4/Metrics!E5
499,73
Ενέργεια Verlet / RK4
=Metrics!G4/Metrics!G5
300,37
Σφάλμα Symplectic / Verlet
=Metrics!E3/Metrics!E4
3,07
Ενέργεια Symplectic / Verlet
=Metrics!G3/Metrics!G4
21,05
Κόστος RK4 / Verlet
=Metrics!I5/Metrics!I4
2
Σφάλμα Euler / RK4
=Metrics!E2/Metrics!E5
3,85905×10⁵
  1. Διάλεξε στόχο, π.χ. max |eₓ| ≤ 0,001 m για όλο το διάστημα 60 s. Βάλε τον στο Study!N2 και τίτλο TargetError_m στο N1.
  2. Βάλε Eligible στο M1 και στο M2 τον τύπο που ακολουθεί. Συμπλήρωσε ως M25. Φίλτραρε τις γραμμές με YES.
  3. Σύγκρινε το Cₐ στη H ανάμεσα στις επιλέξιμες γραμμές. Μην επιλέγεις απλώς το μικρότερο h. Για αυτά τα δεδομένα RK4 με h=0,2 έχει max≈0,0007733 m και Cₐ=1200.
  4. Γράψε «η οικονομικότερη επιλέξιμη επιλογή μεταξύ των 24 δοκιμασμένων συνδυασμών με κριτήριο Cₐ». Δεν έχεις αποδείξει ότι είναι η ταχύτερη σε κάθε υπολογιστή ή η καλύτερη για κάθε φυσικό σύστημα.

Study!M2 — έλεγχος του δηλωμένου στόχου

=IF(AND(ISNUMBER(D2);ISNUMBER($N$2));IF(D2<=$N$2;"YES";"NO");NA())

Μια επιλογή κυριαρχείται αν υπάρχει άλλη με κόστος όχι μεγαλύτερο και σφάλμα όχι μεγαλύτερο, με τουλάχιστον ένα από τα δύο αυστηρά μικρότερο. Οι μη κυριαρχούμενες επιλογές σχηματίζουν το μέτωπο Pareto. Το ποια θα διαλέξεις εξαρτάται από το επιτρεπτό σφάλμα και τον διαθέσιμο προϋπολογισμό έργου.

Πίσω στα περιεχόμενα ↑

13. Φάση: ATAN2 και unwrap βήμα προς βήμα

Αναπαράγουμε την τελική και τη μέγιστη απόκλιση φάσης στο h=0,1.

Μαθηματική σχέση

θₙ = atan2(−vₙ/ω, xₙ)
φₙ = unwrap(θₙ)
Δφₙ = φMethod,ₙ − φExact,ₙ

Η φάση περιγράφει σε ποιο σημείο του κύκλου βρίσκεται η ταλάντωση. Το ζεύγος (x,−v/ω) έχει ίδιες μονάδες στους δύο άξονες. Η atan2 δίνει τη γωνία του διανύσματος και ξεχωρίζει σωστά τα τεταρτημόρια. Για x=cos(t), v=−sin(t), η συνεχής φάση είναι t. Η γωνία θ που επιστρέφεται αρχικά περιορίζεται περίπου μεταξύ −π και π. Όταν η κίνηση ξεπερνά το π, η θ πηδά κοντά στο −π, παρότι η ταλάντωση είναι συνεχής.

Προσοχή

Στο Excel η σύνταξη είναι ATAN2(x_num; y_num). Άρα γράφουμε ATAN2(x; −v/ω), όχι ATAN2(−v/ω; x). Στον μαθηματικό συμβολισμό και στην Python του paper τα ορίσματα παρουσιάζονται ως atan2(y,x). Πρόκειται για διαφορά συμβάσεων της συνάρτησης.

Δημιούργησε νέο φύλλο Phase. Στη γραμμή 1 βάλε A:Time_s, B:Exact_wrapped, C:Exact_unwrapped, D:Euler_wrapped, E:Euler_unwrapped, F:Euler_delta, G:Euler_abs, H:Symplectic_wrapped, I:Symplectic_unwrapped, J:Symplectic_delta, K:Symplectic_abs, L:Verlet_wrapped, M:Verlet_unwrapped, N:Verlet_delta, O:Verlet_abs, P:RK4_wrapped, Q:RK4_unwrapped, R:RK4_delta, S:RK4_abs.

Phase!A2 — χρόνος, συμπλήρωση ως A602

=Data!B2

Exact: Phase!B2 — γωνία, συμπλήρωση ως B602

=ATAN2(Data!C2;-Data!D2/Params!$B$9)

Exact: Phase!C2 — αρχική συνεχής φάση, ΜΟΝΟ στη γραμμή 2

=B2

Exact: Phase!C3 — συνέχεια, συμπλήρωση από γραμμή 3 ως C602

=C2+IF(B3-B2>PI();B3-B2-2*PI();IF(B3-B2<-PI();B3-B2+2*PI();B3-B2))

Euler: Phase!D2 — γωνία, συμπλήρωση ως D602

=ATAN2(Data!H2;-Data!I2/Params!$B$9)

Euler: Phase!E2 — αρχική συνεχής φάση, ΜΟΝΟ στη γραμμή 2

=D2

Euler: Phase!E3 — συνέχεια, συμπλήρωση από γραμμή 3 ως E602

=E2+IF(D3-D2>PI();D3-D2-2*PI();IF(D3-D2<-PI();D3-D2+2*PI();D3-D2))

Euler: Phase!F2 — προσημασμένη διαφορά, ως F602

=E2-$C2

Euler: Phase!G2 — απόλυτη διαφορά, ως G602

=ABS(F2)

Symplectic: Phase!H2 — γωνία, συμπλήρωση ως H602

=ATAN2(Data!M2;-Data!N2/Params!$B$9)

Symplectic: Phase!I2 — αρχική συνεχής φάση, ΜΟΝΟ στη γραμμή 2

=H2

Symplectic: Phase!I3 — συνέχεια, συμπλήρωση από γραμμή 3 ως I602

=I2+IF(H3-H2>PI();H3-H2-2*PI();IF(H3-H2<-PI();H3-H2+2*PI();H3-H2))

Symplectic: Phase!J2 — προσημασμένη διαφορά, ως J602

=I2-$C2

Symplectic: Phase!K2 — απόλυτη διαφορά, ως K602

=ABS(J2)

Verlet: Phase!L2 — γωνία, συμπλήρωση ως L602

=ATAN2(Data!R2;-Data!S2/Params!$B$9)

Verlet: Phase!M2 — αρχική συνεχής φάση, ΜΟΝΟ στη γραμμή 2

=L2

Verlet: Phase!M3 — συνέχεια, συμπλήρωση από γραμμή 3 ως M602

=M2+IF(L3-L2>PI();L3-L2-2*PI();IF(L3-L2<-PI();L3-L2+2*PI();L3-L2))

Verlet: Phase!N2 — προσημασμένη διαφορά, ως N602

=M2-$C2

Verlet: Phase!O2 — απόλυτη διαφορά, ως O602

=ABS(N2)

RK4: Phase!P2 — γωνία, συμπλήρωση ως P602

=ATAN2(Data!W2;-Data!X2/Params!$B$9)

RK4: Phase!Q2 — αρχική συνεχής φάση, ΜΟΝΟ στη γραμμή 2

=P2

RK4: Phase!Q3 — συνέχεια, συμπλήρωση από γραμμή 3 ως Q602

=Q2+IF(P3-P2>PI();P3-P2-2*PI();IF(P3-P2<-PI();P3-P2+2*PI();P3-P2))

RK4: Phase!R2 — προσημασμένη διαφορά, ως R602

=Q2-$C2

RK4: Phase!S2 — απόλυτη διαφορά, ως S602

=ABS(R2)

Τι κάνει ο τύπος unwrap; Αφαιρεί δύο διαδοχικές γωνίες. Αν η διαφορά είναι μεγαλύτερη από π, αφαιρεί 2π. Αν είναι μικρότερη από −π, προσθέτει 2π. Διαφορετικά κρατά τη διαφορά. Την προσθέτει στην προηγούμενη συνεχή φάση. Παράδειγμα: από θ=3,10 σε θ=−3,08 η ακατέργαστη διαφορά είναι −6,18 rad, ενώ η διορθωμένη είναι περίπου +0,10319 rad. Η φάση συνεχίζει να αυξάνεται αντί να κάνει τεχνητό άλμα.

Προσοχή

Αυτός ο unwrap προϋποθέτει πραγματική αλλαγή φάσης μικρότερη από π ανά δείγμα και μη μηδενικό διάνυσμα (x,−v/ω). Ισχύει στο συγκεκριμένο πλήρες πείραμα. Αν αραιώσεις υπερβολικά τη χρονοσειρά πριν τον υπολογισμό ή έχεις κενά μετά από διακοπή, δεν είναι ασφαλής. Χρησιμοποίησε όλα τα 601 δείγματα.

Τελική και μέγιστη φάση

ΜέθοδοςΔφ(60 s) — τύποςmax |Δφ| — τύποςΑναμενόμενη Δφ(60 s), rad
Euler
=Phase!F602
=MAX(Phase!G2:G602)
−0,1988085053
Symplectic
=Phase!J602
=MAX(Phase!K2:K602)
+0,0309113254
Verlet
=Phase!N602
=MAX(Phase!O2:O602)
+0,0246399832
RK4
=Phase!R602
=MAX(Phase!S2:S602)
−0,0000498215

Θετική Δφ σημαίνει προπορεία, αρνητική υστέρηση, με αυτή τη σύμβαση. Η μέγιστη απόλυτη απόκλιση δεν είναι πάντα το απόλυτο της τελικής: για Symplectic είναι περίπου 0,0741750 rad και για Verlet 0,0252189 rad. Σχεδίασε Δφ έναντι t για να δεις όλη τη διαδρομή. Η φάση δεν εξάγεται ως έτοιμη στήλη στο τρέχον CSV· την υπολογίζεις από x και v.

Πίσω στα περιεχόμενα ↑

14. Περίοδος από διελεύσεις της ισορροπίας

Ίδια φορά κίνησης, γραμμική παρεμβολή και σύγκριση με την ίδια δειγματοληπτημένη Exact.

Η περίοδος είναι ο χρόνος μεταξύ δύο διαδοχικών επαναλήψεων της ίδιας κατάστασης. Θα χρησιμοποιήσουμε διελεύσεις x=0 από αρνητική προς μη αρνητική θέση: xᵢ<0 και xᵢ₊₁≥0. Αν μετρούσαμε εναλλάξ κάθε μηδενισμό χωρίς φορά, θα βρίσκαμε περίπου μισή περίοδο. Επειδή τα δείγματα σπάνια πέφτουν ακριβώς στο μηδέν, παρεμβάλλουμε μια ευθεία ανάμεσα στα δύο γειτονικά σημεία.

Μαθηματική σχέση

t* = tᵢ − xᵢ (tᵢ₊₁−tᵢ)/(xᵢ₊₁−xᵢ)
Pⱼ = t*ⱼ₊₁ − t*ⱼ
Pmean = μέσος όρος των Pⱼ
ΔP = Pmean,Method − Pmean,Exact
ΔP(ms) = 1000 · ΔP(s)

Παράδειγμα παρεμβολής: αν στο t=4,7 έχουμε x=−0,02 και στο 4,8 έχουμε x=0,08, το μηδέν είναι στο 4,7−(−0,02)·0,1/0,10=4,72 s. Δεν παίρνουμε απλώς 4,8 s, γιατί θα εισαγάγαμε σφάλμα έως σχεδόν ένα χρονικό βήμα.

Δημιούργησε φύλλο Period. Στη γραμμή 1 γράψε A:Exact_crossing_s, B:Euler_crossing_s, C:Symplectic_crossing_s, D:Verlet_crossing_s, E:RK4_crossing_s. Οι ακόλουθοι τύποι στη γραμμή 2 εξετάζουν το ζεύγος γραμμών 2 και 3 του Data. Συμπλήρωσέ τους έως τη γραμμή 601, όχι 602: η τελευταία σύγκριση πρέπει να είναι Data 601 με 602.

Period!A2 — θετική διέλευση Exact, συμπλήρωση ως A601

=IF(AND(Data!C2<0;Data!C3>=0);Data!B2-Data!C2*(Data!B3-Data!B2)/(Data!C3-Data!C2);"")

Period!B2 — θετική διέλευση Euler, συμπλήρωση ως B601

=IF(AND(Data!H2<0;Data!H3>=0);Data!B2-Data!H2*(Data!B3-Data!B2)/(Data!H3-Data!H2);"")

Period!C2 — θετική διέλευση Symplectic, συμπλήρωση ως C601

=IF(AND(Data!M2<0;Data!M3>=0);Data!B2-Data!M2*(Data!B3-Data!B2)/(Data!M3-Data!M2);"")

Period!D2 — θετική διέλευση Verlet, συμπλήρωση ως D601

=IF(AND(Data!R2<0;Data!R3>=0);Data!B2-Data!R2*(Data!B3-Data!B2)/(Data!R3-Data!R2);"")

Period!E2 — θετική διέλευση RK4, συμπλήρωση ως E601

=IF(AND(Data!W2<0;Data!W3>=0);Data!B2-Data!W2*(Data!B3-Data!B2)/(Data!W3-Data!W2);"")

Κενό εδώ σημαίνει «δεν υπάρχει διέλευση σε αυτό το διάστημα», όχι μηδενικός χρόνος. Οι αριθμητικές τιμές είναι οι t*. Στο h=0,1 περιμένουμε 9 θετικές διελεύσεις για κάθε μέθοδο, δηλαδή 8 πλήρεις περιόδους ανάμεσα στην πρώτη και την τελευταία. Για Exact η πρώτη είναι περίπου 4,7124 s, όχι π/2: το π/2 είναι διέλευση με αντίθετη φορά.

Για να υπολογίσεις τις διαδοχικές περιόδους χωρίς χειροκίνητη επιλογή, βάλε G1:Ordinal και G2=1, G3=G2+1, συμπλήρωσε ως G10=9. Βάλε H1:Exact_times, I1:Euler_times, J1:Symplectic_times, K1:Verlet_times, L1:RK4_times.

Period!H2 — Exact: συμπαγής λίστα 9 διελεύσεων, ως H10

=IF($G2<=COUNT(A$2:A$601);SMALL(A$2:A$601;$G2);NA())

Period!I2 — Euler: συμπαγής λίστα 9 διελεύσεων, ως I10

=IF($G2<=COUNT(B$2:B$601);SMALL(B$2:B$601;$G2);NA())

Period!J2 — Symplectic: συμπαγής λίστα 9 διελεύσεων, ως J10

=IF($G2<=COUNT(C$2:C$601);SMALL(C$2:C$601;$G2);NA())

Period!K2 — Verlet: συμπαγής λίστα 9 διελεύσεων, ως K10

=IF($G2<=COUNT(D$2:D$601);SMALL(D$2:D$601;$G2);NA())

Period!L2 — RK4: συμπαγής λίστα 9 διελεύσεων, ως L10

=IF($G2<=COUNT(E$2:E$601);SMALL(E$2:E$601;$G2);NA())

Το SMALL(περιοχή;k) επιστρέφει τον k-οστό μικρότερο αριθμό και αγνοεί τα κενά κείμενα. Οι χρόνοι αυξάνονται, άρα φτιάχνει την ταξινομημένη λίστα διελεύσεων. Αν λείπει αναμενόμενη διέλευση, το #N/A μας προειδοποιεί αντί να εμφανιστεί ψευδές αποτέλεσμα.

Βάλε N1:Exact_periods, O1:Euler_periods, P1:Symplectic_periods, Q1:Verlet_periods, R1:RK4_periods. Γράψε N2=H3-H2, O2=I3-I2, P2=J3-J2, Q2=K3-K2, R2=L3-L2. Συμπλήρωσε N2:R9: αυτές είναι οι οκτώ περίοδοι. Στο N11 γράψε =AVERAGE(N2:N9) και αντίστοιχα O11 έως R11. Μην γεμίσεις έως γραμμή 10 γιατί δεν υπάρχει δέκατη διέλευση.

Σύγκριση περιόδων

ΚελίΥπολογισμόςΤιμή αναφοράς
N11
=AVERAGE(N2:N9)
Exact ≈ 6,28318160285 s
O12
=1000*(O11-$N$11)
Euler ≈ +20,8869008312 ms
P12
=1000*(P11-$N$11)
Symplectic ≈ −2,61422218822 ms
Q12
=1000*(Q11-$N$11)
Verlet ≈ −2,61819946368 ms
R12
=1000*(R11-$N$11)
RK4 ≈ +0,00521671427 ms

Προσοχή

Για να αναπαράγεις τους αριθμούς του paper, αφαίρεσε τη μέση περίοδο της Exact από τα ΙΔΙΑ δείγματα με την ΙΔΙΑ παρεμβολή (N11), όχι απευθείας 2π/ω. Η παρεμβολή της Exact δίνει 6,28318160285 s, λίγο διαφορετικό από το θεωρητικό 6,28318530718 s. Η διαφορά έχει σημασία ειδικά για τη μικρή απόκλιση της RK4.

Θετική ΔP σημαίνει μεγαλύτερη περίοδο (πιο αργή ολοκλήρωση κύκλου), αρνητική μικρότερη. Η περιορισμένη ενεργειακή απόκλιση δεν εγγυάται σωστή φάση ή περίοδο. Αν αλλάξεις διάρκεια/βήμα, επανυπολόγισε το πλήθος διελεύσεων και προσαρμόζεις τα όρια της λίστας και των μέσων όρων· οι γραμμές 10 και 9 εδώ προκύπτουν από το συγκεκριμένο h=0,1, T=60.

Πίσω στα περιεχόμενα ↑

15. Ξεχωριστό πείραμα ορίου σφάλματος

Πότε παραβιάζεται το |eₓ| > 0,15 m; Δεν το αναμειγνύουμε με τα πλήρη runs.

  1. Ξαναβάλε m=k=x₀=1, v₀=0, T=60 και h=0,1 στις Initial Conditions. Τώρα ενεργοποίησε Stop the method when error exceeds threshold και θέσε 0,15 m.
  2. Πάτησε Apply και αποθήκευσε ως dt0p1_threshold015. Διατήρησε το προηγούμενο dt0p1_full.
  3. Στο JSON έλεγξε stopWhenErrorExceedsThreshold:true. Στο summary έλεγξε ποια μέθοδος έχει σταματήσει και το StoppedAt_s.
  4. Στο raw αρχείο της ρητής Euler περίμενε τελευταίο καταγεγραμμένο δείγμα στο Step 30, t=3 s, |eₓ|≈0,1576727014 m. Οι άλλες μέθοδοι φτάνουν Step 600 και t=60 s.

Η διακοπή συμβαίνει στο πρώτο ΔΙΑΚΡΙΤΟ δείγμα που υπερβαίνει αυστηρά το όριο, όχι σε παρεμβαλλόμενο ενδιάμεσο χρόνο. Η γραμμή που το υπερβαίνει περιλαμβάνεται στα αποτελέσματα. Οι υπόλοιπες μέθοδοι συνεχίζουν. Στο κοινό timeseries οι στήλες Euler έχουν κενά μετά τη διακοπή· αυτά δεν είναι μηδενικές θέσεις ή μηδενικά σφάλματα.

Φτιάξε ξεχωριστό βιβλίο Threshold.xlsx και εισήγαγε το timeseries του πειράματος ως Data. Στο AB1 βάλε Euler_exceeds. Στο AB2 γράψε τον επόμενο τύπο και συμπλήρωσε ως AB602. Το COUNT επιτρέπει να μείνουν κενές οι ανύπαρκτες εγγραφές μετά τη διακοπή.

Data!AB2 — 1 μόνο όταν υπάρχει αριθμητικό σφάλμα πάνω από 0,15

=IF(ISNUMBER(K2);IF(K2>0,15;1;0);"")

Προσοχή

Στον συγκεκριμένο τύπο το 0,15 είναι δεκαδικός αριθμός. Σε Excel με δεκαδική τελεία γράψε 0.15 και, αν χρειάζεται, κόμματα μεταξύ ορισμάτων. Σε αυτό το ξεχωριστό βιβλίο το όριο δίνεται ρητά στον τίτλο του πειράματος· μπορείς εναλλακτικά να το βάλεις σε σταθερό κελί παραμέτρων.

Πρώτος χρόνος υπέρβασης, σε άδειο κελί

=IF(COUNTIFS(Data!AB2:AB602;1)=0;"No crossing";INDEX(Data!B2:B602;MATCH(1;Data!AB2:AB602;0)))

Το MATCH βρίσκει τη θέση του πρώτου 1 μέσα στην περιοχή, με ακριβή αντιστοίχιση (τελευταίο όρισμα 0). Το INDEX επιστρέφει τον χρόνο στην ίδια σχετική θέση της στήλης B. Για άλλες μεθόδους χρησιμοποίησε αντί K τη P, U ή Z σε ξεχωριστή βοηθητική στήλη. Το No crossing σημαίνει ότι δεν παρατηρήθηκε υπέρβαση στο εξεταζόμενο διάστημα, όχι ότι αποκλείεται σε οποιονδήποτε μελλοντικό χρόνο.

Προσοχή

Δεν συγκρίνουμε μέγιστο σφάλμα Euler από 0–3 s με μέγιστο άλλης μεθόδου από 0–60 s ως ισότιμη σύγκριση ακρίβειας. Οι κύριοι πίνακες του paper χρησιμοποιούν τα runs stop OFF. Μετά τη δοκιμή απενεργοποίησε ξανά το stop αν επιστρέψεις στην κύρια μελέτη.

Πίσω στα περιεχόμενα ↑

16. Γραφήματα που στηρίζουν συμπεράσματα

Χρησιμοποιούμε διαγράμματα διασποράς XY με σωστά αριθμητικά ζεύγη και μονάδες.

  1. Στο Excel επίλεξε Εισαγωγή → Διασπορά (XY), κατά προτίμηση σημεία με λεπτές ευθείες γραμμές. Μην χρησιμοποιείς απλό Line chart που αντιμετωπίζει τα χρονικά βήματα ως ισαπέχουσες κατηγορίες.
  2. Δεξί κλικ → Επιλογή δεδομένων / Select Data → Προσθήκη / Add. Για κάθε μέθοδο δώσε όνομα σειράς και τις παρακάτω περιοχές X και Y, χωρίς τη γραμμή επικεφαλίδων.
  3. Πρόσθεσε τίτλους αξόνων με μονάδες, υπόμνημα μεθόδων και λεζάντα με m, k, x₀, v₀, h, T και stop ON/OFF. Έλεγξε ότι δεν αναμειγνύεις διαφορετικά runs.

Συγκεκριμένα παραδείγματα περιοχών

ΓράφημαX valuesY values / σειρές
Θέση x(t), h=0,1Data!$B$2:$B$602Exact C2:C602, Euler H, Symplectic M, Verlet R, RK4 W
Σφάλμα |eₓ|(t)Data!$B$2:$B$602Euler AB, Symplectic AG, Verlet AL, RK4 AQ, γραμμές 2:602
Προσημασμένη ΔE(t), %Data!$B$2:$B$602Euler AE, Symplectic AJ, Verlet AO, RK4 AT, 2:602
Χώρος φάσεων x–vData: θέση μεθόδουΊδια μέθοδος: ταχύτητα. Π.χ. Verlet R2:R602 έναντι S2:S602
Απόκλιση φάσης Δφ(t)Phase!$A$2:$A$602Phase F, J, N, R για τις 4 μεθόδους
MaxError έναντι hStudy B2:B7 για EulerStudy D2:D7· αντίστοιχα 8:13, 14:19, 20:25 για τις άλλες
MaxError έναντι CₐStudy H2:H7 για EulerStudy D2:D7, και αντίστοιχες περιοχές άλλων μεθόδων
RMSE ή ενεργειακή απόκλιση έναντι hStudy B στις ίδιες 6 γραμμέςStudy E ή F αντί D

Για error–h και error–cost μπορείς να κάνεις και τους δύο άξονες λογαριθμικούς: δεξί κλικ στον άξονα → Μορφοποίηση άξονα → Logarithmic scale, βάση 10. Δεν εφαρμόζουμε log σε μηδέν ή αρνητικό αριθμό. Η Exact έχει μηδενικό σφάλμα και δεν αποτελεί κανονικό σημείο σε τέτοιο γράφημα. Για προσημασμένη ενέργεια και φάση κράτησε γραμμικό κατακόρυφο άξονα.

Μόνο για βοηθητική στήλη λογαριθμικού γραφήματος — όχι για μετρικές

=IF(AB2>0;AB2;NA())

Το #N/A εδώ αποκρύπτει μη επιτρεπτό σημείο σε log άξονα. Κράτησε τα πραγματικά μηδενικά στις αρχικές μετρήσεις. Αν χρησιμοποιείς LOG10 σε βοηθητικές στήλες, ΜΗΝ ενεργοποιήσεις ξανά log scale: διαφορετικά κάνεις διπλό λογάριθμο. Για χρονοσειρές 600000 βημάτων μπορείς να σχεδιάσεις λιγότερα σημεία για εμφάνιση, αλλά τα max, RMSE, φάση και περίοδος πρέπει να υπολογιστούν από την πλήρη χρονοσειρά.

Για x–v, η θεωρητική τροχιά ικανοποιεί kx²+mv²=2E₀ και είναι έλλειψη. Με m=k=1 και ίση κλίμακα αξόνων φαίνεται κύκλος. Σπειροειδής επέκταση σημαίνει αύξηση ενέργειας. Ακόμη και μια σχεδόν κλειστή καμπύλη δεν αποδεικνύει σωστή φάση: χρειάζεσαι και το γράφημα Δφ(t). Αν επικαλύπτονται μέθοδοι, χρησιμοποίησε Analysis Settings ή χωριστά γραφήματα με δηλωμένες κλίμακες, χωρίς να αποκρύπτεις ανεπιθύμητα αποτελέσματα.

Πίσω στα περιεχόμενα ↑

17. Προαιρετική χρονομέτρηση και περιορισμοί

Το Cₐ του paper και τα milliseconds του Performance Study είναι διαφορετικά μεγέθη.

Η κύρια αποτίμηση έργου του paper είναι Cₐ=N·sₘ. Δεν χρειάζεται χρονόμετρο. Για μια πρόσθετη μελέτη πραγματικού χρόνου άνοιξε Performance Study και διάλεξε Cost metric: Median kernel time, Median full-run time ή Acceleration evaluations. Το kernel αφορά τον βρόχο αριθμητικής μεθόδου. Το full-run περιλαμβάνει και τη δημιουργία αποτελεσμάτων/μετρικών. Η σχεδίαση των γραφημάτων και η αναπαραγωγή δεν χρονομετρούνται σε αυτά τα δύο επίπεδα.

  1. Σημείωσε υπολογιστή, CPU, λειτουργικό, browser ή standalone, έκδοση εφαρμογής, T και φυσικές παραμέτρους. Χρησιμοποίησε το ίδιο περιβάλλον για όλους τους συγκρινόμενους χρόνους.
  2. Επίλεξε Study quality. Quick: 1 warm-up + 5 measured runs. Research: 5 warm-ups + 25 measured runs. Το warm-up προθερμαίνει την εκτέλεση και δεν μπαίνει στη διάμεσο.
  3. Πάτησε Run Performance Study και περίμενε Completed. Επίλεξε το επιθυμητό σφάλμα στο Error metric. Κατέγραψε τη διάμεσο από τις ενδείξεις/στοιχεία του αποτελέσματος, μαζί με μονάδες και ποιότητα μέτρησης. Μην υποθέτεις ότι τα timings περιλαμβάνονται στο συνηθισμένο Save Data CSV.
  4. Μην χρονομετράς με το χέρι το Play ή το Apply και μην ερμηνεύεις τα 60 s προσομοίωσης ως κόστος. Επανάλαβε την ίδια μελέτη αν θέλεις να εξετάσεις τη μεταβλητότητα και γράψε ποιο σύνολο επαναλήψεων χρησιμοποίησες.

Προσοχή

Το τρέχον αυτόματο sweep του Performance Study χρησιμοποιεί 0,1, 0,05, 0,02, 0,01, 0,005, 0,001 s και μπορεί να προσθέτει το ενεργό Δt εφόσον χωρά στο όριο. Δεν είναι η εξαπλή λίστα του paper. Το όριο είναι 100000 βήματα/run στο Quick και 200000 στο Research: το h=0,0001 με T=60 έχει 600000 και παραλείπεται. Μην μικρύνεις το T για να χωρέσει και μετά το συγκρίνεις ως ίδιο πείραμα 60 s. Για τον κύριο πίνακα ακολουθείς τα έξι χειροκίνητα runs και το Cₐ.

Στα παλαιότερα συνοδευτικά φύλλα υπάρχει και εξωτερικό benchmark της αριθμητικής μηχανής: για h=0,1, 20 προθερμάνσεις, 7 παρτίδες των 1000 εκτελέσεων, διάμεσος του χρόνου ανά run των επτά παρτίδων. Δεν είναι το ίδιο πρωτόκολλο με Quick/Research και δεν αναπαράγεται απλώς πατώντας αυτό το κουμπί. Κράτησε τέτοιους χρόνους σε ξεχωριστό πίνακα με σαφή προέλευση, όχι ως δήθεν δικές σου μετρήσεις.

Μαθηματική σχέση

Χρόνος ανά βήμα (ns) = χρόνος/run (ms) × 10⁶ / N
Αν ο χρόνος/run δίνεται σε μs: ns/βήμα = μs × 1000 / N
Σχετικός χρόνος μεθόδου = χρόνος μεθόδου / χρόνος Euler

Αν καταγράψεις σε νέο φύλλο Timing A:Method, B:median_kernel_ms, C:N, D:ns_per_step, E:relative_time, με Euler στη γραμμή 2, βάλε D2=B2*1000000/C2 και E2=B2/$B$2 και συμπλήρωσε προς τα κάτω. Για ανεξάρτητα καταγεγραμμένους πέντε χρόνους στα G2:K2, η διάμεσος είναι =MEDIAN(G2:K2). Μην γράφεις πέντε ίδιους αριθμούς αντιγράφοντας μία μόνο διάμεσο: αυτό δεν είναι πέντε μετρήσεις.

Η διάμεσος είναι η μεσαία τιμή μετά την ταξινόμηση και περιορίζει την επίδραση μιας τυχαίας καθυστέρησης. Η ακρίβεια των χρονόμετρων, ο φόρτος του υπολογιστή, η μεταγλώττιση και ο browser επηρεάζουν τα timings. Μικρές διαφορές κοντά στη διακριτική ικανότητα του χρονόμετρου δεν στηρίζουν κατάταξη ταχύτητας. Επίσης Cₐ διπλάσιο δεν σημαίνει υποχρεωτικά διπλάσια milliseconds.

Πίσω στα περιεχόμενα ↑

18. Ακρίβεια, στρογγυλοποίηση και συνηθισμένα λάθη

Αναγνωρίζουμε πότε ένα μικρό νούμερο δεν είναι πλέον αξιόπιστη μέτρηση σύγκλισης.

Σύμπτωμα → έλεγχος

Τι βλέπωΠιθανή αιτίαΤι κάνω
Όλα στη στήλη ΑΛάθος delimiterΕισαγωγή Data → From Text/CSV, έλεγχος ; ή ,
COUNT πολύ μικρό, #VALUE! ή #N/AΑριθμοί ως κείμενο, λάθος locale ή κενάΈλεγχος ISNUMBER, επανεισαγωγή από το αρχικό CSV
Euler τελειώνει στα 3 sΕνεργή διακοπή στο κύριο πείραμαΝέο run stop OFF, όχι συμπλήρωση κενών με μηδενικά
RMSE δεν συμφωνείΠαραλείφθηκε t=0 ή λάθος τελευταία γραμμήΓια h=0,1 χρησιμοποίησε 2:602, 601 δείγματα
Ενέργεια 100 φορές μεγαλύτερη στην εμφάνισηΤύπος ήδη επί 100 και μορφή PercentageΧρησιμοποίησε Number/Scientific με % μόνο στην επικεφαλίδα
p λάθος στα δύο τελευταία ζεύγη hΧρήση LN(2) παντούΔιαίρεσε με LN(h₁/h₂)
Φάση κάνει άλματα περίπου 6,28 radΧωρίς unwrap ή λάθος αρχική γραμμήΑρχικοποίηση μόνο στη γραμμή 2, αναδρομικός τύπος από 3
Περίοδος περίπου 3,14 sΑνάμειξη αντίθετων διελεύσεωνΜόνο xᵢ<0≤xᵢ₊₁
Μικρή διαφορά RK4 στην περίοδοΑφαίρεση θεωρητικού 2π αντί sampled ExactΣύγκρινε με Period!N11
Γραφική απεικόνιση 0,0000Λίγα δεκαδικά εμφάνισης ή εξαγωγήςScientific και έλεγχος CSV precision=15

Διακρίνουμε τρία επίπεδα: (1) σφάλμα αριθμητικής μεθόδου λόγω πεπερασμένου h, (2) στρογγυλοποίηση πράξεων κινητής υποδιαστολής, (3) στρογγυλοποίηση εξαγωγής και εμφάνισης. Η αύξηση Numeric precision δεν κάνει καλύτερο τον αλγόριθμο· απλώς διατηρεί περισσότερες πληροφορίες στο CSV.

Το Excel διατηρεί περίπου 15 σημαντικά ψηφία αριθμών. Η ρύθμιση export 15 σημαίνει 15 ψηφία ΜΕΤΑ το δεκαδικό σύμβολο. Αυτά δεν είναι το ίδιο. Για x≈1 και διαφορά τάξης 10⁻¹⁴, η αφαίρεση δύο σχεδόν ίδιων στρογγυλοποιημένων θέσεων μπορεί να χάσει σημαντικό ποσοστό του σφάλματος. Τα PositionError_m και τα summary υπολογίζονται στον πυρήνα πριν μορφοποιηθούν οι θέσεις και είναι προτιμότερα για τον συγκεντρωτικό πίνακα των πυκνών σειρών.

Ακόμη και με 15 δεκαδικά, ένα πολύ μικρό σφάλμα περίπου 3,5×10⁻¹⁴ m εξάγεται με λίγα μόνο σημαντικά ψηφία. Μην απαιτείς ακριβή αναπαραγωγή των τελευταίων ψηφίων της επαληθευμένης διπλής ακρίβειας σειράς του paper από το Excel. Κατέγραψε το όριο ακρίβειας. Μηδενικό εξαγόμενο σφάλμα δεν σημαίνει μαθηματικά ακριβή μέθοδο και δεν επιτρέπεται να διαιρεθεί ή να λογαριθμηθεί σαν θετικός αριθμός.

Προσοχή

Μην ενεργοποιήσεις στο Excel «Set precision as displayed / Ακρίβεια όπως εμφανίζεται». Η επιλογή μεταβάλλει τις αποθηκευμένες τιμές σύμφωνα με την εμφάνιση. Μια στρογγυλοποιημένη εικόνα δεν πρέπει να γίνει το νέο πρωτογενές δεδομένο.

Πίσω στα περιεχόμενα ↑

19. Τι παραδίδει κάθε ομάδα

Ένα ελέγξιμο πείραμα, όχι μόνο όμορφες καμπύλες.

  1. Φάκελο με τα αρχικά CSV/JSON και ένα σύντομο ημερολόγιο run: ομάδα, ημερομηνία, έκδοση, παράμετροι, Δt, T, stop, precision και locale.
  2. Το Lab_dt0p1.xlsx με Data, Params, Metrics, Phase και Period, τους τύπους ορατούς και τις πρωτογενείς στήλες ανέπαφες.
  3. Το Study.xlsx με τις 24 συγκεντρωτικές γραμμές και τους τύπους Cₐ, παράγοντα μείωσης και p. Αν μία ομάδα δεν έκανε όλες τις σειρές, δήλωσε την ομάδα προέλευσης κάθε εισαγόμενου run.
  4. Ξεχωριστό Threshold.xlsx/φάκελο με τη δοκιμή ορίου 0,15 m και τον πρώτο χρόνο υπέρβασης.
  5. Γραφήματα: max error–h, max energy–h, error–Cₐ, προσημασμένη ενέργεια–t, φάση–t και x–v. Για το h=0,1 πρόσθεσε πίνακα RMSE, ΔP και τελικής/max φάσης.
  6. Σύντομη αναφορά: ερώτημα, πρωτόκολλο, αποτελέσματα με μονάδες, συγκρίσεις με λόγους, ερμηνεία και περιορισμοί. Αν μετρήθηκαν χρόνοι, ξεχωριστό τμήμα με περιβάλλον και επαναλήψεις.

Πριν παραδώσεις, απάντησε: γιατί το h=0,1 έχει 601 δείγματα και 600 βήματα; Γιατί δεν αρκεί η τελική τιμή σφάλματος; Γιατί δεν αφαιρούμε πάντοτε την ακριβή θεωρητική περίοδο 2π στον πίνακα του paper; Γιατί η RK4 μπορεί να έχει μεγαλύτερο έργο ανά βήμα αλλά μικρότερο συνολικό έργο για έναν δεδομένο στόχο σφάλματος; Γιατί τα 600000 βήματα δεν είναι 600000 frames;

Παράδειγμα τεκμηριωμένου συμπεράσματος: «Για το ιδανικό σύστημα m=k=x₀=1, v₀=0, h=0,1 και T=60, η RK4 έδωσε περίπου 500 φορές μικρότερο μέγιστο σφάλμα θέσης από τη Verlet με διπλάσιο Cₐ. Αυτό αφορά το συγκεκριμένο σύστημα, διάστημα και υλοποίηση· δεν αποτελεί μέτρηση ότι είναι ταχύτερη σε κάθε υπολογιστή». Πρόσθεσε τις δικές σου πραγματικές τιμές, όχι απλώς αυτή τη φράση.

Πίσω στα περιεχόμενα ↑

20. Πηγές, αντιστοίχιση με το paper και γλωσσάρι

Τι αναπαράγει ο οδηγός και πού βασίζονται οι τεχνικές οδηγίες.

Οδηγός έκδοσης 2026-09-15. Το πρωτόκολλο ελέγχθηκε ως προς το πειραματικό μέρος της εργασίας «Όταν τα Μαθηματικά προβλέπουν την κίνηση: Προσομοιώνοντας πραγματικά συστήματα στον υπολογιστή», την επαληθευμένη εξαπλή σειρά του αριθμητικού πυρήνα και τους υπολογισμούς φάσης/περιόδου για h=0,1. Οι πίνακες ελέγχου είναι στρογγυλοποιημένες τιμές αναφοράς, όχι υποκατάστατο συλλογής δεδομένων.

Αντιστοίχιση

Υπολογισμός του paperΚεφάλαιο οδηγού
Έξι h, κοινές συνθήκες, stop OFF03–05
Εισαγωγή και έλεγχος CSV στο Excel06–08
max |eₓ|, RMSE, max |ΔE|09–10
Παράγοντες μείωσης, p και Cₐ11–12
Λόγοι σύγκρισης μεθόδων12
Δφ(60 s), max |Δφ|, unwrap13
Μέση περίοδος, παρεμβολή, ΔP14
Πρώτη υπέρβαση 0,15 m15
Γραφήματα και όρια ακρίβειας16–18

Μικρό γλωσσάρι

ΌροςΕξήγηση
RunΈνας υπολογισμός με συγκεκριμένες ρυθμίσεις
Χρονοσειρά / time seriesΔεδομένα ταξινομημένα ανά χρονική στιγμή
SampleΜία εγγραφή κατάστασης σε έναν χρόνο
StepΜία μετάβαση από δείγμα στο επόμενο
RMSEΤετραγωνική ρίζα του μέσου τετραγωνικού σφάλματος
DriftΣυστηματική μετατόπιση/αύξηση απόκλισης με τον χρόνο
UnwrapΑφαίρεση τεχνητών αλμάτων ±2π από γωνίες
InterpolationΕκτίμηση ενδιάμεσης τιμής από γειτονικά δείγματα
MedianΔιάμεσος επαναλαμβανόμενων μετρήσεων
LocaleΣύμβαση γλώσσας/περιοχής για αριθμούς και ημερομηνίες
Πίσω στα περιεχόμενα ↑