ΕΦΑΡΜΟΓΈΣ ΠΟΛΥΜΈΣΩΝ ΕΠΙΣΤΉΜΗ ΤΜΉΜΑ ΕΦΑΡΜΟΣΜΈΝΗΣ ΠΛΗΡΟΦΟΡΙΚΉΣ ΠΟΛΥΜΈΣΩΝ ΤΕΙ ΚΡΉΤΗΣ ΣΤΑΥΡΩΜΈΝΟΣ ΗΡΆΚΛΕΙΟ ΚΡΉΤΗΣ ΙΩΑΝΝΗΣ ΠΑΧΟΥΛΑΚΗΣ, PH.D.

Σχετικά έγγραφα
5 Το μοντέλο μάζας ελατηρίου με τριβή και εξωτερική δύναμη

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

Δημιουργία μιας εφαρμογής Java με το NetBeans

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Κατασκευή µοντέλου και προσοµοίωσης: Μελέτη ελεύθερης πτώσης

Οδηγίες Εγκατάστασης της εφαρμογής Readium και Readium για μαθητές με αμβλυωπία για την ανάγνωση βιβλίων epub σε Υπολογιστή.

Hase οδηγίες χρήσης.

Εισαγωγή στο περιβάλλον Code::Blocks

Hase οδηγίες χρήσης.

ΛΟΓΙΣΜΙΚΟ ΠΡΟΣΟΜΟΙΩΣΗΣ ANYLOGIC

Οδηγίες εγκατάστασης και χρήσης Java σε προσωπικό υπολογιστή

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Vodafone Business Connect

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Εισαγωγή στην Αριθμητική Ανάλυση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

Αντικειμενοστρεφής Προγραμματισμός

Προσομείωση ασύρματων δικτύων με τη χρήση του OPNET Modeler

ΠΕΡΙΟΧΗ ΚΙΝΗΣΗΣ ΤΟΥ ΣΩΜΑΤΟΣ

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run

Ελέγξτε την ταινία σας

BHMATA ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ ΣΤΟ 3S/I.T.P.

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

ΣΚΟΠΟΙ ΒΗΜΑ 1 Ο. Θα εμφανιστεί το λογότυπο του προγράμματος.. ..και μετά από λίγο ένα παράθυρο με τίτλο Προβολές CMap Tools. [1]

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

Hase οδηγίες χρήσης.

A3.3 Γραφικά Περιβάλλοντα Επικοινωνίας και Διαχείριση Παραθύρων

Αναπαραγωγή με αρχεία ήχου

2 ο Εργαστήριο Αλληλεπίδραση και Animation

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Στο παράθυρο που θα εµφανιστεί πατήστε το κουµπί Unzip.

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

1. Βασικές Λειτουργίες των Windows

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

Stellarium Εγχειρίδιο Οδηγιών

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

SPSS Statistical Package for the Social Sciences

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Computing and Information Systems Service. ιαχείριση Αρχείων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

Προγραμματισμός. Το περιβάλλον του scratch

Ιπτάμενες Μηχανές. Οδηγός για το Μαθητή

ΕΓΧΕΙΡΙ ΙΟ ΡΥΘΜΙΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΒΑΣΗ ΣΕ ΗΛΕΚΤΡΟΝΙΚΟΥΣ ΠΟΡΟΥΣ ΙΚΤΥΟ ΒΙΒΛΙΟΘΗΚΩΝ ΤΟΥ ΙΝΣΤΙΤΟΥΤΟΥ ΘΕΡΒΑΝΤΕΣ

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

Τώρα ήρθε η ώρα για να αποκτήσετε το βασικό εργαλείο ανάπτυξης web εφαρμογών το GGTS.

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

Γρήγορη Εκκίνηση. Όταν ξεκινήσετε το GeoGebra, εμφανίζεται το παρακάτω παράθυρο:

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

Ο Οδηγός γρήγορης εκκίνησης

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

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

Σχετική κίνηση αντικειμένων

Ενημερώσεις λογισμικού Οδηγός χρήσης

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου.

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Κοινή χρήση πόρων με τα Windows XP

1. Ανοίξτε το 3D Studio MAX, ή αν είναι ήδη ανοιχτό, επιλέξτε File Reset.

Ενημερώσεις λογισμικού Οδηγός χρήσης

Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0

Σύντοµος Οδηγός Βοήθειας για τη Χρήση των Μαθηµάτων e-learning για το ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ GPRS 1. ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ GOOGLE EARTH

ΟΔΗΓΙΕΣ ΣΥΝΔΕΣΗΣ ΣΤΟ ΔΙΚΤΥΟ ΤΟΥ ΟΠΑ ΑΠΟ ΕΞΩΤΕΡΙΚΟ ΠΑΡΟΧΟ (ΥΠΗΡΕΣΙΑ VPN) Windows 8, Windows 7, Windows Vista, Windows XP

Τα Windows Πολύ Απλά και Πολύ Σύντομα

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ModellingSpace. Εγχειρίδιο Χρήστη

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

αντίστοιχο γεγονός. Όταν όντως το κουμπί

6 Εισαγωγή στο Wordpress 3.x

Μελέτη και έλεγχος της διατήρησης της μηχανικής ενέργειας στην ελεύθερη πτώση σώματος. (Ανάλυση video μέσω του Σ.Σ.Λ.Α, LoggerPro της Vernier)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Windows XP Κεφάλαιο 2: Επιφάνεια εργασίας (desktop)... 15

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

ΑΠΛΗ ΑΡΜΟΝΙΚΗ ΤΑΛΑΝΤΩΣΗ ΜΕ ΤΗ ΧΡΗΣΗ ΤΟΥ MULTILOG

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Τυπικές χρήσεις της Matlab

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Οδηγός γρήγορης εκκίνησης

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

Τροποποίηση συνδυασμών κίνησης

Windows 7 Windows Vista

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

ANDROID Προγραμματισμός Εφαρμογών

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Σενάριο 18: Ραβδογράμματα Πληθυσμού

Δημοσίευση στο Διαδίκτυο

Transcript:

ΕΦΑΡΜΟΓΈΣ ΠΟΛΥΜΈΣΩΝ ΣΤΗΝ ΕΠΙΣΤΉΜΗ ΙΩΑΝΝΗΣ ΠΑΧΟΥΛΑΚΗΣ, PH.D. ΤΜΉΜΑ ΕΦΑΡΜΟΣΜΈΝΗΣ ΠΛΗΡΟΦΟΡΙΚΉΣ ΚΑΙ ΠΟΛΥΜΈΣΩΝ ΤΕΙ ΚΡΉΤΗΣ ΣΤΑΥΡΩΜΈΝΟΣ 71410 ΗΡΆΚΛΕΙΟ ΚΡΉΤΗΣ ΦΕΒΡΟΥΆΡΙΟΣ 2017

ΕΦΑΡΜΟΓΈΣ ΠΟΛΥΜΈΣΩΝ ΣΤΗΝ ΕΠΙΣΤΉΜΗ Σελ. 2 Πίνακας Περιεχομένων 1 Εισαγωγή... 4 2 Εγκατάσταση και Τρέξιμο του EJS... 6 2.1 Εγκατάσταση... 6 2.2 Τρέξιμο του EJS... 6 3 Το μοντέλο μάζας - ελατηρίου... 12 3.1 Το workpanel Εισαγωγή... 12 3.2 Το workpanel Μοντέλο... 13 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 Δήλωση μεταβλητών... 14 Αρχικοποίηση του Μοντέλου... 15 Η εξέλιξη του μοντέλου... 15 Περιορισμοί μεταξύ των μεταβλητών... 17 Προσαρμογή (Custom pages)... 18 3.3 Το workpanel Θέαση...19 3.4 Συνολικά: η ολοκληρωμένη προσομοίωση... 22 3.5 Τρέξιμο της προσομοίωσης... 30 4 Διανομή Προσομοιώσεων... 31 4.1 Διανομή προσομοιώσεων σε πακέτο... 32 4.2 Διανομή προσομοιώσεων στο διαδίκτυο... 34 5 Το μοντέλο μάζας ελατηρίου με τριβή και εξωτερική δύναμη...37 5.1 Επέκταση του μοντέλου...37 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 Προσθήκη μεταβλητών... 37 Τροποποίηση της χρονικής εξέλιξης του μοντέλου... 38 Προσθήκη της μεθόδου για την εξωτερική δύναμη... 39 Βελτίωση της απεικόνισης του μοντέλου... 39 Τροποποίηση της περιγραφής... 42 6 Το σύστημα μάζας ελατηρίου ως αρμονικός ταλαντωτής... 43 7 Ο δισδιάστατος αρμονικός ταλαντωτής...44 7.1 Τα πάνελ της προσομοίωσης... 45 7.2 Τρέξιμο της προσομοίωσης... 60 8 Το απλό εκκρεμές... 61 8.1 Τα πάνελ της προσομοίωσης... 62 8.2 Τρέξιμο της προσομοίωσης... 72 9 Περιορισμένη κίνηση Μάζας-Ελατηρίου... 73 9.1 Τα πάνελ της προσομοίωσης... 74 9.2 Τρέξιμο της προσομοίωσης... 87 10 Κίνηση καροτσιού σε επικλινές επίπεδο... 89 10.1 Τα πάνελ της προσομοίωσης... 91

ΕΦΑΡΜΟΓΈΣ ΠΟΛΥΜΈΣΩΝ ΣΤΗΝ ΕΠΙΣΤΉΜΗ Σελ. 3 10.2 Τρέξιμο της προσομοίωσης... 99

1 Εισαγωγή Το μάθημα καλύπτει τη μελέτη και μοντελοποίηση φυσικών συστημάτων και τη χρήση αυτών των μοντέλων για να δείξουμε μια ευρεία γκάμα απλών και σύνθετων φαινομένων. Για το λόγο αυτό χρησιμοποιούμε προσομοιώσεις, δηλαδή πρώτα περιγράφουμε τους νόμους που διέπουν το φυσικό σύστημα που θέλομε να μελετήσουμε και στη συνέχεια χρησιμοποιούμε τον υπολογιστή (α) για να παράγουμε αριθμητικά δεδομένα που περιγράφουν τον τρόπο που αυτό εξελίσσεται στο χρόνο και (β) να τα δείξουμε με τρόπο κατανοητό. Η μοντελοποίηση στον υπολογιστή είναι στενά δεμένη με την προσομοίωση. Μοντέλο είναι η εννοιολογική απεικόνιση ενός φυσικού συστήματος και των ιδιοτήτων του. Μοντελοποίηση είναι η διαδικασία με την οποία κατασκευάζουμε αυτήν την απεικόνιση. Η μοντελοποίηση απαιτεί: 1. Την περιγραφή και ανάλυση του προβλήματος. 2. Τον προσδιορισμό των μεταβλητών που το χαρακτηρίζουν και των αλγορίθμων που προδιαγράφουν την εξέλιξή του. 3. Την υλοποίηση των παραπάνω σε μια εφαρμογή σε συγκεκριμένη πλατφόρμα υλικού/λογισμικού. 4. Την εκτέλεση της εφαρμογής και την ανάλυση των αποτελεσμάτων. 5. Τη βελτίωση και γενίκευση, και τέλος, 6. Την παρουσίαση των αποτελεσμάτων. Προσομοίωση είναι η υλοποίηση ενός μοντέλου προγραμματιστικά και το τρέξιμό του με διαφορετικές αρχικές συνθήκες με στόχο την εκμάθηση για τη συμπεριφορά του. Η δυνατότητα εφαρμογής των αποτελεσμάτων της προσομοίωσης σε πραγματικά (φυσικά) συστήματα εξαρτάται από το βαθμό που το μοντέλο αναπαριστά την πραγματικότητα. Η υλοποίηση ενός μοντέλου και η απεικόνιση των αποτελεσμάτων απαιτούν τον προγραμματισμό ενός Η/Υ, μια διαδικασία που συνήθως φοβίζει τον άπειρο, αλλά διασκεδάζει τον πιο έμπειρο, αφού μας δίνει τον πλήρη έλεγχο κάθε οπτικής και αριθμητικής λεπτομέρειας του μιμούμενου κόσμου. Η αρχική φοβία μπορεί εύκολα να ξεπεραστεί με τη χρήση κατάλληλων εργαλείων. Το εργαλείο προσομοίωσης που θα χρησιμοποιήσουμε είναι το Easy Java Simulations (EJS), το οποίο μας επιτρέπει να δουλέψουμε σε υψηλό, εννοιολογικά, επίπεδο, ώστε από τη μια να συγκεντρώσουμε το μεγαλύτερο μέρος του χρόνου μας στις επιστημονικές πτυχές της προσομοίωσής μας, και από την άλλη να αφήσομε τον υπολογιστή να εκτελέσει αυτόματα όλους τους απαραίτητους υπολογισμούς. Φυσικά, κάθε εργαλείο συμπεριλαμβανομένου του EJS έχει μια καμπύλη εκμάθησης. Το πρώτο μέρος των σημειώσεων περιέχει μια σειρά λεπτομερών παραδειγμάτων με σκοπό την εξοικείωση με τις δυνατότητες μοντελοποίησης του EJS και με τα στοιχεία διεπαφής που χρησιμοποιούμε συχνότερα. Στη συνέχεια θα δούμε πιο προχωρημένα παραδείγματα και θα υπογραμμίσομε το επιστημονικό περιεχόμενο των μοντέλων και της συμπεριφοράς τους. Το Easy Java Simulations (EJS) μας προσφέρει: Ένα authoring tool για τη που απλοποιεί τη διαδικασία της δημιουργίας προσομοιώσεων τόσο από την τεχνική όσο και από την εννοιολογική πλευρά. -4-

Μια απλή αλλά ισχυρή εννοιολογική δομή για το χτίσιμο προσομοιώσεων προσφέροντας μια σειρά από workpanels για την υλοποίηση του μοντέλου και της διεπαφής του. Αυτοματοποίηση διεργασιών όπως: o Η αριθμητική επίλυση συνήθων διαφορικών εξισώσεων (Ordinary Differential Equations ODEs), o Η διαχείριση γεγονότων (event handling) για την αλληλεπίδραση με το χρήστη, o Το animation, με χρήση των δυνατοτήτων multithreading της Java. o Η επικοινωνία χαμηλού επιπέδου μεταξύ εφαρμογής και χρήστη (π.χ., mouse events) κατά τη διάρκεια της εκτέλεσης (runtime), η οποία δεν απαιτεί χαμηλού επιπέδου προγραμματισμό. Προφανώς, το ουσιαστικότερο τμήμα της υλοποίησης ενός μοντέλου εξαρτάται ακόμα από μας. Για παράδειγμα, ο χρήστης είναι ο καθ όλα αρμόδιος για την παροχή του μοντέλου καθώς και για το σχεδιασμό και την επιλογή μιας διεπαφής που παρουσιάζει τα κυριότερα χαρακτηριστικά γνωρίσματά του. Όμως, αυτοί οι υψηλού επιπέδου στόχοι σχετίζονται περισσότερο με την επιστήμη απ' ότι με τον προγραμματισμό. Με αυτό τον τρόπο, το EJS μας ενθαρρύνει να αφιερώσομε τον χρόνο και την ενέργειά μας στη μελέτη του επιστημονικού κομματικού, κάτι που ο υπολογιστής αδυνατεί να κάνει. Στις επόμενες ενότητες θα δείτε και οι ίδιοι πόσο εύκολη είναι η δημιουργία μιας προσομοίωσης με τη βοήθεια του EJS. -5-

2 Εγκατάσταση και Τρέξιμο του EJS 2.1 Εγκατάσταση Το EJS είναι γραμμένο σε Java και συνεπώς μπορεί να τρέξει σε οποιοδήποτε λειτουργικό σύστημα υποστηρίζει το Java Virtual Machine (JVM), όπως Macintosh OS Χ, Unix, Linux και Windows. Για να εγκαταστήσετε το λογισμικό EJS: 1. Εγκαταστήστε την κατάλληλη για το λειτουργικό σας σύστημα έκδοση του JRE (Java Runtime Environment) από τη διεύθυνση http://www.oracle.com/technetwork/java/javase/downloads/index.html. 2. Στο eclass θα βρείτε το αρχείο EJS.zip που είναι το λογισμικό προσομοιώσεων που θα χρησιμοποιήσομε. Κατεβάστε το και αποσυμπιέστε το στο σκληρό δίσκο του υπολογιστή σας στο C:\. Επαληθεύστε ότι δημιουργείται ένας φάκελος C:\EJS, ο οποίος περιέχει το αρχείο EjsConsole.jar που χρησιμοποιήσαμε για να τρέξομε το EJS και τρεις υποφακέλους: bin, doc και workspace. a. Προσοχή να μην αλλάξετε το φάκελο bin (που περιέχει τη βιβλιοθήκη του EJS) καθώς και το φάκελο doc, που περιέχει τα help files για το πρόγραμμα. b. Εμείς θα δουλέψομε στο φάκελο workspace, όπου και θα αποθηκεύομε τη δουλειά μας. Θα συζητήσομε την έννοια του workspace αμέσως παρακάτω. 2.2 Τρέξιμο του EJS Τρέξτε το αρχείο C:\EJS\EjsConsole.jar με διπλό κλικ. (Εάν δεν τρέξει, ανοίξτε ένα system terminal window, μπείτε στο φάκελο EJS και πληκτρολογήστε: java jar EjsConsole.jar. (Στην περίπτωση αυτή, η εντολή java θα πρέπει να βρίσκεται στο path του συστήματος). Την πρώτη φορά που θα τρέξετε το EjsConsole.jar στον υπολογιστή σας, θα εμφανιστεί το παρακάτω παράθυρο για να ορίσετε την περιοχή του χώρου εργασίας σας (workspace). Το EJS χρησιμοποιεί την έννοια του workspace για να μας βοηθά να οργανώνομε τη δουλειά μας. Εκεί αποθηκεύονται οι προσομοιώσεις μας για ένα project. Για να χρησιμοποιούμε όλοι (στο εργαστήριο) το ίδιο ιεραρχικό δέντρο για τις προσομοιώσεις μας, ακολουθείστε τις παρακάτω οδηγίες: Με τη βοήθεια του Windows Explorer, C:\EJS\workspace\mSci (εάν δεν υπάρχει ήδη). Κατόπιν, όπως φαίνεται στην Εικόνα 2.1, πηγαίνετε στο φάκελο αυτό από το dropdown Look in:, όπως φαίνεται στο παρακάτω παράθυρο. Αφήστε τσεκαρισμένη την επιλογή «Copy the distribution workspace» για να κατασκευαστούν οι απαραίτητοι υποφάκελοι που θα δούμε αμέσως παρακάτω. Τέλος, πατήστε το κουμπί [Open]. Ακολουθεί κάποια επεξεργασία στο background και θα ερωτηθείτε να ορίσετε τα στοιχεία σας για τη δημοσίευση των προσομοιώσεών σας (Εικόνα 2.2). Αγνοήστε το σχετικό μήνυμα και πατήστε [ΟΚ]. -6- δημιουργήστε το φάκελο

Εικόνα 2.1: Επιλογή του χώρου εργασίας (EJS workspace) Εικόνα 2.2: Επιλογή του χώρου εργασίας (EJS workspace) Μόλις ορίσατε το workspace σας στο φάκελο msci. Εάν με τον Windows Explorer πάτε στο υποφάκελο «msci που μόλις δημιουργήσαμε, θα δείτε ότι έχουν δημιουργηθεί τέσσερις υποφάκελοι: msci\config : Περιλαμβάνει τα configuration που δημιουργεί το EJS όταν αλλάζετε τις επιλογές at run-time msci\export : Για να αποθηκεύομε self-executable packages (JAR files) ή αρχεία HTML για διανομή σε χρήστες. msci\output : Για την αποθήκευση των ενδιάμεσων αρχείων που δημιουργούνται όταν τρέχετε μια προσομοίωση. msci\source : Εκεί που σώζεται η προσομοίωση που δημιουργούμε (σε μορφή αρχείου XML), μαζί με άλλα συνοδευτικά αρχεία όπως εικόνες ή αρχεία δεδομένων. Σημειώστε: -7-

Μπορείτε να έχετε παραπάνω από ένα workspace στον υπολογιστή σας (π.χ., εάν θέλετε να οργανώσετε τις προσομοιώσεις σας σε projects). Για να δημιουργήσετε ένα νέο workspace, δημιουργήστε ένα άδειο φάκελο και επιλέξτε τον στο Tab Basic options του EJS Console. Το EJS θα δημιουργήσει αυτόματα τους απαιτούμενους υποφακέλους. Την επόμενη φορά που θα τρέξετε το EJS, το console θα «θυμηθεί» το τελευταίο workspace που χρησιμοποιήσατε και θα τρέξει σε εκείνο το workspace. Η πληροφορία αυτή σώζεται σε ένα αρχείο EjsOptions.txt στον υποφάκελο msci\config. Εάν το διαγράψετε, θα χρειαστεί να ξανα-ορίσετε το workspace την επόμενη φορά που θα τρέξετε το EJS. Εικόνα 2.3: Τα περιεχόμενα του αρχείου EjsOptions.txt Τέλος, θα εμφανιστεί η κονσόλα (Εικόνα 2.4)στην οθόνη σας. Η κονσόλα δεν είναι μέρος του EJS, αλλά ένα utility που εξυπηρετεί διάφορες διεργασίες, όπως να σηκώσει ένα ή περισσότερα instances του EJS και να επιδεικνύει τα μηνύματα πληροφοριών και σφαλμάτων του προγράμματος. Στο TAB Basic options, βεβαιωθείτε ότι το Load last file είναι τσεκαρισμένο (για να φορτώνετε by default το τελευταίο αρχείο που δουλέψατε) και η γλώσσα (Language) είναι τα ελληνικά (el). -8-

Εικόνα 2.4: Τα τρία πάνελ της κονσόλας του EJS. Ταυτόχρονα με την κονσόλα θα σηκωθεί και ένα instance της διεπαφής χρήστη του EJS (Εικόνα 2.5), η οποία περιλαμβάνει όλα τα απαιτούμενα εργαλεία για έναν πλήρη κύκλο προσομοίωσης. Πιο συγκεκριμένα: Το taskbar στη δεξιά στήλη παρέχει εικονίδια για το άνοιγμα / κλείσιμο / τρέξιμο ενός αρχείου προσομοίωσης καθώς και για το πακετάρισμά του σε αρχείο τύπου jar για διανομή (τα οποία θα δούμε παρακάτω). Δεξί-κλικ πάνω στα εικονίδια δείχνει εναλλακτικές ενέργειες που θα περιγράψομε σταδιακά στα διάφορα παραδείγματα που θα δούμε. -9-

Το κεντρικό τμήμα της διεπαφής περιλαμβάνει τα workpanels όπου προσδιορίζεται και ζωγραφίζεται η προσομοίωση. Τέλος, στο κάτω μέρος της διεπαφής υπάρχει μια περιοχή εμφάνισης ενημερωτικών μηνυμάτων. Εικόνα 2.5: Η διεπαφή χρήστη του EJS Το EJS περιλαμβάνει τρία workpanels για προσομοιώσεις. Το πρώτο workpanel, Εισαγωγή, μας επιτρέπει να δημιουργήσομε μια πολυμεσική παρουσίαση σε HTML που θα περιγράφει το μοντέλο. Κάθε τέτοια σελίδα HTML εμφανίζεται σε ένα tabbed panel μέσα στο παρόν workpanel και μπορούμε να την κάνομε edit με δεξί-κλικ. Το δεύτερο workpanel, Μοντέλο, μας επιτρέπει τον προσδιορισμό μιας προσομοίωσης και χρησιμοποιείται να δημιουργήσουμε και να αρχικοποιήσομε τις μεταβλητές που περιγράφουν το μοντέλο, καθώς και να γράψομε τον αλγόριθμο που προδιαγράφει τη χρονική εξέλιξη των μεταβλητών αυτών. Το τελευταίο workpanel, Θέαση, χρησιμοποιείται για να καθορίσομε τη διεπαφή με την οποία ο χρήστης θα μπορεί να ελέγξει την προσομοίωση και να δείξει την εξέλιξη του μοντέλου. Η διεπαφή αυτή «χτίζεται» επιλέγοντας στοιχεία από τις παλέτες και προσθέτοντάς τα στο Tree of Elements του workpanel Θέαση. Για παράδειγμα, η παλέτα Interface παρέχει κουμπιά, sliders και input fields, και η παλέτες 2D - 10 -

Drawables και 3D Drawables παρέχουν στοιχεία απεικόνισης δισδιάστατων και τρισδιάστατων δεδομένων, αντίστοιχα. - 11 -

3 Το μοντέλο μάζας - ελατηρίου Για να καταλάβετε πως συνεργάζονται τα πάνελ Εισαγωγή, Μοντέλο και Θέαση, ας δούμε με λεπτομέρεια μια από τις υπάρχουσες προσομοιώσεις. Κάνοντας κλικ στο εικονίδιο Open στο taskbar, παρουσιάζεται ένας διάλογος (βλ. Εικόνα 3.1). Μπείτε στον φάκελο «C:\EJS\workspace\mSci\source» και επιλέξτε το αρχείο «MassAndSpring.xml» και πατήστε το κουμπί Open. Το EJS διαβάζει το αρχείο αυτό και γεμίζει τα workpanels, ενώ ταυτόχρονα εμφανίζονται και δύο Παράθυρα EJS όπως φαίνεται στην Εικόνα 3.2. Εικόνα 3.1: Ο διάλογος για την εύρεση και φόρτωση μιας προσομοίωσης. Προσοχή: εάν «σύρετε» (drag) αντικείμενα που βρίσκονται μέσα στα παράθυρα EJS Windows θα αλλάξουν οι αρχικές συνθήκες του μοντέλου σας. Για καλύτερο έλεγχο των αρχικών συνθηκών, προτιμήστε να αρχικοποιήσετε τις μεταβλητές σας μέσα από τον πίνακα μεταβλητών που θα δούμε σε λίγο (ενότητα 3.2.2). Το κόκκινο πλαίσιο «Preview» καθώς και η επικεφαλίδα (Παράθυρο EJS) σας υπενθυμίζει ότι βρίσκεστε στο σχεδιαστικό στάδιο της προσομοίωσης, δηλαδή ότι αυτή δεν τρέχει ακόμα. Όταν τρέξουμε την προσομοίωση, θα δημιουργηθούν νέα runtime παράθυρα χωρίς το πλαίσιο «Preview» και χωρίς τον τίτλο Παράθυρο EJS. Εικόνα 3.2: Τα παράθυρα EJS για το μοντέλο MassAndSpring 3.1 Το workpanel Εισαγωγή Επιλέξτε το workpanel Εισαγωγή και θα δείτε μια δισέλιδη περιγραφή του μοντέλου (σε δύο tabs). Το πρώτο tab με τίτλο «Εισαγωγή» (βλ. Εικόνα 3.3) περιέχει μια σύντομη περιγραφή του - 12 -

μοντέλου. Μπορείτε να κάνετε κλικ στο tab «Ασκήσεις» για να δείτε τη δεύτερη σελίδα. Για να κάνετε Edit την τρέχουσα σελίδα πατήστε το πλήκτρο. Εικόνα 3.3: Περιγραφή του μοντέλου Mass and Spring To workpanel Εισαγωγή περιλαμβάνει ουσιαστική πληροφορία (π.χ. οδηγίες για να τρέξετε την προσομοίωση) και αποτελεί αναπόσπαστο τμήμα της προσομοίωσης. Ο HTML editor του EJS σας επιτρέπει να κατασκευάσετε σελίδες HTML οι οποίες πακετάρονται μαζί με το μοντέλο όταν το αυτό δημοσιευτεί (σχετικές λεπτομέρειες στην ενότητα 4). 3.2 Το workpanel Μοντέλο Επιλέξτε το radio button Μοντέλο για να δούμε πως περιγράφομε το μοντέλο που θέλομε να προσομοιώσομε. Στο παράδειγμά μας μελετάμε την κίνηση ενός σωματιδίου μάζας m που είναι στερεωμένο στο άκρο ενός ελατηρίου μηδενικής μάζας με σταθερά ελατηρίου k και μήκος l. Το άλλο άκρο του ελατηρίου είναι πακτωμένο σε έναν τοίχο και το σωματίδιο επιτρέπεται να κινηθεί στο οριζόντιο επίπεδο σε μια μόνο διεύθυνση. Η προσομοίωση θα λύσει τις εξισώσεις κίνησης και θα συγκρίνομε το αποτέλεσμα με τη γνωστή αναλυτική λύση. Χρησιμοποιούμε ένα σύστημα συντεταγμένων με τον άξονα x κατά μήκος του ελατηρίου και την αρχή στο πακτωμένο άκρο του ελατηρίου. Το μοντέλο μας υποθέτει μικρές ταλαντώσεις γύρω από τη θέση ισορροπίας, ώστε το ελατήριο να υπακούει στο νόμο του Hooke, δηλαδή η δύναμη επαναφοράς του ελατηρίου να είναι ανάλογη με τη μετατόπιση αυτή, όπως ορίζει η παρακάτω εξίσωση: Εξίσωση 3.1 Fx ( x ) k x - 13 -

όπου k είναι η σταθερά του ελατηρίου που εξαρτάται από τα φυσικά χαρακτηριστικά του ελατηρίου. Επιπλέον, χρησιμοποιούμε το 2ο νόμο του Νεύτωνα για να πάρομε την παρακάτω διαφορική εξίσωση 2ου βαθμού για την κίνηση του σωματιδίου: d 2x k (x l) 2 m dt Εξίσωση 3.2 Προσομοιώνομε το σύστημα λύνοντας τη διαφορική εξίσωση Εξίσωση 3.2 αριθμητικά ώστε να δούμε τη χρονική εξέλιξη του συστήματος. 3.2.1 Δήλωση μεταβλητών Στην υλοποίηση ενός μοντέλου, το πρώτο βήμα είναι να προσδιορίσομε τις μεταβλητές του συστήματος και κατόπιν να τις ορίσομε και να τις αρχικοποιήσομε. Ο όρος μεταβλητή είναι πολύ γενικός και περιλαμβάνει οτιδήποτε μπορεί να ονομαστεί, όπως μια φυσική σταθερά ή μια γραφική παράσταση. Η Εικόνα 3.4 δείχνει τον πίνακα μεταβλητών του μοντέλου μας. Κάθε γραμμή ορίζει μια μεταβλητή του μοντέλου προσδιορίζοντας το όνομα (Name), τον τύπο (Type), τη διάσταση (Διάσταση) και την αρχική τιμή της (Value). Εικόνα 3.4: Το workpanel Μοντέλο και τα πέντε υπο-πάνελ (Μεταβλητές, Αρχικοποίηση, Εξέλιξη, Περιορισμοί και Προσαρμογή) Στον προγραμματισμό υπάρχουν διαφορετικού τύπου μεταβλητές ανάλογα με τα δεδομένα που αντιπροσωπεύουν. Αν και η Java διαθέτει μια μεγάλη γκάμα μεταβλητών, οι τύποι που θα χρησιμοποιήσομε συχνότερα είναι Boolean, int, double και String. Προς το παρόν, στο μοντέλο mass-and-spring αρκούν μεταβλητές τύπου double. Η στήλη Διάσταση επιτρέπει τη δήλωση διανυσμάτων και πινάκων (arrays). Τα arrays έχουν μία ή περισσότερες διαστάσεις, κάθε μία από τις οποίες προσδιορίζεται από τον αριθμό των στοιχείων - 14 -

στη διάσταση αυτή μέσα σε τετράγωνες αγκύλες [ ]. Το μοντέλο μας δεν απαιτεί τη χρήση arrays, οπότε η στήλη Διάσταση είναι κενή. Ο πίνακας στην Εικόνα 3.6 ορίζει τις μεταβλητές που χρησιμοποιούνται στο μοντέλο: Η μεταβλητή t είναι ο χρόνος (ανεξάρτητη μεταβλητή) Οι μεταβλητές x και y καθορίζουν τη θέση του σωματιδίου (εξαρτημένες μεταβλητές) Η μεταβλητή vx είναι η ταχύτητα του σωματιδίου στον άξονα x T, V και E είναι η κινητική, δυναμική και ολική ενέργεια του συστήματος, αντίστοιχα, οι οποίες όμως δεν εμφανίζονται στην εξίσωση κίνησης (3.1), αλλά εξαρτώνται από μεταβλητές που υπολογίζονται με αριθμητική λύση της εξίσωσης κίνησης. Στις επόμενες ενότητες θα δούμε πως να εντάσσομε τέτοιες μεταβλητές στην προσομοίωσή μας. Τέλος, στο κάτω μέρος του πάνελ επιτρέπεται η εισαγωγή επεξηγηματικών σχολίων για κάθε μεταβλητή. Επίσης χρησιμοποιούνται και οι παρακάτω στεθερές: Η σταθερά k και το φυσικό μήκος l του ελατηρίου Η μάζα m του σφαιριδίου στην άκρη του ελατηρίου H σταθερά showplot επιτρέπει την επιλογή on/off της εμφάνισης των σχετικών γραφικών παραστάσεων εξέλιξης του μοντέλου 3.2.2 Αρχικοποίηση του Μοντέλου Η αρχικοποίηση του μοντέλου είναι σημαντική, καθώς το μοντέλο πρέπει να αρχίσει να τρέχει από μια φυσικά αποδεκτή κατάσταση. Το συγκεκριμένο μοντέλο είναι σχετικά απλό και αρχικοποιούμε τις μεταβλητές εισάγοντας τιμές (ή απλούς τύπους σε Java) στη στήλη Value του πίνακα. Το EJS χρησιμοποιεί αυτές τις τιμές όταν αρχίσει να τρέχει την προσομοίωση. Πιο προχωρημένα μοντέλα μπορεί να απαιτούν έναν αλγόριθμο αρχικοποίησης. Για παράδειγμα, στην πυρηνική φυσική μπορούμε να αποδώσομε αρχικές ταχύτητες σε ένα σύνολο σωματιδίων βάσει ενός αλγορίθμου που υπολογίζει τυχαίες ταχύτητες για ορισμένη θερμοκρασία Τ. Σε αυτή την περίπτωση, το πάνελ Αρχικοποίηση επιτρέπει την εισαγωγή του κώδικα Java που υλοποιεί το σχετικό αλγόριθμο. Το EJS μετατρέπει αυτόν τον κώδικα σε μια μέθοδο την οποία και καλεί κατά την έναρξη της προσομοίωσης. Για το μοντέλο μας το πάνελ Αρχικοποίηση είναι άδειο. Δείτε όμως την ενότητα 3.2.4 για ένα παράδειγμα του πως γράφομε κώδικα Java στο EJS. 3.2.3 Η εξέλιξη του μοντέλου Το EJS επιτρέπει τον καθορισμό της χρονικής εξέλιξης του μοντέλου στο πάνελ Εξέλιξη με δύο τρόπους: Τον προγραμματισμό του δικού μας αλγορίθμου χρονικής εξέλιξης. Την απευθείας εισαγωγή των σχετικών συνήθων διαφορικών εξισώσεων (ODEs), όπως την Εξίσωση 3.2 χωρίς προγραμματισμό. Για να το καταφέρει αυτό, το EJS περιλαμβάνει έναν εξειδικευμένο editor που μας επιτρέπει να προσδιορίσομε διαφορικές εξισώσεις σε ένα format που θυμίζει μαθηματική αναπαράσταση και - 15 -

που αυτόματα δημιουργεί τον σωστό κώδικα Java. Ας δούμε πως μπορεί να γίνει αυτό για το μοντέλο μας. Επειδή οι αλγόριθμοι ODE λύνουν συστήματα συνήθων διαφορικών εξισώσεων 1 ου βαθμού, μια εξίσωση μεγαλύτερου βαθμού ανάγεται σε ένα σύστημα ODE 1 ου προσθέτοντας νέες μεταβλητές. Για το μοντέλο μας, αυτό μπορεί να γίνει χρησιμοποιώντας την ταχύτητα ως ανεξάρτητη μεταβλητή που υπακούει τη δική της διαφορική εξίσωση: Εξίσωση 3.3 Εξίσωση 3.4 dx vx dt dv x k (x l) dt m Η ανάγκη για μια ανεξάρτητη διαφορική εξίσωση είναι ο λόγος που δηλώνομε τη μεταβλητή vx στον πίνακα μεταβλητών. Επιλέξτε το πάνελ Εξέλιξη που εμφανίζει τον ODE editor (Εικόνα 3.5) και παρατηρείστε πως γράφονται οι εξισώσεις Εξίσωση 3.3 και Εξίσωση 3.4. Τα πεδία Ανεξ. Μεταβλ. (Indep. Var.) και Αύξηση (Increment) αντιπροσωπεύουν την ανεξάρτητη μεταβλητή (t) και την ποσότητα μεταβολής (dt), αντίστοιχα. Οι αλγόριθμοι επίλυσης διαφορικών εξισώσεων εξελίσσουν την κατάσταση (state) του συστήματος σε διακεκριμένα βήματα. Το dropdown menu Λύση στο κάτω μέρος του editor επιτρέπει την επιλογή ενός συγκεκριμένου αλγορίθμου αριθμητικής επίλυσης του συστήματος εξισώσεων (Εξίσωση 3.3) και (Εξίσωση 3.4) από χρόνο t σε χρόνο t + dt. Το πεδίο Συμβάντα (Events) στο κάτω δεξί μέρος του editor δείχνει ότι δεν έχομε επιλέξει κάποιο event για το συγκεκριμένο σύστημα ODE. Εικόνα 3.5: Στο πάνελ Εξέλιξη φαίνονται οι εξισώσεις κίνησης του μοντέλου mass-and-spring, καθώς και ο αλγόριθμος επίλυσης που έχει επιλεχθεί Το αριστερό τμήμα του πάνελ Εξέλιξη περιλαμβάνει πεδία που καθορίζουν πόσο ομαλά και πόσο γρήγορα θα τρέξει η προσομοίωση. - 16 -

Το πεδίο Καρέ/δευτ. (Frames per second FPS) δείχνει πόσες φορές το δευτερόλεπτο θέλομε να γίνεται ένα screen refresh. Η τιμή του FPS μπορεί να επιλεγεί είτε χρησιμοποιώντας το slider είτε δίνοντας απευθείας τιμή στο σχετικό πεδίο. Το πεδίο SPD (Stages per Display) καθορίζει πόσες φορές θέλομε να προχωρήσομε το μοντέλο προτού γίνει ένα νέο screen refresh και να ξανά-ζωγραφιστεί το μοντέλο. Οι τιμές FPS = 20 και SPD = 1 συνδυασμένες με dt = 0.05 έχουν ως αποτέλεσμα να τρέχει η προσομοίωση (περίπου) σε πραγματικό χρόνο. Τις περισσότερες φορές θα χρησιμοποιούμε την default τιμή SPD = 1. Σε ορισμένες όμως περιπτώσεις, π.χ. όταν η γραφική απόδοση του μοντέλου απαιτεί σημαντικούς υπολογιστικούς πόρους, μπορούμε να χρησιμοποιήσομε μεγαλύτερη τιμή για το SPD ώστε να μην καθυστερεί ο υπολογισμός της εξέλιξης του μοντέλου μας. Σε αυτές τις περιπτώσεις, το μοντέλο μας θα προχωρήσει όσες φορές προδιαγράψομε με την τιμή της μεταβλητής SPD πριν γίνει το επόμενο screen refresh. Τέλος, το πεδίο Autoplay καθορίζει εάν η προσομοίωση θέλομε να ξεκινήσει αμέσως μετά την ενεργοποίηση του μοντέλου. Στο παράδειγμά μας, το checkbox δεν είναι τσεκαρισμένο, ώστε να έχομε τη δυνατότητα να αλλάξομε τις αρχικές συνθήκες προτού τρέξομε την προσομοίωση. Όπως διαπιστώνετε και οι ίδιοι, το πάνελ Εξέλιξη διαχειρίζεται τις τεχνικές πλευρές του μοντέλου mass-and-spring χωρίς προγραμματισμό. Η προσομοίωση εξελίσσει την κατάσταση (state) του συστήματος λύνοντας αριθμητικά τις διαφορικές εξισώσεις κίνησης χρησιμοποιώντας τον επιλεγμένο αλγόριθμο (στην Εικόνα 3.5 πρόκειται για τον αλγόριθμο midpoint των EulerRichardson). Ο αλγόριθμος αυτός προχωρά το state του μοντέλου από χρόνο t σε χρόνο t+dt και ξανα-ζωγραφίζει το νέο state. Η προσομοίωση προχωρά με ρυθμό 20 καρέ το δευτερόλεπτο με συντηρητικές απαιτήσεις υπολογιστικής ισχύος. Σε υπολογιστές με λιγότερη από την απαιτούμενη υπολογιστική ισχύ, η προσομοίωση θα τρέξει λιγότερο στρωτά, χωρίς βέβαια να κολλήσει. Σημείωση: Αν και επιλέξαμε να λύσομε το μοντέλο mass-and-spring με τον σχετικά απλό αλγόριθμο midpoint των Euler-Richardson, η βιβλιοθήκη του EJS περιλαμβάνει αρκετούς πιο εξεζητημένους αλγορίθμους που μπορούν να χρησιμοποιηθούν σε μεγαλύτερα ή πολυπλοκότερα συστήματα ODEs με ή χωρίς διακριτά events. 3.2.4 Περιορισμοί μεταξύ των μεταβλητών Δεν είναι απαραίτητο όλες οι μεταβλητές ενός μοντέλου να υπολογίζονται από τον αλγόριθμο εξέλιξης: ορισμένες μπορούν να υπολογίζονται από απλές εξισώσεις. Στην ορολογία του EJS, διακρίνομε δύο είδη μεταβλητών: State or Dynamic Variables (δυναμικές μεταβλητές): Είναι οι μεταβλητές που υπολογίζονται άμεσα από τον αλγόριθμο εξέλιξης. Auxiliary Variables (επικουρικές μεταβλητές) ή Output Variables (μεταβλητές εξόδου): εξαρτώνται και υπολογίζονται από τα παραπάνω state variables. Στο μοντέλο mass-and-spring, state variables είναι η θέση και η ταχύτητα, ενώ output variables είναι η κινητική ενέργεια, η δυναμική ενέργεια και η ολική ενέργεια του συστήματος, οι οποίες υπολογίζονται από τα state variables του μοντέλου βάσει των παρακάτω μαθηματικών τύπων: Εξίσωση 3.5 T 1 2 mvx 2 Εξίσωση 3.6 V 1 k ( x l )2 2-17 -

E T V Εξίσωση 3.7 Σε παρόμοιες περιπτώσεις λέμε ότι υπάρχουν οι σταθεροί περιορισμοί (fixed constraints) μεταξύ των state και output μεταβλητών του μοντέλου. Συνεπώς, το πάνελ Περιορισμοί στην Εικόνα 3.6 χρησιμοποιείται για την καταγραφή των περιορισμών μεταξύ των παραπάνω μεταβλητών, φυσικά στο συντακτικό της γλώσσας Java. Παρατηρήστε πόσο εύκολο είναι να μεταφράσουμε τις εξισώσεις (Εξίσωση 3.5) έως (Εξίσωση 3.7) σε κώδικα Java. Το πιο δύσκολο που πρέπει να θυμάστε είναι να χρησιμοποιείτε το * για πολλαπλασιασμό, καθώς και να κολλάτε το ελληνικό ερωτηματικό ; στο τέλος κάθε εξίσωσης, όπως απαιτείται στις εντολές σε Java. Εικόνα 3.6: Οι περιορισμοί για το μοντέλο mass-and-spring Μπορεί να αναρωτιέστε γιατί δεν γράφομε τους περιορισμούς με την προσθήκη μιας σελίδας κώδικα μετά από τη σελίδα ODE στο πάνελ Εξέλιξη, αφού έτσι κι αλλιώς ο κώδικας εξέλιξης εκτελείται σειριακά και τα output variables θα υπολογίζονται σωστά μετά από κάθε βήμα. Ο λόγος ότι οι εξισώσεις περιορισμού πρέπει να ισχύουν πάντα και ότι υπάρχουν και άλλοι τρόποι όπως ενέργειες ποντικιού που τις επηρεάζουν. Με τον προτεινόμενο τρόπο, το EJS υπολογίζει αυτόματα τους περιορισμούς μετά από την έναρξη της προσομοίωσης, μετά από κάθε βήμα εξέλιξης, και τέλος όποτε υπάρχει οποιαδήποτε αλληλεπίδραση του χρήστη με τη διεπαφή της προσομοίωσης. Για αυτόν τον λόγο, είναι σημαντικό οι σταθερές σχέσεις μεταξύ των μεταβλητών να γράφονται στο πάνελ Περιορισμοί. 3.2.5 Προσαρμογή (Custom pages) Κλείνομε με το πάνελ Προσαρμογή, το οποίο χρησιμοποιείται για να καθορίσει μεθόδους που μπορούν να κληθούν/χρησιμοποιηθούν σε ολόκληρο το μοντέλο. Σημειώστε ότι τα custom methods δεν χρησιμοποιούνται εκτός και αν κληθούν ρητά σε ένα άλλο πάνελ. - 18 -

3.3 Το workpanel Θέαση Στο τελευταίο αυτό workpanel κατασκευάζομε τη διεπαφή χρήστη για τη γραφική παράσταση του μοντέλου, και καθορίζομε τον τρόπο αλληλεπίδρασης με το χρήστη και τον έλεγχο της προσομοίωσης με ελάχιστο προγραμματισμό. Επιλέξτε το radio button Θέαση για να δείτε τι περιλαμβάνει η διεπαφή του μοντέλου mass-and-spring (βλ. Εικόνα 3.7). - 19 -

Εικόνα 3.7: Το πάνελ Θέαση με το Δέντρο των Στοιχείων (Τree of Elements). - 20 -

Το πλαίσιο στο δεξί μέρος ομαδοποιεί τα γραφικά στοιχεία (Στοιχεία Θέασης) ανά λειτουργικότητα. Τα γραφικά στοιχεία είναι δομικοί λίθοι που συνδυάζονται για να δημιουργήσουν τη διεπαφή χρήστη. Για μια πληρέστερη περιγραφή κάποιου στοιχείου, επιλέξτε πρώτα το στοιχείο και μετά πατήστε F1 ή κάντε δεξί-κλικ πάνω του με το ποντίκι και επιλέξτε Help. Για να κατασκευάσομε τη διεπαφή, αρχίζομε από τις κλάσεις του 2 ου tab κάτω από τα Στοιχεία Θέασης -> interface (το πάνελ Windows, containers and drawing panels ). Τα αντικείμενα αυτών των κλάσεων λειτουργούν ως containers για τα γραφικά στοιχεία που θα χρειαστούμε (κουμπιά, textboxes κλπ.). Το Δέντρο Στοιχείων στο αριστερό τμήμα του πάνελ Θέαση δείχνει την δομή της διεπαφής για το μοντέλο mass-and-spring. Προσέξτε ότι υπάρχουν δύο παράθυρα: το Frame και το Dialog, τα οποία είναι containers με σκοπό να ομαδοποιήσουν οπτικά τα στοιχεία της διεπαφής. Κάνοντας δεξί κλικ σε ένα στοιχείο του δέντρου, θα παρουσιαστεί ένα μενού που επιτρέπει την αλλαγή της δομής της διεπαφής. Κάθε γραφικό στοιχείο χαρακτηρίζεται από ιδιότητες (properties) που καθορίζουν την εμφάνιση και τη συμπεριφορά του, τις τιμές των οποίων μπορούμε να καθορίσομε κάνοντας διπλό κλικ πάνω στο στοιχείο. Θα παρουσιαστεί ένα παράθυρο (properties inspector). Οπτικές μεταβλητές όπως το χρώμα παίρνουν συνήθως μια σταθερή τιμή (π.χ. RED). Μπορούμε επίσης να χρησιμοποιήσομε μια μεταβλητή του μοντέλου μας για να καθορίσομε την τιμή της παραμέτρου ενός γραφικού στοιχείου. Είναι ακριβώς αυτή η δυνατότητα που μας επιτρέπει να εισάγομε δυναμικότητα και αλληλεπίδραση σε μια προσομοίωση. Ας δούμε πως δουλεύει αυτό στην πράξη. Κάντε διπλό κλικ πάνω στο στοιχείο massshape για να ανοίξει ο properties inspector (Εικόνα 3.8). (Το στοιχείο αυτό αναπαριστά τη μάζα που ταλαντώνεται στο ελεύθερο άκρο του ελατηρίου.) Εικόνα 3.8: Οι ιδιότητες του στοιχείου massparticle Προσέξτε ότι σε ορισμένες ιδιότητες δίνονται σταθερές τιμές. Για παράδειγμα, οι επιλεγμένες τιμές για τις ιδιότητες Style, Size X, Size Y και Fill Color δημιουργούν μια έλλειψη διαστάσεων (0.2,0.2) (δηλαδή κύκλο) χρώματος μωβ. Αυτό που προέχει όμως είναι να συνδέσομε το massshape με το μοντέλο μας, ώστε η κίνησή του στην οθόνη κατά τη διάρκεια της προσομοίωσης να είναι ρεαλιστική, δηλαδή η προβλεπόμενη από τις εξισώσεις κίνησης που έχουν δηλωθεί στο πάνελ Μοντέλο. Αυτό γίνεται θέτοντας τις ιδιότητες Χ και Υ της θέσης του massshape ίσες με τις μεταβλητές x και y του μοντέλου, αντίστοιχα. Εξίσου σημαντικό είναι να γνωρίζομε ότι αυτή η αντιστοιχία είναι αμφίδρομη. Δηλαδή, εάν ο χρήστης σύρει το σωματίδιο σε μια νέα θέση (δηλ. Αλλάξει τις τιμές των μεταβλητών Χ και Υ), τότε οι αρχικές τιμές των μεταβλητών x και y στο μοντέλο θα αλλάξουν και αυτές αναλόγως. Επιπλέον, τα γραφικά στοιχεία μπορούν να έχουν και action properties που συσχετίζονται με κώδικα (τα action properties έχουν κόκκινα labels, π.χ. On Press, On Drag, κλπ). Με αυτό τον τρόπο, ενέργειες του χρήστη όπως dragging ή clicking καλούν τo αντίστοιχο action property, προσφέροντας έναν απλό τρόπο ελέγχου της προσομοίωσης. - 21 -

Για παράδειγμα: Όταν ο χρήστης κάνει κλικ με το ποντίκι στη μάζα, η προσομοίωση κάνει παύση εφόσον καλείται η εσωτερική ρουτίνα _pause(). Όταν ο χρήστης σύρει τη μάζα, εκτελείται ο κώδικας στην μέθοδο On Drag, ο οποίος κάνει τα παρακάτω: y = 0.0; // περιορίζει την κίνηση της μάζας στον άξονα x vx = 0.0; // αναγκάζει τη μάζα να ξεκινήσει από ηρεμία _view.resettraces(); // καθαρίζει τις γραφικές παραστάσεις Προσέξτε ότι επειδή ο παραπάνω κώδικας εκτείνεται σε > 1 γραμμές, το action property On Release δείχνει ένα σκούρο πράσινο φόντο. Για να δείτε ολόκληρο τον κώδικα, κάντε κλικ στο πρώτο εικονίδιο στα δεξιά του πεδίου. Άλλοι τύποι δεδομένων όπως οι Boolean έχουν διαφορετικού τύπου editors (true/false). Τέλος, το δεύτερο εικονίδιο στα δεξιά κάθε πεδίου δίνει μια λίστα των μεταβλητών που μπορείτε να χρησιμοποιήσετε για να καθορίσετε την τιμή του αντίστοιχου property. Μπορείτε να εξερευνήσετε τις ιδιότητες και άλλων στοιχείων θέασης. Για παράδειγμα, τα στοιχεία displacementtrace και velocitytrace αντιστοιχούν στα γραφικές παραστάσεις του μετατόπισης και της ταχύτητας, αντίστοιχα. 3.4 Συνολικά: η ολοκληρωμένη προσομοίωση Για να κατασκευάσομε το μοντέλο mass-and-spring, πρώτα κατασκευάσαμε έναν πίνακα μεταβλητών που περιγράφουν το μοντέλο και τις αρχικοποιήσαμε. Έπειτα χρησιμοποιήσαμε τον ODE editor του πάνελ Εξέλιξη για να καθορίσομε τη χρονική εξέλιξη των μεταβλητών αυτών. Τέλος, προσθέσαμε περιορισμούς για τον υπολογισμό των output variables σαν συνάρτηση των state variables. Για τη γραφική αναπαράσταση του μοντέλου, σύραμε επιλεγμένα στοιχεία στο Tree of Elements, δώσαμε τιμές σε ορισμένα properties τους, ενώ άλλα properties τα αντιστοιχίσαμε σε μεταβλητές του μοντέλου. Τα screen shots στην Εικόνα 3.9 παρουσιάζουν τα πάνελ ιδιοτήτων όλων των αντικειμένων της προσομοίωσης. - 22 -

- 23 -

- 24 -

- 25 -

- 26 -

- 27 -

- 28 -

Εικόνα 3.9: Τα πάνελ ιδιοτήτων όλων των αντικειμένων της προσομοίωσης - 29 -

3.5 Τρέξιμο της προσομοίωσης Έφτασε η ώρα να εκτελέσομε την προσομοίωση. Κάντε κλικ στο εικονίδιο Run στο taskbar. Η ενέργεια αυτή δημιουργεί τον κατάλληλο κώδικα Java, συγκεντρώνει όλα τα σχετικά βοηθητικά αρχεία και βιβλιοθήκες του EJS, κάνει compile και τέλος τρέχει την προσομοίωση. Και όλα αυτά με το πάτημα ενός κουμπιού! Πώς όμως το EJS χρησιμοποιεί όλη αυτή την πληροφορία για να κατασκευάσει μια προσομοίωση; Εφόσον το compile εκτελεστεί επιτυχώς, ο πίνακας μεταβλητών χρησιμοποιείται για τη δέσμευση χώρου στη μνήμη και κάθε μεταβλητή αρχικοποιείται. Κατόπιν, εκτελούνται οι περιορισμοί για να σιγουρευτούμε ότι όλες οι εξαρτώμενες μεταβλητές (output variables) ξεκινούν με τη σωστή τιμή, φέρνοντας το μοντέλο σε μία συνεπή αρχική κατάσταση. Κατά τη διάρκεια του τρεξίματος της προσομοίωσης, το εικονίδιο Run αλλάζει χρώμα (από πράσινο σε κόκκινο) και εμφανίζει σχετικά μηνύματα (π.χ., ότι η προσομοίωση έγινε compiled σωστά και τρέχει) στον προβλεπόμενο χώρο. Προσέξτε επίσης ότι τα δύο design-time preview windows με τον προσδιορισμό παράθυρο EJS εξαφανίζονται και αντικαθιστώνται από δύο νέα χωρίς τον προσδιορισμό Παράθυρο EJS στον τίτλο τους. Πρόκειται για τα runtime graphics windows. Τώρα πατήστε το κουμπί Play στο παράθυρο Mass And Spring. Η μάζα αρχίζει να ταλαντώνεται γύρω από το σημείο ισορροπίας και ταυτόχρονα ενημερώνονται οι γραφικές παραστάσεις για τα φυσικά μεγέθη μετατόπιση και ταχύτητα, όπως φαίνεται στην Εικόνα 3.10. Κατά τη διάρκεια της εξέλιξης, εκτελείται η προεπιλεγμένη αριθμητική μέθοδος επίλυσης του συστήματος των ODE και το μοντέλο εξελίσσεται κατά 0.05 μονάδες χρόνου, όπου υπολογίζονται εκ νέου οι περιορισμοί. Κατόπιν, τα δεδομένα περνούν στις προδιαγραμμένες ιδιότητες της διεπαφής και το μοντέλο ξαναζωγραφίζεται. Αυτό επαναλαμβάνεται FPS φορές το δευτερόλεπτο. Εικόνα 3.10: Στιγμιότυπο από τη γραφική αναπαράσταση της εξέλιξης του μοντέλου mass-andspring (αριστερά) με ταυτόχρονη ενημέρωση των γραφικών παραστάσεων για μετατόπιση και ταχύτητα Τέλος, κλείστε το κύριο παράθυρο της προσομοίωσης για να κάνετε Exit από το πρόγραμμα. - 30 -

4 Διανομή Προσομοιώσεων Οι προσομοιώσεις που δημιουργούνται με τη βοήθεια του EJS είναι standalone εφαρμογές σε Java, οι οποίες δεν εξαρτώνται καθόλου από το EJS και μπορούν να διανεμηθούν χωρίς τη συνοδεία του λογισμικού EJS. Τα αρχεία που παράγονται αυτόματα στο φάκελο msci\output για το μοντέλο MassAndSpring όταν πατήσετε το εικονίδιο Run Εικόνα 4.1: φαίνονται στην παρακάτω (α) Περιεχόμενα του φακέλου msci\output\ (β) Περιεχόμενα του φακέλου msci\output\massandspring\ (γ) Περιεχόμενα του φακέλου msci\output\massandspring_pkg\ Εικόνα 4.1: Τα περιεχόμενα του φακέλου msci\output\ μετά το τρέξιμο της προσομοίωσης Ο υποφάκελος αυτός περιέχει όλα τα αρχεία που χρειάζονται για να τρέξομε την προσομοίωση είτε σαν standalone (MassAndSpring.java) είτε μέσα από το internet (MassAndSpringApplet.java). Για παράδειγμα, το αρχείο ΜassAndSpring.jar (τα περιεχόμενα του οποίου φαίνονται στην Εικόνα 4.2) περιέχει μόνο τον compiled κώδικα (αρχεία.class) της τρέχουσας προσομοίωσης και φυσικά απαιτεί τη βιβλιοθήκη του EJS για να τρέξει. - 31 -

Εικόνα 4.2: Τα περιεχόμενα του αρχείου ΜassAndSpring.jar που παράγεται με το τρέξιμο της προσομοίωσης Είναι λογικό, λοιπόν, ότι εάν προσπαθήσετε να msci\output\μassandspring.jar θα πάρετε το παρακάτω σφάλμα: 4.1 εκτελέσετε το αρχείο Διανομή προσομοιώσεων σε πακέτο Όπως καταλαβαίνετε, για μπορούμε να διανείμουμε μια προσομοίωση σε υπολογιστές που δεν έχουν το EJS εγκατεστημένο, θα πρέπει να κατασκευάσομε ένα πλήρες πακέτο, το οποίο περιλαμβάνει εκτός από τα αρχεία της προσομοίωσης και τις απαιτούμενες βιβλιοθήκες του EJS. Για να φτιάξετε ένα τέτοιο ολοκληρωμένο πακέτο, κάντε δεξί κλικ στο εικονίδιο Package στο taskbar και επιλέξτε Package current simulation only. Εμφανίζεται ένας file browser που σας επιτρέπει να επιλέξετε φάκελο αποθήκευσης (default είναι ο φάκελος msci\export) και το όνομα του αρχείου (το default όνομα στην περίπτωσή μας είναι ejs_massandspring.jar ). Πατήστε [Save] και περιμένετε να δημιουργηθεί το αρχείο. - 32 -

Το αρχείο αυτό είναι μεγαλύτερο από το αρχείο jar που περιέχει μόνο την προσομοίωση χωρίς τη βιβλιοθήκη, αλλά μπορεί να διανεμηθεί αποτελεσματικά με διάφορα μέσα (CD, internet) χωρίς προβλήματα (βλ. περιεχόμενα του πακέτου στην Εικόνα 4.3). Εικόνα 4.3: Τα περιεχόμενα ενός ολοκληρωμένου πακέτου προσομοίωσης, έτοιμου για διανομή Παρενθετικά, εάν θέλομε να διανείμομε περισσότερες από μία προσομοιώσεις σε ένα πακέτο, φυσικά και δεν χρειάζεται να πακετάρομε τη βιβλιοθήκη με κάθε προσομοίωση ξεχωριστά. Ένας αποδοτικότερος τρόπος διανομής ολόκληρης της διδακτέας ύλης είναι να πακετάρομε όλες τις προσομοιώσεις σε ένα μόνο αρχείο jar κάνοντας δεξί κλικ στο εικονίδιο Package και επιλέγοντας Package several simulations. στο taskbar Ένα παράδειγμα φαίνεται στην παρακάτω Εικόνα 4.4 που δείχνει το πακέτο προσομοιώσεων που συνοδεύει το βιβλίο Open Source Physics: An Introduction to Computer Simulation Methods των H. Gould, J. Tobochnik & W. Christian, όπου μπορούμε: Να επιλέξομε οποιαδήποτε προσομοίωση κάνοντας κλικ στο αντίστοιχο πράσινο βέλος για να δούμε τις πληροφορίες για το μοντέλο (τις σελίδες HTML). Να κάνομε διπλό κλικ πάνω στο όνομα της προσομοίωσης για να την τρέξομε. - 33 -

Εικόνα 4.4: Παράδειγμα διανομής πολλαπλών προσομοιώσεων 4.2 Διανομή προσομοιώσεων στο διαδίκτυο Τα Java applets είναι προγράμματα που ενσωματώνονται σε ιστοσελίδες και διανέμονται στο internet από έναν web server. Το EJS προβλέπει και αυτή τη μέθοδο διανομής. Ανοίξτε με τον web browser το αρχείο MassAndSpring.html στον υποφάκελο MassAndSpring.app και θα δείτε το μοντέλο (Εικόνα 4.5). Στον πίνακα περιεχομένων, κάντε κλικ στο Simulation για να τρέξει το applet (Εικόνα 4.6). Η δημοσίευση ενός EJS applet σε έναν Web Server είναι πανεύκολη. Απλά αντιγράψτε τα περιεχόμενα του υπο-φάκελου msci\output στο home directory του Web Server. Εικόνα 4.5: Τρέξιμο του αρχείου HTML της προσομοίωσης mass-and-spring - 34 -

Εικόνα 4.6: Η προσομοίωση που τρέχει σαν Java applet. Ένας εύκολος τρόπος διανομής προσομοιώσεων EJS μεταξύ χρηστών είναι να διανείμετε το αρχείο XML της προσομοίωσης μαζί με τα επικουρικά αρχεία (π.χ. εικόνες). Τα επικουρικά αρχεία φαίνονται στο πάνελ πληροφόρησης της προσομοίωσης, το οποίο εμφανίζεται κάνοντας κλικ στο πάνω-δεξί εικονίδιο στην πάνω δεξιά πλευρά της διεπαφής του EJS (Εικόνα 4.7). Το αρχείο MassAnd-Spring.xml και τα επικουρικά αρχεία (MassAndSpring.gif) που βρίσκονται στον υποφάκελο msci\source και είναι λιγότερο από 30 Kbytes (συγκρίνετε το μέγεθος αυτό με τα 1.5 MBytes του standalone αρχείου massandspring.jar στο φάκελο msci\export ). Συνεπώς, μια αποδοτική μέθοδος διανομής προσομοιώσεων μεταξύ χρηστών του EJS είναι να zip-άρετε τα αρχεία του μοντέλου στο φάκελο source και να τα στείλετε σε άλλους χρήστες του EJS που θα τα κάνουν unzip στο δικό τους workspace. Εικόνα 4.7: Πληροφορίες και επικουρικά αρχεία για την προσομοίωση mass-and-spring. Για ακόμα περισσότερη ευκολία στον κύκλο μοντελοποίησης, τα πακέτα jar που παράγονται με το EJS περιέχουν κόπιες των αρχείων XML καθώς και των επικουρικών αρχείων. Έτσι, εάν θέλετε να τρέξετε μια προσομοίωση μέσα από ένα αρχείο jar (που περιέχει μία ή περισσότερες προσομοιώσεις που φτιάχτηκαν με το Launcher) αρκεί να κάνετε δεξί κλικ σε οποιοδήποτε graphics panel για να εμφανιστεί ένα popup μενού με μια επιλογή για να ενεργοποιηθεί το EJS. - 35 -

(Στην περίπτωση αυτή, πρέπει να υπάρχει εγκατεστημένο το EJS). Κατόπιν, εξάγετε τα αρχεία xml και τα επικουρικά αρχεία από το αρχείο jar και τα αποθηκεύετε τα στο σκληρό δίσκο στον προβλεπόμενο υποφάκελο του EJS. Κατόπιν σηκώστε το EJS και ανοίγετε τη συγκεκριμένη προσομοίωση. Με αυτό τον τρόπο, ο χρήστης μπορεί να τρέξει την προσομοίωση, να την τροποποιήσει και να την σώσει με τις αλλαγές που έγιναν, όπως ακριβώς κάναμε στις προηγούμενες ενότητες. Σημείωση: Τα Java applets του EJS δεν έχουν πρόσβαση στο φάκελο του EJS στον τοπικό σκληρό δίσκο του χρήστη για λόγους ασφάλειας. Υπάρχει, όμως, μια διαδικασία ονόματι signing the applet που ξεπερνά αυτό τον περιορισμό. Για να μάθετε πώς να εφαρμόζετε αυτή τη διαδικασία, ψάξτε για «signing applets» στο δικτυακό τόπο http://developers.sun.com. Άσκηση 1: 1. Μετρήστε και καταγράψτε την περίοδο της ταλάντωσης Τ της μάζας με τις συγκεκριμένες αρχικές συνθήκες που φαίνονται στην Εικόνα 3.4. 2. Κατόπιν σύρετε με το ποντίκι τη μάζα σε μια νέα διαφορετική αρχική θέση και μετρήστε και πάλι την περίοδο ταλάντωσης Τ της μάζας (μπορεί να χρειαστεί να μεγαλώσετε το παράθυρο όπου φαίνεται η ταλάντωση). Η νέα περίοδος ταλάντωσης είναι ίδια, μεγαλύτερη ή μικρότερη από εκείνη στο ερώτημα 1; 3. Κρατώντας τη σταθερά ελατηρίου k σταθερή, τρέξτε την προσομοίωση με διαφορετικές τιμές της μάζας m και ζωγραφίστε στο τετράδιό σας την εξάρτηση της περιόδου ταλάντωσης Τ από το m. 4. Κρατώντας τη μάζα m σταθερή, τρέξτε την προσομοίωση με διαφορετικές τιμές της σταθεράς ελατηρίου k και ζωγραφίστε στο τετράδιό σας την εξάρτηση της περιόδου ταλάντωσης Τ από το k. 5. Από τα δύο γραφικά που έχετε μπροστά σας, προσπαθήστε να μαντέψετε πως σχετίζεται η περίοδος ταλάντωσης από τη μάζα και το k. 6. Περιμένετε η ολική ενέργεια του συστήματος να μείνει σταθερή ή όχι; Γιατί; 7. Στην προσομοίωσή μας, η ολική ενέργεια του συστήματος φαίνεται αργά-αργά να αυξάνεται. Γιατί να συμβαίνει αυτό; (Υπόδειξη: επιλέξτε μια καλύτερη μέθοδο επίλυσης της εξίσωσης κίνησης όπως την Runge-Kutta και ελέγξτε ξανά). Άσκηση 2: Προσθέστε ένα τρίτο plotting panel στην προσομοίωση mass-and-spring, η οποία θα δείχνει την εξέλιξη της κινητικής, της δυναμικής και της ολικής ενέργειας στο χρόνο. - 36 -