Ενότητα 2. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Αναγνωστόπουλος Κωνσταντίνος

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ενότητα 2. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Αναγνωστόπουλος Κωνσταντίνος"

Transcript

1 Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού Ενότητα 2 Αναγνωστόπουλος Κωνσταντίνος

2 Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειτα σε άδειες χρήσης rea%ve ommons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναγράφεται ρητώς.

3 Κεφάλαιο 2 Περιγραφή της Κίνησης Στο κεφάλαιο αυτό θα δείξουμε πώς να προγραμματίσουμε απλές εξισώσεις τροχιάς ενός σωματιδίου και πώς να κάνουμε βασική ανάλυση των αριθμητικών αποτελεσμάτων. Χρησιμοποιούμε απλές μεθόδους απεικόνισης των τροχιών. Στην παράγραφο 2.3 μελετάμε την επίδραση των συστηματικών σφαλμάτων που υπεισέρχονται σε απλά αριθμητικά πρότυπα της κίνησης σωματιδίου που σκεδάζεται πάνω σε σκληρά και αμετακίνητα εμπόδια. 2.1 Κίνηση στο Επίπεδο Σωματίδιο κινείται στο επίπεδο και η θέση του περιγράφεται σε ένα καρτεσιανό σύστημα συντεταγμένων από τις συντεταγμένες (x(t), y(t)) η οποία σα συνάρτηση του χρόνου δίνει την εξίσωση της τροχιάς του σωματιδίου. Το διάνυσμα θέσηςτουσωματιδίουείναιτο r(t) = x(t)ˆx+y(y)ŷ,όπου ˆxκαι ŷείναιταμοναδιαία διανύσματα στους άξονες x και y αντίστοιχα. Το διάνυσμα της ταχύτητας είναιτο v(t) = v x (t)ˆx+v y (t)ŷόπου v(t) = d r(t) dt v x (t) = dx(t) v y (t) = dy(t), (2.1) dt dt Ηεπιτάχυνση a(t) = a x (t)ˆx+a y (t)ŷδίνεταιαπότιςσχέσεις a x (t) = dv x(t) dt a(t) = d v(t) dt = d2 x(t) dt 2 = d2 r(t) dt 2 75 a y (t) = dv y(t) dt = d2 y(t) dt 2. (2.2)

4 76 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ y v y v a x v x r a y a ^y x^ x Σχήμα 2.1: Τροχιά κινητού υλικού σημείου στο επίπεδο. Φαίνονται τα διανύσματα θέσης r, ταχύτητας v και επιτάχυνσης a και οι αντίστοιχες καρτεσιανές συντεταγμένες στο επιλεγμένο σύστημα αναφοράς σε ένα σημείο της τροχιάς. Στην παράγραφο αυτή θα υποθέσουμε ότι μας δίνονται οι συναρτήσεις(x(t), y(t)). Από αυτές, παραγωγίζοντας σύμφωνα με τις παραπάνω σχέσεις, μπορούμε να πάρουμε την ταχύτητα και την επιτάχυνση. Σκοπός μας είναι να γράφουμε απλά προγράμματα τα οποία θα υπολογίζουν τις τιμές των συναρτήσεων αυτώνσεέναχρονικόδιάστημα [t 0,t f ]όπου t 0 ηαρχικήχρονικήστιγμήκαι t f ητελική. Ησυνεχείςσυναρτήσεις x(t),y(t),v x (t),v y (t)θαπροσεγγίζονται από μια διακριτή ακολουθία τιμών των συναρτήσεων στις χρονικές στιγμές t 0,t 0 +δt,t 0 +2δt,t 0 +3δt,...έτσιώστεόλεςοιτιμές t 0 +nδt t f 1. Αρχίζουμε σχεδιάζοντας το πρότυπο(template) ενός προγράμματος που θα κάνει τον παραπάνω υπολογισμό. Κάνοντας αυτό το σχεδιασμό προσεκτικά, τομόνοπουθαμαςαπασχολείκάθεφοράπουθέλουμεναμελετήσουμετην κίνηση ενός άλλου κινητού θα είναι η ειδική εφαρμογή των εξισώσεων κίνησης. Στο Σχήμα 2.2 φαίνεται το λογικό διάγραμμα των βασικών λειτουργιών του προγράμματος. Αυτό μας βοηθάει να έχουμε μία εποπτική εικόνα όταν προγραμματίζουμε τις λεπτομέρειες και μας βοηθάει να ελέγξουμε τη βασική λογική 1 Μπορείημεγαλύτερηαπότιςτιμέςαυτέςναείναιμικρότερηαπό t f καιηt f ναμη συμπεριλαμβάνεται στην ακολουθία.

5 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 77 Declare variables Define fixed parameters (PI,...) User Interface: Get input from user x0,y0, t0, tf, dt,... Print parameters to stdout Initialize variables and other parameters of the motion Open data file t = t0 END NO t < tf YES alculate x, y, vx, vy Print results in data file t = t + dt Σχήμα 2.2: Λογικό διάγραμμα ενός τυπικού προγράμματος των εξισώσεων κίνησης. του αλγόριθμου που θα χρησιμοποιήσουμε. Στα ορθογώνια παραλληλόγραμμα σκιαγραφούμε τις σημαντικές εντολές των δομικών στοιχείων του προγράμματος ενώ στους ρόμβους σημειώνουμε τις διακλαδώσεις(branching points) του προγράμματος που προκύπτουν από τις δυνατές τιμές μιας λογικής πρότασης. Με γραμμές ενώνουμε τη λογική σειρά με την οποία εκτελούνται οι διαδικασίες. Το πρώτο κομμάτι του προγράμματος κάνει τις απαραίτητες δηλώσεις των τύπων των μεταβλητών που θα χρησιμοποιήσουμε. Αν υπάρχουν παράμετροι που παραμένουν σταθερές κατά τη διάρκεια της εκτέλεσης του προγράμματος (λχ. π = , g = 9.81, κλπ)τιςορίζουμεεδώ. Στησυνέχειατο πρόγραμμα αλληλεπιδρά με το χρήστη(user interface) και ζητάει τις μεταβλητές παραμέτρουςπουκαθορίζειοχρήστης: x 0, y 0, t 0, t f, δt... Τοπρόγραμμα τυπώνειαυτέςτιςτιμέςστο stdoutγιαναμπορείοχρήστηςνατιςελέγξει ως προς την ορθότητα και να τις αποθηκεύσει για αναφορά στα δεδομένα του. Πριν τον κύριο υπολογισμό, ο χρήστης πρέπει να δώσει τις κατάλληλες αρχικές τιμέςσεορισμένεςμεταβλητές,ειδικάστοχρόνο t = t 0. Ο κύριος υπολογισμός γίνεται σε ένα βρόχο(loop) ο οποίος εκτελείται ό-

6 78 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ σοοχρόνος t t f. Υπολογίζονταιοιτιμέςτηςθέσηςκαιτηςταχύτητας x(t),y(t),v x (t),v y (t)καιτυπώνονταιμαζίμετοχρόνο tσεένααρχείο. Εδώ θακάνουμετησημαντικήγιαμαςσύμβασηστοφορμάτηςεξόδου.αυτόείναι σημαντικό ώστε να έχουμε ενιαίο λογισμικό ανάλυσης των αποτελεσμάτων. Ο- ρίζουμεσεκάθεγραμμήτουαρχείουαυτούοιπρώτεςπέντεστήλεςναείναιοι τιμές t, x, y, vx, vy.μπορούνναυπάρχουνκαιάλλεςστήλεςανχρειαστείστο ειδικό πρόβλημα που θα μελετάμε, αλλά οι πρώτες πέντε θα είναι πάντα αυτές. Αφού γίνει αυτό ειδικευόμαστε στο πρόβλημα που θα μελετήσουμε. Ας θεωρήσουμε αρχικά την περίπτωση ενός υλικού σημείου το οποίο εκτελεί ομαλή κυκλικήκίνηση. Θεωρούμετοκέντροτουκύκλου (x 0,y 0 ),τηνακτίνα Rκαι τη γωνιακή ταχύτητα ω να είναι οι βασικές παράμετροι που προσδιορίζουν την κίνηση.ηθέσηπάνωστονκύκλομπορείτότεναπροσδιοριστείαπότηγωνία θόπωςφαίνεταιστοσχήμα2.3.θαορίσουμετηναρχικήχρονικήστιγμή t 0 να είναι θ = 0. y (R cos θ, R sin θ ) θ (x,y) (x, y ) 0 0 y^ x^ x Σχήμα 2.3: Η τροχιά του υλικού σημείου που εκτελεί την ομαλή κυκλική κίνηση που υπολογίζει το πρόγραμμα ircle.f. Ετσι οι εξισώσεις που δίνουν τη θέση του κινητού κάθε χρονική στιγμή είναι x(t) = x 0 +Rcos(ω(t t 0 )) y(t) = y 0 +Rsin(ω(t t 0 )). (2.3)

7 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 79 Παραγωγίζοντας ως προς t παίρνουμε την ταχύτητα και την επιτάχυνση v x (t) = ωrsin(ω(t t 0 )) v y (t) = ωrcos(ω(t t 0 )), (2.4) a x (t) = ω 2 Rcos(ω(t t 0 )) = ω 2 (x(t) x 0 ) a y (t) = ω 2 Rsin(ω(t t 0 )) = ω 2 (y(t) y 0 ). (2.5) Από τις παραπάνω εξισώσεις παρατηρούμε τις γνωστές γεωμετρικές σχέσεις R v = 0( R r r 0, v R, vεφαπτόμενοστηντροχιά)και a = ω 2 R( R και a αντιπαράλληλα, a v). Μπορούμε τώρα να σχεδιάσουμε τη δομή των δεδομένων για το πρόγραμμα πουθαγράψουμε,ηοποίαστηνπερίπτωσήμαςείναιπολύαπλή. Ησταθερή γωνιακή ταχύτητα ω του υλικού σημείου αποθηκεύεται στην πραγματική (REAL)μεταβλητή omega. Τοκέντροτουκύκλου (x 0,y 0 ),ηακτίνα Rκαιη γωνία θ αντιστοιχούν στις REAL μεταβλητές x0, y0, R, theta. Οι χρονικές στιγμές που υπολογίζουμε τη θέση και ταχύτητα του κινητού καθορίζονται από τιςπαραμέτρους t 0,t f,δtπουαντιστοιχούνστοπρόγραμμαστις REALμεταβλητές t0, tf, dt. Η τρέχουσα θέση του κινητού (x(t), y(t)) υπολογίζεται και αποθηκεύεται στις REAL μεταβλητές x, y και η στιγμιαία του ταχύτητα (v x (t),v y (t))στις REALμεταβλητές vx, vy.οιδηλώσειςαυτέςγίνονταιστην αρχή του προγράμματος με τις εντολές: real x0,y0,r,x,y,vx,vy,t,t0,tf,dt,pi real theta,omega parameter(pi= ) όπουορίσαμεκαιτηντιμή 2 του π = μετηνεντολή parameter. Το διαδραστικό με το χρήστη κομμάτι του προγράμματος(user interface) ζητάει από το χρήστη τις τιμές των παραμέτρων που του δίνουμε τη δυνατότηταναπροσδιορίζει: omega, x0, y0, R, t0, tf, dt.αρχικάτοπρόγραμμα τυπώνει ένα μήνυμα προτροπής(prompt) στο χρήστη προσδιορίζοντας τη μεταβλητή που ζητά να διαβάσει. Αυτό γίνεται με απλές print εντολές. Η ανάγνωση των τιμών των παραμέτρων γίνεται από το stdin με εντολές read(5,*). Το 2 Θυμίζουμεστοναναγνώστηότιοιμεταβλητές REALμονήςακρίβειας(4 bytes)έχουν ακρίβεια περίπου 7 δεκαδικών ψηφίων.

8 80 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ 5 είναι που προσδιορίζει να διαβαστεί μία γραμμή από το stdin. Αφού διαβαστούν οι παράμετροι, το πρόγραμμα τυπώνει τις τιμές που διάβασε στο stdout. Αυτό γίνεται για να αποφευχθούν τυπογραφικά λάθη και για να ενημερωθεί ο χρήστης για την τιμή που πραγματικά διάβασε το πρόγραμμα στη μνήμη του υπολογιστή. Επίσης, οδηγώντας το stdout σε ένα αρχείο στο σκληρό δίσκο, ο χρήστης μπορεί να αποθηκεύσει τα δεδομένα που εισήγαγε για μελλοντική αναφορά και για χρήση στην ανάλυση των αποτελεσμάτων του: print *, # Enter omega: read(5,*)omega print *, # Enter center of circle (x0,y0) and radius R: read(5,*)x0,y0,r print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # omega=,omega print *, # x0=,x0, y0=,y0 print *, # t0=,t0, tf=,tf, dt=,dt Στη συνέχεια το πρόγραμμα θέτει την απαραίτητη αρχική κατάσταση για ναγίνειουπολογισμός. Αυτό,εκτόςαπότοναθέσειτηντιμήτουαρχικού χρόνου t = t0, περιλαμβάνει και βασικό έλεγχο για τη νομιμότητα των παραμέτρων που εισήγαγε ο χρήστης. Οι έλεγχοι είναι απαραίτητοι γιατί όταν γράφουμε ένα πρόγραμμα κάνουμε ορισμένες υποθέσεις απαραίτητες για την ορθή λειτουργία του προγράμματος που μπορεί ο χρήστης από σφάλμα ή ά- γνοια να μην έχει σεβαστεί. Οταν, για παράδειγμα, γράφουμε την έκφραση 2.0*PI/omega υποθέτουμε ότι η τιμή του omega είναι μη μηδενική ώστε να γίνει η διαίρεση χωρίς να προκύψει μοιραίο σφάλμα κατά την εκτέλεση του προγράμματος. Το πρόγραμμά μας για να λειτουργήσει όπως το σχεδιάσαμε θα απαιτήσουμεναέχουμε R > 0και ω > 0.Αυτόθατοελέγξουμεμεμίαεντολή if και αν δεν πληρούνται οι υποθέσεις σταματάμε τελείως το πρόγραμμα με την εντολή stop 3. Τοπρόγραμμαεπίσηςθαανοίξειτοαρχείο ircle.datστο οποίο θα αποθηκεύσουμε τις υπολογισμένες τιμές της θέσης και ταχύτητας του κινητού. if(r.le. 0.0) stop Illegal value of R if(omega.le. 0.0) stop Illegal value of omega print *, # T=,2.0*PI/omega 3 Παρατηρήστεπωςδενελέγξαμεόλεςτιςυποθέσειςπουκάνουμεστοπρόγραμμα.Προσθέστε εσείς τις αναγκαίες σχετικές εντολές.

9 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 81 open(unit=11,file= ircle.dat ) t = t0 Αν R 0ήω 0,τότεεκτελούνταιοιαντίστοιχεςεντολές stop. Μετά την εντολή stop βάζουμε ένα πληροφοριακό μήνυμα στο χρήστη, ώστε να ξέρει γιατί σταμάτησε το πρόγραμμα, το οποίο τυπώνεται στο stdout όταν εκτελείται η εντολή stop. Επίσης υπολογίζουμε και τυπώνουμε την περίοδο τηςκυκλικήςκίνησης T = 2π/ω.Στηνεντολή openεπιλέξαμετο unit 11για να γράφουμε στο ircle.dat. Η επιλογή του αριθμού αυτού είναι ελεύθερη για τον προγραμματιστή που μπορεί αν είναι ήσυχος αν διαλέξει έναν οποιοδήποτε αριθμόαπό10έως99πουδεχρησιμοποιείταιήδη. Τώραείμαστεστηφάσηπουμπορείναγίνειουπολογισμός.Αυτόθαγίνει μεέναβρόχοτηςμορφής t = t0 do while(t.le. tf)... t = t + dt enddo Ηπρώτηεντολή(πουτηδείξαμεκαιπαραπάνω)θέτειτηναρχικήτιμήτου χρόνου. Οι εντολές που περικλείονται ανάμεσα στο do while( συνθήκη ) και enddo εκτελούνται όσο η συνθήκη είναι αληθής. Προσέξτε τη σημασία της εντολής t = t + dt χωρίς την οποία ο βρόχος θα εκτελείται επ αόριστον. Στο ειδικό πρόβλημα που μελετάμε, οι εντολές που μπαίνουν στη θέση των... υπολογίζουν τη θέση και την ταχύτητα και τις τυπώνουν στο αρχείο ircle.dat: theta = omega * (t-t0) x = x0+r*cos(theta) y = y0+r*sin(theta) vx = -omega*r*sin(theta) vy = omega*r*cos(theta) write(11,*)t,x,y,vx,vy Στον υπολογισμό χρησιμοποιούμε τις συναρτήσεις sin και cos που είναι κτισμένες μέσα στη Fortran 77. Χρησιμοποιούμε την ενδιάμεση μεταβλητή theta γιαναυπολογίσουμετηφάση θ(t) = ω(t t 0 ). Μετηνεντολή write(11,*) γράφουμε στο unit 11 το οποίο συνδέσαμε παραπάνω χρησιμοποιώντας την εντολή open με το αρχείο ircle.dat.

10 82 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Το πρόγραμμα το πληκτρολογούμε στο αρχείο ircle.f. Η κατάληξη.f υποδηλώνει στο μεταγλωττιστή ότι το αρχείο περιέχει κώδικα στη γλώσσα Fortran 77. Για να το μεταγλωττίσουμε και να το τρέξουμε δίνουμε τις εντολές: > f77 ircle.f -o cl >./cl Με το διακόπτη -o cl δίνουμε την εντολή στο μεταγλωττιστή f77 να ονομάσει τοεκτελέσιμοαρχείο 4 cl. Ηδεύτερηεντολή(./cl)φορτώνειτιςμεταγλωττισμένες εντολές στη μνήμη του υπολογιστή για εκτέλεση. Στη συνέχεια το πρόγραμμά μας ζητάει τα δεδομένα και εκτελεί τον υπολογισμό. Μια πλήρης τυπική συνεδρία εκτέλεσης του προγράμματος δείχνεται παρακάτω: > f77 ircle.f -o cl >./cl # Enter omega: 1.0 # Enter center of circle (x0,y0) and radius R: # Enter t0,tf,dt: # omega= 1. # x0= 1. y0= 1. R= 0.5 # t0= 0. tf= 20. dt= # T= Οι γραμμές που αρχίζουν από # τυπώνονται από το πρόγραμμα ενώ οι γραμμές με αριθμούς χωρίς # είναι οι αριθμητικές τιμές των παραμέτρων που εισάγει ο χρήστης. Αφού πληκτρολογήσει τα δεδομένα, ο χρήστης χρησιμοποιεί το πλήκτρο Enter για να τα εισάγει στη μνήμη του υπολογιστή που χρησιμοποιεί τοπρόγραμμα.εδώ ω = 1.0, x 0 = y 0 = 1.0, R = 0.5, t 0 = 0.0, t f = 20.0και δt = Το πρόγραμμα μπορείτε να το εκτελέσετε πολλές φορές για διαφορετικές τιμέςτωνπαραμέτρωνμετηβοήθειατου editor. Σεένααρχείομεόνομαλ.χ. ircle.in τυπώστε τα δεδομένα που θέλετε να εισάγετε στο πρόγραμμα: 1.0 omega 4 Θυμίζουμεότιανδεβάλουμετοδιακόπτηαυτότοεκτελέσιμοαρχείοθαονομαστείαπό το μεταγλωττιστή a.out από προεπιλογή.

11 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ (x0, y0), R t0 tf dt Σε κάθε γραμμή του αρχείου βάζουμε τις τιμές των παραμέτρων που διαβάζει κάθε εντολή read με τη σωστή σειρά. Αφού δώσουμε όλες τις παραμέτρους, η Fortran 77προχωράειστηνεπόμενηεντολήκαιηεπόμενηεντολή readθα διαβάσει μια νέα σειρά από το αρχείο. Ετσι δίπλα από τις παραμέτρους βάζουμε σχόλια για το χρήστη που του θυμίζουν τη σειρά που διαβάζονται οι μεταβλητές καιπουτοπρόγραμμαθααγνοήσει. Τοπρόγραμματώραμπορούμενατο τρέξουμε με την εντολή: >./cl < ircle.in > ircle.out Η εντολή./cl τρέχει τις εντολές που περιέχονται στο εκτελέσιμο αρχείο cl. Το < ircle.in οδηγεί τα περιεχόμενα του αρχείου ircle.in στο standard input(stdin) του προγράμματος, εξαναγκάζοντας το cl να διαβάσει τα δεδομένα από το αρχείο αυτό. Το > ircle.out οδηγεί το stdout του προγράμματος cl στο αρχείο ircle.out του οποίου τα περιεχόμενα μπορούμε να τα δούμε, αφού τρέξουμε το πρόγραμμα, με την εντολή cat: > cat ircle.out # Enter omega: # Enter center of circle (x0,y0) and radius R: # Enter t0,tf,dt: # omega= 1. # x0= 1. y0= 1. R= 0.5 # t0= 0. tf= 20. dt= # T= Κλείνουμε την παράγραφο αυτή παραθέτοντας για διευκόλυνση του αναγνώστη ολόκληρο το πρόγραμμα που πληκτρολογήσαμε στο αρχείο ircle.f: File ircle.f onstant angular velocity circular motion Set (x0,y0) center of circle, its radius R and omega. At t=t0, the particle is at theta= program ircle implicit none

12 84 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Declaration of variables real x0,y0,r,x,y,vx,vy,t,t0,tf,dt,pi real theta,omega parameter(pi= ) Ask user for input: print *, # Enter omega: read(5,*)omega print *, # Enter center of circle (x0,y0) and radius R: read(5,*)x0,y0,r print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # omega=,omega print *, # x0=,x0, y0=,y0, R=,R print *, # t0=,t0, tf=,tf, dt=,dt Initialize if(r.le. 0.0) stop Illegal value of R if(omega.le. 0.0) stop Illegal value of omega print *, # T=,2.0*PI/omega open(unit=11,file= ircle.dat ) ompute: t = t0 do while(t.le. tf) theta = omega * (t-t0) x = x0+r*cos(theta) y = x0+r*sin(theta) vx = -omega*r*sin(theta) vy = omega*r*cos(theta) write(11,*)t,x,y,vx,vy t = t + dt enddo close(11) end

13 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ Απεικόνιση των Δεδομένων Οι γραφικές παραστάσεις των αποτελεσμάτων που πήραμε στην προηγούμενη παράγραφο μελετώνται με τη βοήθεια του προγράμματος gnuplot. Υπενθυμίζουμε ότι τα δεδομένα το πρόγραμμά μας τα αποθηκεύει στο αρχείο ircle.dat σεπέντεστήλες: Η1ηείναιοχρόνος t,η2ηκαι3ηοισυντεταγμένες x, y και η 4η και 5η οι συντεταγμένες της ταχύτητας vx, vy. Τα διαγράμματα x(t) και y(t) παράγονται από τις εντολές(που δίνονται μέσα από το gnuplot) και μπορείτε να τα δείτε στο(αριστερό) Σχήμα 2.4: gnuplot> plot "ircle.dat" using 1:2 with lines title "x(t)" gnuplot> replot "ircle.dat" using 1:3 with lines title "y(t)" x(t) y(t) 4 3 theta(t) pi -pi Σχήμα 2.4: Τα διαγράμματα (x(t), y(t))(αριστερά) και θ(t)(δεξιά) των δεδομένων που παράγονταιαπότοπρόγραμμα ircle.fγια ω = 1.0, x 0 = y 0 = 1.0, R = 0.5, t 0 = 0.0, t f = 20.0και δt = Η δεύτερη εντολή(replot) βάζει τη δεύτερη γραφική παράσταση μαζί με την πρώτη. Ας δούμε τώρα πώς μπορούμε να φτιάξουμε τη γραφική παράσταση της γωνίας θ(t). Αυτόμπορούμενατοκάνουμεμέσααπότο gnuplot,χωρίςνα γράψουμε κάποιο καινούργιο πρόγραμμα, από τα δεδομένα μέσα στο αρχείο ircle.dat. Παρατηρούμεότι θ(t) = tan 1 ((y y 0 )/(x x 0 )).Ησυνάρτηση atan2(πουυπάρχεικαιστη Fortran)είναιδιαθέσιμηστο gnuplot 5. Για να βρούμε πώς δουλεύει χρησιμοποιούμε τη βοήθεια στο gnuplot: 5 Οπωςκαιόλεςοιμαθηματικέςσυναρτήσειςπουυπάρχουνστημαθηματικήβιβλιοθήκη της γλώσσας. Δώστε την εντολή help functions για να δείτε σχετικά.

14 86 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ gnuplot> help atan2 The atan2(y,x) function returns the arc tangent (inverse tangent) of the ratio of the real parts of its arguments. atan2 returns its argument in radians or degrees, as selected by set angles, in the correct quadrant. Άρα αρκεί να καλέσουμε τη συνάρτηση αυτή με εντολή της μορφής atan2(y-y0,x-x0). Στηνπερίπτωσήμας x0=y0=1ενώτα x,yείναιαντίστοιχαστη2ηκαι3ηστήλη κάθε γραμμής του αρχείου ircle.dat. Θα φτιάξουμε μία κατάλληλη έκφραση στηνεντολή usingστο gnuplotόπωςκαιστησελίδα58όπου $2ητιμήτης 2ηςκαι $3ητιμήτης3ηςστήλης: gnuplot> x0 = 1 ; y0 = 1 gnuplot> plot "ircle.dat" using 1:(atan2($3-y0,$2-x0)) \ with lines title "theta(t)",pi,-pi Ηδεύτερηεντολήδίνεταισεμίαγραμμήτηνοποίατησπάσαμεμετοχαρακτήρα \ώστεναχωράειστοκείμενο 6. Προσέξτεπώςορίσαμετιςτιμέςτων μεταβλητών x0,y0 μέσα στο gnuplot και τις χρησιμοποιήσαμε στην έκφραση atan2($3-x0,$2-y0) αντί(ισοδύναμα) να γράφαμε atan2($3-1,$2-1). Επίσης μαζί με τη γραφική παράσταση της θ(t) κάνουμε και τις γραφικές παραστάσειςτωνσταθερώνσυναρτήσεωνf 1 (t) = π, f 2 (t) = πώστεναελέγξουμε ταόριατωντιμώντης θ(t). Ημεταβλητή 7 piστο gnuplotέχειορισμένηεσωτερικάτηντιμή π. Τοαποτέλεσμαμπορείτενατοδείτεστο(δεξί)Σχήμα 2.4. Οισυνιστώσεςτωνταχυτήτων (v x (t),v y (t))σασυνάρτησητουχρόνουκαι η τροχιά του υλικού σημείου r(t) μπορούν να απεικονιστούν με τις εντολές: gnuplot> plot "ircle.dat" using 1:4 title "v_x(t)" with lines gnuplot> replot "ircle.dat" using 1:5 title "v_y(t)" with lines gnuplot> plot "ircle.dat" using 2:3 title "x-y" with lines Η τελευταία εντολή τοποθετεί τα σημεία x,y στο επίπεδο αφού αυτά βρίσκονται στις στήλες 2 και 3 αντίστοιχα. Κλείνουμε αυτήν την παράγραφο δείχνοντας πώς μπορούμε να δούμε το υλικό σημείο να κινείται κάνοντας στοιχειώδες animation με το gnuplot. Για το σκοπό αυτό έχουμε ένα αρχείο animate2d.gnu στο συνοδευτικό λογισμικό το οποίο θα πρέπει να αντιγράψετε μέσα στον κατάλογο που έχετε το αρχείο των 6 Αυτόεπιτρέπεταινατοκάνετεκαιμέσαστοπρόγραμμα gnuplotαντοθέλετε. 7 Δώστετηνεντολήshow variablesγιαναδείτετιςορισμένεςμεταβλητέςστοgnuplot.

15 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ t= (x,y)= ( , ) Σχήμα 2.5: Η τροχιά του υλικού σημείο όπως απεικονίζεται κάθε χρονική στιγμή από το πρόγραμμα animate2d.gnu του συνοδευτικού λογισμικού που τρέχει μέσα από το gnuplot. Φαίνεται το διάνυσμα θέσης και στον τίτλο του διαγράμματος η χρονική στιγμή t και αντίστοιχη θέση (x,y). Τα δεδομένα είναι από το πρόγραμμα ircle.f που περιγράφεται στο κείμενο. δεδομένων σας ircle.dat και από όπου θα δώσετε και την εντολή gnuplot. Δενείναισκοπόςεδώνασαςεξηγήσουμεπώςδουλεύειαλλάπώςνατοχρησιμοποιείτε 8.ΣτοΣχήμα2.5φαίνεταιτοτελικόαποτέλεσμα.Οιεντολέςείναι απλές. Αρκείναορίσουμεαπόποιοαρχείοναδιαβάσουμεταδεδομένα 9,τον αρχικόχρόνοαπεικόνισης t0τηςτροχιάς,τοντελικό tfκαθώςκαιτοβήμα dt. Οιχρόνοιαυτοίδενείναιανάγκηναείναιοιίδιοιμεαυτούςπουβάλαμε στα δεδομένα όταν τρέχαμε το πρόγραμμα που βρίσκεται στο αρχείο ircle.f. Ετσι μπορούμε να ρυθμίσουμε πόσο αργά ή γρήγορα θα τρέχει το υλικό σημείο στην οθόνη μας μεταβάλλοντας το dt. Η αν θέλουμε να απεικονίσουμε ένα συγκεκριμένο χρονικό διάστημα μπορούμε να μεταβάλλουμε τα t0, tf. Οι εντολές που δίνουμε είναι οι gnuplot> file = "ircle.dat" 8 Φυσικάμπορείτεναδείτεταπεριεχόμενάτουκαιναμαντέψετεπώςδουλεύει,είναιαρκετά απλό. 9 Μπορείναείναιοποιοδήποτεαρχείοτουοποίουη1η,2ηκαι3ηστήληέχειτοχρόνο t και x και y συνιστώσες της θέσης του υλικού σημείο στο επίπεδο αντίστοιχα.

16 88 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ gnuplot> set xrange [0:1.6]; set yrange [0:1.6] gnuplot> t0 = 0; tf = 20 ; dt = 0.1 gnuplot> load "animate2d.gnu" Η πρώτη εντολή καθορίζει το αρχείο από όπου το animate2d.gnu θα διαβάσει τα δεδομένα από την 1η-3η στήλη του. Η δεύτερη εντολή καθορίζει τις παραμέτρους του χρόνου που θα χρησιμοποιηθούν στο animation(αρχικός, τελικός καιβήμα). Ητρίτηορίζειταόριαστουςάξονες xκαι y. Καιητέταρτηείναι η εντολή που τρέχει το animation. Αν θέλετε να ξανατρέξει το animation αρκεί να δώσετε την τελευταία εντολή όσες φορές θέλετε. Τις τρεις πρώτες τις δίνετε όταν θέλετε να αλλάξετε τις αντίστοιχες παραμέτρους. Λ.χ. αν θέλετε νατρέξετετο animationσταίδιαδεδομέναμετη μισήταχύτητα αρκείναξαναορίσετε το dt=0.05, να επαναφέρετε το χρόνο t0=0 και να δώσετε μόνο τις εντολές gnuplot> t0 = 0; dt = 0.05 gnuplot> load "animate2d.gnu" Άλλα Παραδείγματα Ας εφαρμόσουμε όσα κάναμε για την απλή κυκλική κίνηση και σε διαφορετικά παραδείγματα κίνησης στο επίπεδο. Το πρώτο πρόβλημα που θα παρουσιάσουμε είναι αυτό του απλού εκκρεμούς που εκτελεί μικρές ταλαντώσεις γύρω από την κατακόρυφο και που φαίνεται στο Σχήμα 2.6. Η κίνηση περιγράφεται από y x θ l T mg Σχήμα2.6: Τοαπλόεκκρεμέςτουοποίουηκίνησηγια θ 1περιγράφεταιαπότοπρόγραμμα SimplePendulum.f. τη χρονική εξάρτηση του μοναδικού βαθμού ελευθερίας του συστήματος, της

17 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 89 γωνίας θ(t). Ηκίνησηείναιπεριοδικήμεγωνιακήσυχνότητα ω = g/lκαι περίοδο T = 2π/ω.Ηγωνιακήταχύτηταυπολογίζεταιαπότησχέση θ dθ/dt και παίρνουμε: θ(t) = θ 0 cos(ω(t t 0 )) θ(t) = ωθ 0 sin(ω(t t 0 )) (2.6) Μετιςπαραπάνωσχέσειςέχουμεεπιλέξειτιςαρχικέςσυνθήκες θ(0) = θ 0, θ(0) = 0. Για να γράψουμε τις εξισώσεις της τροχιάς στο καρτεσιανό σύστημα συντεταγμένων του Σχήματος 2.6 χρησιμοποιούμε τις σχέσεις x(t) = lsin(θ(t)) y(t) = lcos(θ(t)) v x (t) = dx(t) = l θ(t)cos(θ(t)) dt v y (t) = dy(t) = l θ(t)sin(θ(t)) (2.7) dt Αυτές είναι οι ανάλογες των εξισώσεων (2.3) και (2.4) για την περίπτωση της ομαλής κυκλικής κίνησης. Ετσι ο σχεδιασμός του προγράμματος γίνεται με παρόμοιο τρόπο. Η τελική του μορφή, την οποία βρίσκουμε στο αρχείο SimplePendulum.f στο συνοδευτικό λογισμικό είναι: File SimplePendulum.f Set pendulum original position at theta0 with no initial speed program SimplePendulum implicit none Declaration of variables real l,g,x,y,vx,vy,t,t0,tf,dt,pi real theta,theta0,dtheta_dt,omega parameter(pi= ,g=9.81) Ask user for input: print *, # Enter l: read(5,*)l print *, # Enter theta0:

18 90 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ read(5,*)theta0 print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # l=,l, theta0=,theta0 print *, # t0=,t0, tf=,tf, dt=,dt Initialize omega = sqrt(g/l) print *, # omega=,omega, T=,2.0*PI/omega open(unit=11,file= SimplePendulum.dat ) ompute: t = t0 do while(t.le. tf) theta = theta0*cos(omega*(t-t0)) dtheta_dt = -omega*theta0*sin(omega*(t-t0)) x = l*sin(theta) y = -l*cos(theta) vx = l*dtheta_dt*cos(theta) vy = l*dtheta_dt*sin(theta) write(11,100)t,x,y,vx,vy,theta,dtheta_dt t = t + dt enddo close(11) 100 FORMAT(7G15.7) end Τα μόνα σημεία που θα σημειώσουμε στον αναγνώστη είναι ότι την επιτάχυνση τηςβαρύτητας gτηθέτουμεσταθερήστοπρόγραμμακαιοχρήστηςμπορείνα καθορίσει το μήκος του εκκρεμούς l και ότι το αρχείο των δεδομένων περιέχει εκτόςαπότιςστήλες1-5καιάλλες2στιςοποίεςμπορούμεναδούμετηγωνία και στιγμιαία γωνιακή ταχύτητα του εκκρεμούς. Στην εντολή write(11,100) παραπέμπουμε σε κατάλληλη εντολή FORMAT έτσι ώστε τα δεδομένα να τυπώνονταισεμίαγραμμή.δείτετησυζήτησηστησελίδα52. Μια απλή συνεδρία μελέτης του προβλήματος συνοψίζεται παρακάτω: > f77 SimplePendulum.f -o sp >./sp # Enter l:

19 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ # Enter theta0: # Enter t0,tf,dt: # l= 1. theta0= # t0= 0. tf= 20. dt= # omega= T= > gnuplot gnuplot> plot "SimplePendulum.dat" using 1:2 with lines title "x(t)" gnuplot> plot "SimplePendulum.dat" using 1:3 with lines title "y(t)" gnuplot> plot "SimplePendulum.dat" using 1:4 with lines title "v_x(t)" gnuplot> replot "SimplePendulum.dat" using 1:5 with lines title "v_y(t)" gnuplot> plot "SimplePendulum.dat" using 1:6 with lines title "theta(t)" gnuplot> replot "SimplePendulum.dat" using 1:7 with lines title "theta (t)" gnuplot> plot [-0.6:0.6][-1.1:0.1] "SimplePendulum.dat" \ using 2:3 with lines title "x-y" gnuplot> file = "SimplePendulum.dat" gnuplot> t0=0;tf=20.0;dt=0.1 gnuplot> set xrange [-0.6:0.6];set yrange [-1.1:0.1] gnuplot> load "animate2d.gnu" Το επόμενο πρόβλημα θα είναι η μελέτη της βολής υλικού σημείου κοντά στηνεπιφάνειατηςγης 10 αγνοώνταςόλεςτιςδυνάμειςτριβήςτουαέρα. Οπως γνωρίζουμε, η τροχιά του σωματιδίου και η ταχύτητά του δίνονται από τις παραμετρικές εξισώσεις με παράμετρο το χρόνο: x(t) = v 0x t y(t) = v 0y t 1 2 gt2 v x (t) = v 0x v y (t) = v 0y gt (2.8) όπουέχουμευποθέσειτιςαρχικέςσυνθήκες x(0) = y(0) = 0, v x (0) = v 0x = v 0 cosθκαι v y (0) = v 0y = v 0 sinθσύμφωναμετοσχήμα2.7. Η δομή του προγράμματος είναι παρόμοια με τα προηγούμενα. Διαλέγουμεοχρήστηςναεισάγειτομέτροτηςαρχικήςταχύτηταςκαιτηγωνία θσε 10 Δηλ. g =σταθ.καιηεπίδρασητηςδύναμης oriolisαμελητέα.

20 92 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Σχήμα 2.7: Βολή υλικού σημείου κοντά στην επιφάνεια της γης με x(0) = y(0) = 0, v x (0) = v 0x = v 0 cosθκαι v y (0) = v 0y = v 0 sinθ. μοίρες που σχηματίζει με την οριζόντια διεύθυνση. Εδώ παίρνουμε το χρόνο t 0 = 0. Τοπρόγραμμαυπολογίζειτις v 0x και v 0y καιτιςτυπώνειστοχρήστη στο stdout. Τα δεδομένα σώζονται στο αρχείο Projectile.dat. Το πρόγραμμα δίνεται ολόκληρο παρακάτω και βρίσκεται στο αρχέιο Projectile.f του συνοδευτικού λογισμικού. File Projectile.f Shooting a progectile near the earth surface. No air resistance Starts at (0,0), set (v0,theta) program Projectile implicit none Declaration of variables real x0,y0,r,x,y,vx,vy,t,tf,dt,pi,g real theta,v0x,v0y,v0 parameter(pi= ,g=9.81) Ask user for input: print *, # Enter v0,theta (in degrees): read(5,*)v0,theta print *, # Enter tf,dt: read(5,*) tf,dt print *, # v0=,v0, theta=,theta, o (degrees)

21 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 93 print *, # t0=,0.0, tf=,tf, dt=,dt Initialize if( v0.le. 0.0) stop Illegal value of v0<=0 if( theta.le. 0.0.or. theta.ge. 90.0) * stop Illegal value of theta theta = (PI/180.0)*theta!convert to radians v0x = v0*cos(theta) v0y = v0*sin(theta) print *, # v0x =,v0x, v0y=,v0y open(unit=11,file= Projectile.dat ) ompute: t = 0.0 do while(t.le. tf) x = v0x * t y = v0y * t - 0.5*g*t*t vx = v0x vy = v0y - g*t write(11,*)t,x,y,vx,vy t = t + dt enddo close(11) end Για διευκόλυνση του αναγνώστη, δίνουμε πάλι τις εντολές μιας τυπικής συνεδρίας μελέτης του προβλήματος: > f77 Projectile.f -o pj >./pj # Enter v0,theta (in degrees): # Enter tf,dt: # v0= theta= o (degrees) # t0= tf= dt= E-03 # v0x = v0y= > gnuplot gnuplot> plot "Projectile.dat" using 1:2 with lines title "x(t)"

22 94 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ gnuplot> replot "Projectile.dat" using 1:3 with lines title "y(t)" gnuplot> plot "Projectile.dat" using 1:4 with lines title "v_x(t)" gnuplot> replot "Projectile.dat" using 1:5 with lines title "v_y(t)" gnuplot> plot "Projectile.dat" using 2:3 with lines title "x-y" gnuplot> file = "Projectile.dat" gnuplot> set xrange [0:10.3];set yrange [0:10.3] gnuplot> t0=0;tf=1.4416;dt=0.05 gnuplot> load "animate2d.gnu" Στησυνέχειααςδούμετοσύστημαότανστουλικόσημείοδραομαλήαντίστασηαπόέναρευστότηςμορφής F = mk v,δηλ. μιαδύναμηπουείναι αντίθετη με την ταχύτητα σε κάθε χρονική στιγμή. Οι λύσεις των εξισώσεων κίνησης Σχήμα 2.8: Οι δυνάμεις που ασκούνται στο σωματίδιο του Σχήματος 2.7 όταν υποθέσουμε καιτηνύπαρξηαντίστασηςτουαέραανάλογηςτουμέτρουτηςταχύτητας F = mk v. a x = dv x dt = kv x a y = dv y dt = kv y g (2.9)

23 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 95 μεαρχικέςσυνθήκες x(0) = y(0) = 0, v x (0) = v 0x = v 0 cosθκαι v y (0) = v 0y = v 0 sinθέχουνλύση 11 v x (t) = v 0x e kt ( v y (t) = v 0y + g ) e kt g k k x(t) = v 0x ( ) 1 e kt k y(t) = 1 ( v 0y + g (1 e kt k k) ) g k t (2.10) Οι εξισώσεις αυτές προγραμματίζονται με παρόμοιο τρόπο όπως και στην περίπτωσητηςαπουσίαςτηςαντίστασηςτουαέρα. Ημόνηδιαφοράείναιότιο χρήστης εισάγει τη σταθερά k στα δεδομένα και φυσικά η μορφή των εξισώσεων. Το πρόγραμμα βρίσκεται στο αρχείο ProjectileAirResistance.f στο συνοδευτικό υλικό και παρατίθεται αυτούσιο παρακάτω: File ProjectileAirResistance.f Shooting a progectile near the earth surface with air resistance Starts at (0,0), set k, (v0,theta) program ProjectileAirResistance implicit none Declaration of variables real x0,y0,r,x,y,vx,vy,t,tf,dt,pi,g,k real theta,v0x,v0y,v0 parameter(pi= ,g=9.81) Ask user for input: print *, # Enter k, v0,theta (in degrees): read(5,*)k, v0,theta print *, # Enter tf,dt: read(5,*) tf,dt print *, # k =,k print *, # v0=,v0, theta=,theta, o (degrees) print *, # t0=,0.0, tf=,tf, dt=,dt 11 Οαναγνώστηςκαλείταινααποδείξειτιςεξισώσεις (2.10) σανάσκηση.

24 96 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Initialize if( v0.le. 0.0) stop Illegal value of v0<=0 if( k.le. 0.0) stop Illegal value of k <=0 if( theta.le. 0.0.or. theta.ge. 90.0) * stop Illegal value of theta theta = (PI/180.0)*theta!convert to radians v0x = v0*cos(theta) v0y = v0*sin(theta) print *, # v0x =,v0x, v0y=,v0y open(unit=11,file= ProjectileAirResistance.dat ) ompute: t = 0.0 do while(t.le. tf) x = (v0x/k)*(1.0-exp(-k*t)) y = (1.0/k)*(v0y+(g/k))*(1.0-exp(-k*t))-(g/k)*t vx = v0x*exp(-k*t) vy = (v0y+(g/k))*exp(-k*t)-(g/k) write(11,*)t,x,y,vx,vy t = t + dt enddo close(11) end Δίνουμε πάλι τις εντολές μιας τυπικής συνεδρίας μελέτης του προβλήματος: > f77 ProjectileAirResistance.f -o pja >./pja # Enter k, v0,theta (in degrees): # Enter tf,dt: # k = 5. # v0= 10. theta= 45.o (degrees) # t0= 0. tf= dt= # v0x = v0y= > gnuplot gnuplot> v0x = 10*cos(pi/4) ; v0y = 10*sin(pi/4) ;g = 9.81 ; k = 5

25 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ x(t) v0x/k y(t) -(g/k)*x+(g/k**2)+v0y/k 8 7 v_x(t) 0 v_y(t) -g/k Σχήμα2.9: Ταδιαγράμματα x(t),y(t)(αριστερά)και v x (t),v y (t)(δεξιά)τωνδεδομένων πουπαράγονταιαπότοπρόγραμμα ProjectileAirResistance.fγια k = 5.0, v 0 = 10.0, θ = π/4, t f = 0.91και δt = Φαίνονταικαιοιασύμπτωτεςτωνσυναρτήσεωνκαθώς t. gnuplot> plot [:][:v0x/k+0.1] "ProjectileAirResistance.dat" \ using 1:2 with lines title "x(t)",v0x/k gnuplot> replot "ProjectileAirResistance.dat" \ using 1:3 with lines title "y(t)",-(g/k)*x+(g/k**2)+v0y/k gnuplot> plot [:][-g/k-0.6:] "ProjectileAirResistance.dat" \ using 1:4 with lines title "v_x(t)",0 gnuplot> replot "ProjectileAirResistance.dat" \ using 1:5 with lines title "v_y(t)",-g/k gnuplot> plot "ProjectileAirResistance.dat" \ using 2:3 with lines title "With air resistance k=5.0" gnuplot> replot "Projectile.dat" \ using 2:3 with lines title "No air resistance k=0.0" gnuplot> file = "ProjectileAirResistance.dat" gnuplot> set xrange [0:1.4];set yrange [0:1.4] gnuplot> t0=0;tf=0.91;dt=0.01 gnuplot> load "animate2d.gnu" Οπως και παραπάνω διπλώσαμε τις εντολές που δε χωρούσαν σε δύο γραμμές. Ορίσαμε τις μεταβλητές gnuplot v0x, v0y, g και k να έχουν τις τιμές που χρησιμοποιήσαμε όταν τρέξαμε το πρόγραμμα. Μπορούμε έτσι και κατασκευάζουμετιςασύμπτωτεςτωνσυναρτήσεων 12. Τααποτελέσματαφαίνονταιστα 12 Θυμίζουμεστοναναγνώστηότιηανεξάρτητημεταβλητήαπόπροεπιλογήστο gnuplot είναιηx.

26 98 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ 3 With air resistance k=5.0 No air resistance k= Σχήμα2.10: Οιτροχιέςτωνβλημάτωνπουβάλλονταιμε v 0 = 10.0, θ = π/4ότανδεν υπάρχειαντίστασητουαέρακαιότανυπάρχειμε k = 5.0. Σχήματα 2.9 και Το τελευταίο παράδειγμα που θα μελετήσουμε στην παράγραφο αυτή είναι αυτό του ανισότροπου αρμονικού ταλαντωτή. Αυτό είναι ένα υλικό σημείο υπό την επίδραση τις δύναμης F x = mω 2 1x F y = mω 2 2y (2.11) όπουοι σταθερέςτωνελατηρίων k 1 = mω 2 1 και k 2 = mω 2 2 είναιδιαφορετικές στις δύο ορθογώνιες κατευθύνσεις που ορίζονται από τους καρτεσιανούς άξονες xκαι y. Οιλύσειςτωνεξισώσεωναυτώνγια x(0) = A, y(0) = 0, v x (0) = 0 και v y (0) = ω 2 Aείναι x(t) = Acos(ω 1 t) y(t) = Asin(ω 2 t) v x (t) = ω 1 Asin(ω 1 t) v y (t) = ω 2 Acos(ω 2 t) (2.12) Γιαορισμένεςσχέσειςμεταξύτωνκυκλικώνσυχνοτήτων ω 1 και ω 2 οικαμπύλες των τροχιών του υλικού σημείου είναι κλειστές και αυτοτέμνονται σε ένα συγκεκριμένο αριθμό από σημεία. Θα αφήσουμε τον αναγνώστη να βρει τις σχέσεις αυτές και να τις επιβεβαιώσει από τα αριθμητικά αποτελέσματα που θα προκύψουν από το παρακάτω πρόγραμμα, το οποίο βρίσκεται στο αρχείο Lissajoux.f στο συνοδευτικό λογισμικό.

27 2.1. Κ ΙΝΗΣΗΣΤΟΕΠ ΙΠΕΔΟ 99 File Lissajous.f Lissajous curves (special case) x(t)= cos(o1 t), y(t)= sin(o2 t) program Lissajous implicit none Declaration of variables real x0,y0,r,x,y,vx,vy,t,t0,tf,dt,pi real o1,o2,t1,t2 parameter(pi= ) Ask user for input: print *, # Enter omega1 and omega2: read(5,*)o1,o2 print *, # Enter tf,dt: read(5,*)tf,dt print *, # o1=,o1, o2=,o2 print *, # t0=,0.0, tf=,tf, dt=,dt Initialize if(o1.le.0.0.or. o2.le.0.0) stop Illegal omega1 or omega2<=0 T1 = 2.0*PI/o1 T2 = 2.0*PI/o2 print *, # T1=,T1, T2=,T2 open(unit=11,file= Lissajous.dat ) ompute: t = 0.0 do while(t.le. tf) x = cos(o1*t) y = sin(o2*t) vx = -o1*sin(o1*t) vy = o2*cos(o2*t) write(11,*)t,x,y,vx,vy t = t + dt enddo close(11)

28 100 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ end Στοπαραπάνωπρόγραμμαέχουμεθέσει A = 1. Οχρήστηςεισάγειτιςδύο συχνότητες ω 1 και ω 2 καιτουςαντίστοιχουςχρόνους.εύκολαμπορούμενατο μελετήσουμε με τις εντολές > f77 Lissajous.f -o lsj >./lsj # Enter omega1 and omega2: 3 5 # Enter tf,dt: # o1= 3. o2= 5. # t0= 0. tf= 10. dt= # T1= T2= >gnuplot gnuplot> plot "Lissajous.dat" using 1:2 with lines title "x(t)" gnuplot> replot "Lissajous.dat" using 1:3 with lines title "y(t)" gnuplot> plot "Lissajous.dat" using 1:4 with lines title "v_x(t)" gnuplot> replot "Lissajous.dat" using 1:5 with lines title "v_y(t)" gnuplot> plot "Lissajous.dat" using 2:3 with lines title "x-y for 3:5" gnuplot> file = "Lissajous.dat" gnuplot> set xrange [-1.1:1.1];set yrange [-1.1:1.1] gnuplot> t0=0;tf=10;dt=0.1 gnuplot> load "animate2d.gnu" Στο Σχήμα 2.11 δείχνουμε το αποτέλεσμα για την τροχιά του ασύμμετρου αρμονικούταλαντωτήμε ω 1 = 3και ω 2 = Κίνηση στο Χώρο Στην παράγραφο αυτή θα κάνουμε μια απλή γενίκευση των μεθόδων που περιγράψαμε στις προηγούμενες παραγράφους για να μελετήσουμε την κίνηση ενός υλικού σωματιδίου στο χώρο. Οι μόνες αλλαγές θα είναι η προσθήκη μιας ακόμαεξίσωσηςγιατησυντεταγμένη z(t)καιτησυνιστώσατηςταχύτητας v z (t) και η μέθοδος απεικόνισης των τροχιών στο gnuplot. Τα προγράμματα που θαγράψουμεθαέχουνπαρόμοιαδομήμεαυτάπουγράψαμεγιατηνκίνηση σωματιδίου στο επίπεδο.

29 2.2. Κ ΙΝΗΣΗΣΤΟΧ ΩΡΟ 101 t= (x,y)= ( , ) Σχήμα2.11: Οιτροχιάτουασύμμετρουαρμονικούταλαντωτήμε ω 1 = 3και ω 2 = 5. Το πρώτο παράδειγμα που θα εξετάσουμε είναι το κωνικό εκκρεμές του Σχήματος Αυτό κινείται στο επίπεδο xy με σταθερή γωνιακή ταχύτητα ω. Οι εξισώσεις κίνησης δίνονται από τις σχέσεις T z = T cosθ = mg T xy = T sinθ = mω 2 r, (2.13) όπουφυσικά r = lsinθ.λύνονταςτιςπαραπάνωεξισώσεις 13 βρίσκουμε: x(t) = rcosωt y(t) = rsinωt z(t) = lcosθ (2.14) όπου στις παραπάνω αντικαθιστούμε τις τιμές cosθ = g ω 2 l sinθ = 1 cos 2 θ r = g ω 2 sinθ cosθ (2.15) 13 Φυσικάεπιλέγονταςτιςκατάλληλεςαρχικέςσυνθήκες(γράψτετις...).

30 102 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ x z ωt θ l r T xy T θ y v m g Σχήμα 2.12: Το κωνικό εκκρεμές του προγράμματος onicalpendulum.f. Για τις ταχύτητες έχουμε Από τα παραπάνω προκύπτει ότι v x = rωsinωt v y = rωcosωt v z = 0 (2.16) ω ω min = g l, (2.17) καιότικαθώς ω, θ π/2. Στοπρόγραμμαπουθαγράψουμεοχρήστηςδίνειτιςπαραμέτρους lκαι ω καιτουςχρόνους t f καιβήμαχρόνου δt(παίρνουμε t 0 = 0). Ησύμβασηγια την έξοδο των δεδομένων από το πρόγραμμα είναι ότι γράφονται σε ένα αρχείο, μίαγραμμήανάχρονικήστιγμή,όπουοι7πρώτεςστήλεςείναιοιτιμέςτων t, x, y, z, v x, v y και v z. Επειδήηγραμμήείναιμεγάληκαιδεθέλουμενατη σπάσει η Fortran, δίνουμε την κατάλληλη εντολή FORMAT. Δείτε τη συζήτηση στη σελίδα 52. Το πρόγραμμα παρατίθεται παρακάτω:

31 2.2. Κ ΙΝΗΣΗΣΤΟΧ ΩΡΟ 103 File onicalpendulum.f Set pendulum angular velocity omega and display motion in 3D program onicalpendulum implicit none Declaration of variables real l,g,r,x,y,z,vx,vy,vz,t,tf,dt,pi real theta,cos_theta,sin_theta,omega parameter(pi= ,g=9.81) Ask user for input: print *, # Enter l,omega: read(5,*)l,omega print *, # Enter tf,dt: read(5,*)tf,dt print *, # l=,l, omega=,omega print *, # T=,2.0*PI/omega, omega_min=,sqrt(g/l) print *, # t0=,0.0, tf=,tf, dt=,dt Initialize cos_theta = g/(omega*omega*l) if( cos_theta.ge. 1) stop cos(theta)>= 1 sin_theta = sqrt(1.0-cos_theta*cos_theta) z = -g/(omega*omega)!they remain constant throughout vz= 0.0!the motion r = g/(omega*omega)*sin_theta/cos_theta open(unit=11,file= onicalpendulum.dat ) ompute: t = 0.0 do while(t.le. tf) x = r*cos(omega*t) y = r*sin(omega*t) vx = -r*sin(omega*t)*omega vy = r*cos(omega*t)*omega write(11,100)t,x,y,z,vx,vy,vz

32 104 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ t = t + dt enddo close(11) 100 FORMAT(20G15.7) end Για να το μεταγλωττίσουμε και να το τρέξουμε κάνουμε τα γνωστά: > f77 onicalpendulum.f -o cpd >./cpd # Enter l,omega: # Enter tf,dt: # l= 1. omega= # T= omega_min= # t0= 0. tf= 10. dt= Τα αποτελέσματα θα τα βρούμε στο αρχείο onicalpendulum.dat. Για να δούμετιςγραφικέςπαραστάσειςτωνσυναρτήσεωνx(t),y(t),z(t),v x (t),v y (t),v z (t) εκτελούμε τις γνωστές εντολές μέσα από το gnuplot: > gnuplot gnuplot> plot "onicalpendulum.dat" u 1:2 with lines title "x(t)" gnuplot> replot "onicalpendulum.dat" u 1:3 with lines title "y(t)" gnuplot> replot "onicalpendulum.dat" u 1:4 with lines title "z(t)" gnuplot> plot "onicalpendulum.dat" u 1:5 with lines title "v_x(t)" gnuplot> replot "onicalpendulum.dat" u 1:6 with lines title "v_y(t)" gnuplot> replot "onicalpendulum.dat" u 1:7 with lines title "v_z(t)" Το αποτελέσματα φαίνονται στο Σχήμα Για να δούμε την τρισδιάστατη τροχιά στο χώρο, θα χρησιμοποιήσουμε την εντολή splot στο gnuplot: gnuplot> splot "onicalpendulum.dat" u 2:3:4 with lines title "r(t)" Το αποτέλεσμα φαίνεται στο Σχήμα Μπορούμε να κάνουμε κλικ πάνω στην τροχιά και να περιστρέψουμε την καμπύλη ώστε να τη δούμε από διαφορετικές οπτικές γωνίες. Μπορούμε να αλλάξουμε τα όρια στους άξονες ορίζοντάς τα ρητά στην εντολή splot:

33 2.2. Κ ΙΝΗΣΗΣΤΟΧ ΩΡΟ x(t) y(t) z(t) 8 6 v_x(t) v_y(t) v_z(t) Σχήμα2.13: Οιγραφικέςπαραστάσειςτωνσυναρτήσεων x(t),y(t),z(t),v x (t),v y (t),v z (t) προγράμματος onicalpendulum.f για ω = 6.28, l = 1.0. gnuplot> splot [-1.1:1.1][-1.1:1.1][-0.3:0.0] "onicalpendulum.dat" \ using 2:3:4 with lines title "r(t)" Στο συνοδευτικό λογισμικό περικλείεται και το αρχείο animate3d.gnu με το οποίο μπορούμε να κάνουμε απλά animations της τροχιάς της κίνησης ενός υλικού σημείου στο χώρο. Η εντολές που πρέπει να δώσουμε είναι ανάλογες με αυτές που δίναμε στην περίπτωση του animate2d.gnu με τη μόνη διαφορά ότι καλόείναιναορίσουμεταόριακαιστονάξονατων z.γιαναδούμετηντροχιά του κωνικού εκκρεμούς από τα δεδομένα που παρήγαμε παραπάνω, δίνουμε τις εντολές: gnuplot> set xrange [-1.1:1.1];set yrange [-1.1:1.1];set zrange [-0.3:0] gnuplot> t0=0;tf=10;dt=0.1 gnuplot> load "animate3d.gnu" ΤοαποτέλεσματοβλέπουμεστοΣχήμα2.15. Περιττόναπούμεπωςτοπρόγραμμα animate3d.gnu μπορεί να χρησιμοποιηθεί πάνω σε οποιοδήποτε αρχείο που περιέχει δεδομένα της μορφής t x y z στις πρώτες τέσσερις στήλες του. Απλάαλλάζουμετηντιμήτηςμεταβλητής fileστοόνοματουαρχείουπουθα μελετήσουμε. Οπως και με το animate2d.gnu μπορούμε να αλλάξουμε μόνο ό- ποιες από τις μεταβλητές file, t0, tf, dt είναι αναγκαίο πριν επαναλάβουμε το animation με την εντολή load "animate3d.gnu". Στη συνέχεια θα μελετήσουμε την τροχιά ενός φορτισμένου σωματιδίου πουεισέρχεταισεέναομογενέςμαγνητικόπεδίο B = Bẑτηχρονικήστιγμή t 0 = 0απότηθέση r 0 = x 0ˆxμεταχύτητα v 0 = v 0y ŷ +v 0z ẑόπωςφαίνεταιστο

34 106 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Σχήμα 2.14: Η γραφική παράσταση της τροχιάς r(t) του υλικού σημείου του προγράμματος onicalpendulum.f για ω = 6.28, l = 1.0. Φαίνεται το παράθυρο του gnuplot όπου μπορούμε να κάνουμε κλικ πάνω στην τροχιά και να περιστρέψουμε την καμπύλη ώστε να τη δούμε από διαφορετικές οπτικές γωνίες. Κάτω αριστερά βλέπουμε την οπτική διεύθυνση πουδίνεταιαντίστοιχααπότιςγωνίες θ = 55.0μοίρες(γωνίαμεάξονα z)και φ = 62μοίρες (γωνία με άξονα x), όμοια με τις σφαιρικές συντεταγμένες (θ, φ). Σχήμα Στο φορτίο εξασκείται από το μαγνητικό πεδίο η δύναμη Lorentz F = q( v B) = qbv yˆx qbv x ŷ.οιεξισώσειςκίνησηςείναι a x = dv x dt = ωv y ω qb m a y = dv y dt = ωv x. (2.18) Ολοκληρώνοντας τις παραπάνω εξισώσεις και λαμβάνοντας υπ οψη τις αρχικές συνθήκες παίρνουμε v x (t) = v 0y sinωt v y (t) = v 0y cosωt. (2.19) Με μία ακόμα ολοκλήρωση παίρνουμε τη θέση του σωματιδίου σε συνάρτηση μετοχρόνο ( x(t) = x 0 + v ) 0y v 0y ω ω cosωt = x 0cosωt y(t) = v 0y ω sinωt = x 0sinωt με x 0 = v 0y ω, (2.20)

35 2.2. Κ ΙΝΗΣΗΣΤΟΧ ΩΡΟ 107 t= (x,y,z)= ( , , ) z x y 1 Σχήμα 2.15: Η τροχιά r(t) του υλικού σημείου του προγράμματος onicalpendulum.f για ω = 6.28, l = 1.0όπωςφαίνεταιμετοπρόγραμμα animate3d.gnu.στοντίτλοβλέπουμε την τρέχουσα χρονική στιγμή και τις συντεταγμένες του υλικού σημείου. όπουκάναμετηνεπιλογή x 0 = v 0y /ωγιανακάνουμετοκέντροτηςκυκλικής τροχιάς να συμπίπτει με την αρχή των αξόνων. Το γεωμετρικό σχήμα της τροχιάςείναιμιασπείραμεακτίνα R = x 0 καιβήμα v 0z T = 2πv 0z /ω. Μεταπαραπάνωείναιεύκολοτώραναγράψουμεέναπρόγραμμαπουνα υπολογίζει την τροχιά του παραπάνω φορτίου. Οι παράμετροι που θα εισάγει ο χρήστηςείναιτομέτροτηςταχύτηταςv 0,τηγωνίαθσεμοίρες(βλ.Σχήμα2.16) καιτησυχνότητα ω.προφανώςθαέχουμε v 0y = v 0 cosθκαι v 0z = v 0 sinθ.η αρχικήθέσηυπολογίζεταιτότεαπότην x 0 = v 0y /ω. Τοπρόγραμμαδίνεται αυτούσιο παρακάτω και μπορείτε να το βρείτε στο αρχείο hargeinb.f στο συνοδευτικό λογισμικό: File hargeinb.f A charged particle of mass m and charge q enters a magnetic field B in +z direction. It enters with velocity v0x=0,v0y=v0 cos(theta),v0z=v0 sin(theta), 0<=theta<pi/2

36 108 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ B z v 0z v 0 x 0 θ v 0y y x Σχήμα2.16: Σωματίδιοτηχρονικήστιγμή t 0 = 0στηθέση r 0 = x 0ˆxμεταχύτητα v 0 = v 0y ŷ +v 0z ẑμέσασεομογενέςμαγνητικόπεδίο B = Bẑ. at the position x0=-v0y/omega, omega=q B/m Enter v0 and theta and see trajectory from t0=0 to tf at step dt program hargeinb implicit none Declaration of variables real x,y,z,vx,vy,vz,t,tf,dt,pi real x0,y0,z0,v0x,v0y,v0z,v0 real theta,omega parameter(pi= ) Ask user for input: print *, # Enter omega: read(5,*)omega print *, # Enter v0, theta (degrees): read(5,*)v0,theta print *, # Enter tf,dt: read(5,*)tf,dt print *, # omega=,omega, T=,2.0*PI/omega

37 2.2. Κ ΙΝΗΣΗΣΤΟΧ ΩΡΟ 109 print *, # v0=,v0, theta=,theta, o (degrees) print *, # t0=,0.0, tf=,tf, dt=,dt Initialize if(theta.lt.0.0.or. theta.ge.90.0)stop Illegal 0<theta<90 theta = (PI/180.0)*theta!convert to radians v0y = v0*cos(theta) v0z = v0*sin(theta) print *, # v0x=,0.0, v0y=,v0y, v0z=,v0z x0 = - v0y/omega print *, # x0=,x0, y0=,0.0, z0=,0.0 print *, # xy plane: ircle with center (0,0) and R=,ABS(x0) print *, # step of helix: s=v0z*t=,v0z*2.0*pi/omega open(unit=11,file= hargeinb.dat ) ompute: t = 0.0 vz = v0z do while(t.le. tf) x = x0*cos(omega*t) y = -x0*sin(omega*t) z = v0z*t vx = v0y*sin(omega*t) vy = v0y*cos(omega*t) write(11,100)t,x,y,z,vx,vy,vz t = t + dt enddo close(11) 100 FORMAT(20G15.7) end Παραθέτουμε εδώ τις εντολές μιας τυπικής συνεδρίας τα αποτελέσματα της οποίας δείχνονται στο Σχήμα 2.17 και στο Σχήμα > f77 hargeinb.f -o chg >./chg # Enter omega: 6.28

38 110 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ x(t) y(t) z(t) v_x(t) v_y(t) v_z(t) Σχήμα2.17: Οιγραφικέςπαραστάσειςτωνσυναρτήσεων x(t),y(t),z(t),v x (t),v y (t),v z (t) τουπρογράμματος hargeinb.fγια ω = 6.28, x 0 = 1.0, θ = 20μοίρες. # Enter v0, theta (degrees): # Enter tf,dt: # omega= T= # v0= 1. theta= 20.o (degrees) # t0= 0. tf= 10. dt= # v0x= 0. v0y= v0z= # x0= y0= 0. z0= 0. # xy plane: ircle with center (0,0) and R= # step of helix: s=v0z*t= > gnuplot gnuplot> plot "hargeinb.dat" u 1:2 with lines title "x(t)" gnuplot> replot "hargeinb.dat" u 1:3 with lines title "y(t)" gnuplot> replot "hargeinb.dat" u 1:4 with lines title "z(t)" gnuplot> plot "hargeinb.dat" u 1:5 with lines title "v_x(t)" gnuplot> replot "hargeinb.dat" u 1:6 with lines title "v_y(t)" gnuplot> replot "hargeinb.dat" u 1:7 with lines title "v_z(t)" gnuplot> splot "hargeinb.dat" u 2:3:4 with lines title "r(t)" gnuplot> file = "hargeinb.dat" gnuplot> set xrange [-0.65:0.65];set yrange [-0.65:0.65];\ set zrange [0:1.3] gnuplot> t0=0;tf=3.5;dt=0.1 gnuplot> load "animate3d.gnu"

39 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 111 t= (x,y,z)= ( , , ) z x y Σχήμα 2.18: Η τροχιά r(t) του υλικού σημείου του προγράμματος hargeinb.f για ω = 6.28, v 0 = 1.0, θ = 20μοίρεςόπωςφαίνεταιμετοπρόγραμμα animate3d.gnu.στοντίτλο βλέπουμε την τρέχουσα χρονική στιγμή και τις συντεταγμένες του υλικού σημείου. 2.3 Κίνηση μετ Εμποδίων Στην παράγραφο αυτή θα μελετήσουμε την κίνηση ενός σωματιδίου η οποία είναι απλή και συνεχής σε πεπερασμένα διαστήματα χρόνου, αλλά σε συγκεκριμένες χρονικές στιγμές υπόκειται σε ελαστική κρούση σε ένα τοίχωμα αμετακίνητο και αδιαπέραστο. Η κρούση αυτή θα δούμε ότι περιγράφεται προσεγγιστικά από τους αλγόριθμους που θα προγραμματίσουμε. Ετσι θα μελετήσουμε για πρώτη φορά τα συστηματικά σφάλματα που εισάγονται από τους αλγόριθμους που χρησιμοποιούμε 14 ότανφτιάχνουμεέναμοντέλογιατοσύστημαπουμελετάμε. 14 Καιστιςπροηγούμενεςπαραγράφουςυπήρχε(μικρό)συστηματικόσφάλμαστασυστήματα που μελετήσαμε, το οποίο οφειλόταν όμως στα σφάλματα των αριθμητικών πράξεων που εκτελούσε ο υπολογιστής- αναπαράσταση πραγματικών, ακρίβεια πράξεων κινητής υποδιαστολής κλπ. Οι αλγόριθμοι ήταν ακριβείς.

40 112 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ Το Μονοδιάστατο Κουτί Το πιο απλό παράδειγμα που θα μελετήσουμε είναι η κίνηση ενός σωματιδίου σε ένα μονοδιάστατο κουτί. Το σωμάτιο κινείται ελεύθερα πάνω στον άξονα των xστοδιάστημα 0 < x < LόπωςφαίνεταιστοΣχήμα2.19. Οτανφτάνει στα άκρα του διαστήματος, ανακλάται στα τοιχώματα και η ταχύτητά του αναστρέφεται. Η δυναμική του ενέργεια είναι V(x) = { 0 0 < x < L + αλλού, (2.21) πουέχεισχήμαενόςαπειρόβαθουπηγαδιούδυναμικού.ηδύναμηf = dv(x)/dx = 0μέσαστοκουτί,όπουτοσωμάτιοκινείταιελεύθερα,και F = ± στατοιχώματα όπου ανακλάται. x v L Σχήμα2.19: Σωματίδιοσεμονοδιάστατοκουτίμετοιχώματαστο x = 0και x = L. Τοσύστημαείναιπολύαπλό. Αρκείναδώσουμετηναρχικήθέσητου σωματιδίου x 0 καιτηναρχικήτουταχύτητα v 0 (τοπρόσημότηςδηλώνεικαι την αρχική κατεύθυνση κίνησης). Οσο δε συγκρούεται με τα τοιχώματα η κίνηση είναι ευθύγραμμη και ομαλή και ισχύουν οι απλές σχέσεις x(t) = x 0 +v 0 t v(t) = v 0. (2.22) Επίσης για οποιαδήποτε μεταβολή του χρόνου δt, έτσι ώστε να μην υπάρχει σύγκρουσημετατοιχώματαμέσαστοχρονικόδιάστημα (t,t + δt), ισχύει (ακριβώς, όχι προσεγγιστικά) x(t+δt) = x(t)+v(t)δt v(t+δt) = v(t). (2.23)

41 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 113 Θα μπορούσαμε λοιπόν να χρησιμοποιήσουμε τις παραπάνω σχέσεις για να γράψουμετοπρόγραμμάμαςκαιόταντοσωμάτιοσυγκρούεταιμεκάποιοαπότα τοιχώματα να αντιστρέφαμε την ταχύτητα: v(t) v(t). Η πηγή των δυσκολιών μας κρύβεται στη λέξη όταν. Αφού στον υπολογιστή το χρονικό διάστημα δt είναι αναγκαστικά πεπερασμένο δεν μπορούμε να εντοπίσουμε τη χρονική στιγμή της σύγκρουσης με ακρίβεια μεγαλύτερη από δt: Αν λ.χ. χρησιμοποιώντας τις Σχέσεις(2.23) το σωματίδιο τη χρονική στιγμή t+δt ξεπεράσει το τοίχωμα η κρούση θα μπορούσε να έχει συμβεί οποιαδήποτε χρονική στιγμή μέσαστοδιάστημα (t,t + δt). Οαλγόριθμοςόμως,θααλλάξειτηφοράτης ταχύτητας τη χρονική στιγμή t + δt εισάγοντας ένα συστηματικό σφάλμα στον υπολογισμό. Πιο συγκεκριμένα, αυτό μπορεί να γίνει με το βρόχο do while(t.le. tf) x = x + v * dt t = t + dt if(x.lt. 0.0.or. x.gt. L) v = -v enddo όπου η συνθήκη σύγκρουσης δίνεται στην προτελευταία γραμμή με τη λογική πρόταση Αν xμικρότεροτου 0ήτο xμεγαλύτεροτου L όπουφαίνεταιη αδυναμία του αλγόριθμου να ελέγξει την ακριβή χρονική στιγμή της κρούσης. Ας δούμε τώρα ολόκληρο το πρόγραμμα το οποίο βρίσκεται στο αρχέιο box1d 1.f του συνοδευτικού λογισμικού. Ο χρήστης μπορεί να καθορίσει το μήκοςτουκουτιού Lκαιτιςαρχικέςσυνθήκες x0, v0. Δίνειτοναρχικόκαι τελικόχρόνοτηςκίνησης t0, tfκαθώςκαιτοβήμαυπολογισμού dtκαιο υπολογισμός... ξεκινάει: File box1d_1.f Motion of a free particle in a box 0<x<L Use integration with time step dt: x = x + v*dt program box1d implicit none Declaration of variables real L,x0,v0,t0,tf,dt,t,x,v Ask user for input:

42 114 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ print *, # Enter L: read(5,*)l print *, # L =,L if( L.le. 0.0) stop L must be positive. print *, # Enter x0,v0: read(5,*)x0,v0 print *, # x0=,x0, v0=,v0 if(x0.lt. 0.0.or. x0.gt. L) stop illegal value of x0. if(v0.eq. 0.0 ) stop illegal value of v0 = 0. print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # t0=,t0, tf=,tf, dt=,dt Initialize t = t0 x = x0 v = v0 open(unit=11,file= box1d_1.dat ) ompute: do while(t.le. tf) write(11,*)t,x,v x = x + v*dt t = t + dt if(x.lt. 0.0.or. x.gt. L) v = -v enddo close(11) end Ταδεδομέναταβρίσκουμεσετρειςστήλεςστοαρχείο box1d 1.dat.Ημεταγλώττιση και το τρέξιμο γίνεται κατά τα γνωστά, ενώ η γραφική παράσταση της τροχιάς με το gnuplot: > f77 box1d_1.f -o box1 >./box1 # Enter L: 10 # L = 10. # Enter x0,v0:

43 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ # x0= 0. v0= 1. # Enter t0,tf,dt: # t0= 0. tf= 100. dt= > gnuplot gnuplot> plot "box1d_1.dat" using 1:2 with lines title "x(t)",\ 0 notitle,l notitle gnuplot> plot [:][-1.2:1.2] "box1d_1.dat" \ using 1:3 with lines title "v(t)" 12 x(t) 10 8 x(t) Σχήμα2.20: Ητροχιά x(t)σωματίδιουσεμονοδιάστατοκουτίμε L = 10, x 0 = 0.0, v 0 = 1.0, δt = 0.01.Στοδεξίδιάγραμμαμεγενθύνουμελεπτομέρειαόταν t 90.Φαίνονται τασυστηματικάσφάλματαστονπροσδιορισμότηςχρονικήςστιγμήςτηςκρούσης t k = 90 καιτηςμέγιστηςτιμήςτης x(t), x m = L = Τα αποτελέσματα για την τροχιά x(t) δείχνονται στο Σχήμα Είναι φανερή η επίδραση του συστηματικού σφάλματος στα αποτελέσματα. Με τις απλές αρχικέςσυνθήκεςπουεπιλέξαμε,οικρούσειςσυμβαίνουνκάθε T/2 = L/v = 10 μονάδες χρόνου, άρα στο κομμάτι του διαγράμματος που μεγενθύναμε στο αριστερό του σχήματος 2.20, η αντιστροφή της κίνησης θα έπρεπε να είχε συμβεί όταν t = 90, x = L = 10. Ο αναγνώστης θα έχει ήδη καταλάβει ότι το παραπάνω πρόβλημα λύνεται παίρνοντας δt αρκετά μικρό, οπότε μπορούμε αν έχουμε την απαραίτητη υπολογιστική δύναμη να κάνουμε το σφάλμα όσο μικρό θέλουμε. Ναι, αυτό μέχρι ένα σημείο είναι σωστό. Προσέξτε όμως μια αδυναμία στον αλγόριθμο που

44 116 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ επιλέξαμε: Η επόμενη θέση καθορίζεται από την πράξη x+v*dt. Τι θα γίνει αν παίρνοντας το dt αρκετά μικρό, το γινόμενο v*dt γίνει περισσότερο από επτά τάξειςμεγέθουςμικρότεροαπότηντρέχουσατιμήτου x; Αφούτο xαναπαρίσταται από μεταβλητή τύπου REAL, η ακρίβεια στην αναπαράστασή του είναι περίπουεπτάδεκαδικάψηφία. Άραηπράξη x+v*dtθαμαςδώσειπίσωτο x, άραοαλγόριθμόςμαςθα κολλήσει καιτοκινητόθαμένειστοίδιοσημείο 15. Αυτόόσοκαιναπροσπαθούμεδεδιορθώνεται 16. Ημόνημαςελπίδαείναινα επινοήσουμε έναν καλύτερο αλγόριθμο. Λ.χ θεωρήστε τη σχέση που δίνει τη θέση του κινητού στην ευθύγραμμη ομαλή κίνηση: x(t) = x 0 +v 0 (t t 0 ). (2.24) Ας χρησιμοποιήσουμε την παραπάνω σχέση για τα τμήματα της κίνησης μεταξύ των συγκρούσεων. Το μόνο που έχουμε να κάνουμε είναι σε κάθε σύγκρουση μεένααπότατοιχώματανααντιστρέφουμετη v 0,ναορίζουμετο x 0 ναείναιη τρέχουσαθέσητουκινητούκαι t 0 ναείναιητρέχουσαχρονικήστιγμή. Αυτό επιτυγχάνεται με το βρόχο: t = t0 do while(t.le. tf) x = x0 + v0*(t-t0) if( x.lt. 0.0.or. x.gt. L)then x0 = x t0 = t v0 = -v0 endif t = t + dt enddo Στον παραπάνω αλγόριθμο δε γλιτώνουμε από το σφάλμα προσδιορισμού της στιγμής της κρούσης αλλά δεν έχουμε το πρόβλημα αστάθειας που είχε ο προηγούμενος όταν dt 0. Παρακάτω δίνουμε το πρόγραμμα που χρησιμοποιεί τον παραπάνω αλγόριθμο που μπορείτε να βρείτε στο συνοδευτικό λογισμικό στο αρχείο box1d 2.f: 15 Καιησχέση t=t+dtπάσχειαπόανάλογοπρόβλημα,αλλάαυτόλύνεταιεύκολα(δες άσκηση). 16 Φυσικάθαμπορούσαμεναδιαλέξουμεμεταβλητές REAL*8, REAL*16,... Αυτόμπορεί να μας λύσει ένα συγκεκριμένο πρόβλημα για δεδομένο tf, αλλά ανάλογο πρόβλημα ακρίβειας θα συναντήσουμε αν υπολογίσουμε την τροχιά για(αρκετά) μεγαλύτερο tf.

45 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 117 File box1d_2.f Motion of a free particle in a box 0<x<L Use constant velocity equation: x = x0 + v0*(t-t0) Reverse velocity and redefine x0,t0 on boundaries program box1d implicit none Declaration of variables real L,x0,v0,t0,tf,dt,t,x,v Ask user for input: print *, # Enter L: read(5,*)l print *, # L =,L if( L.le. 0.0) stop L must be positive. print *, # Enter x0,v0: read(5,*)x0,v0 print *, # x0=,x0, v0=,v0 if(x0.lt. 0.0.or. x0.gt. L) stop illegal value of x0. if(v0.eq. 0.0 ) stop illegal value of v0 = 0. print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # t0=,t0, tf=,tf, dt=,dt Initialize t = t0 open(unit=11,file= box1d_2.dat ) ompute: do while(t.le. tf) x = x0 + v0*(t-t0) write(11,*)t,x,v0 if( x.lt. 0.0.or. x.gt. L)then x0 = x t0 = t v0 = -v0

46 118 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ endif t = t + dt enddo close(11) end Το πρόγραμμα το μεταγλωττίζουμε και τρέχουμε όπως το προηγούμενο. Τα αποτελέσματα θα τα βρούμε στο αρχείο box1d 2.dat. Ο παραπάνω αλγόριθμος μπορεί με μικρές αλλαγές να μας δώσει την ακριβή λύση. Φυσικάτοπρόβλημααυτόείναιαρκετάαπλόώστεηακριβήςλύσηνα είναιγνωστήκαιναέχειαπλήμορφή. Ηιδέαείναιναχρησιμοποιήσουμετη σχέση (2.24) αλλάβάζονταςπάντατηνακριβήτιμήγιατα v 0, t 0. Ηιδέα φαίνεται στον κεντρικό βρόχο του προγράμματος: do while(t.le. tf) t = t + dt if( (t-t0).gt. Th )then t0 = t0 + Th v = -v if( v.gt. 0.0)then x0 = 0.0 else x0 = L endif endif x = x0 + v*(t-t0) enddo όπου Th= T/2 = L/ v οχρόνοςμεταξύδύοκρούσεων. Προσέξτεπωςτώρα μόλις ο χρόνος ξεπεράσει το χρόνο μιας κρούσης, θέτουμε τα x0, t0 στις ακριβείς 17 τιμέςτους. Τομόνοπουμένειείναιναθέσουμετιςαρχικέςτιμές γιατα t0,x0πρινξεκινήσειοβρόχος et voilà: Τοπλήρεςπρόγραμμαπουθα βρείτε στο αρχείο box1d 3.f File box1d_3.f 17 Φυσικάμηνπεριμένετεοαλγόριθμοςναδουλεύει... επ άπειρον! Τασφάλματαπεπερασμένης αναπαράστασης των μεταβλητών t0, Th συσσωρεύονται(accumulation errors). Επίσης η σχέση t=t+dt δεν είναι και η καλύτερη επιλογή(δείτε άσκηση).

47 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 119 Motion of a free particle in a box 0<x<L omputation of analytical solution program box1d implicit none Declaration of variables real L,x0,v0,t0,tf,dt,t,x,v,Th,a Ask user for input: print *, # Enter L: read(5,*)l print *, # L =,L if( L.le. 0.0) stop L must be positive. print *, # Enter x0,v0: read(5,*) a,v0!notice, x0=a is the original position print *, # x0=,a, v0=,v0 if(a.lt. 0.0.or. a.gt. L) stop illegal value of x0. if(v0.eq. 0.0 ) stop illegal value of v0 = 0. print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # t0=,t0, tf=,tf, dt=,dt Initialize Th = L/ABS(v0)!Th = T/2 = half period t = t0 x = a v = v0 if( v0.gt. 0.0 ) then t0 = -a/v0 x0 = 0.0 else t0 = (L-a)/v0 x0 = L endif open(unit=11,file= box1d_3.dat ) ompute:

48 120 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ do while(t.le. tf) write(11,*)t,x,v t = t + dt if( (t-t0).gt. Th )then t0 = t0 + Th v = -v if( v.gt. 0.0)then x0 = 0.0 else x0 = L endif!if( v.gt. 0.0) endif!if( (t-t0).gt. Th ) x = x0 + v*(t-t0) enddo!do while(t.le. tf) close(11) end Σας το αφήνουμε για άσκηση να επιβεβαιώσετε πως ο παραπάνω αλγόριθμος αντιστοιχεί στην πλήρη αναλυτική λύση του προβλήματος Σφάλματα Ας δούμε με λίγο περισσότερη λεπτομέρεια την επίδραση των συστηματικών σφαλμάτων στα αποτελέσματα που πήραμε από τη μελέτη του απλού προβλήματος που περιγράψαμε στην προηγούμενη παράγραφο. Χρησιμοποιήσαμε δύο αλγόριθμους, ο πρώτος υλοποιήθηκε στο πρόγραμμα που γράψαμε στο αρχείο box1d 1.fκαιοδεύτεροςστο box1d 2.f.Θααναφερόμαστεσεαυτούςστην παράγραφο αυτή ως η μέθοδος 1 και μέθοδος 2 αντίστοιχα. Στο αρχείο box1d 3.f προγραμματίσαμε την ακριβή λύση της κίνησης του υλικού σημείου στο μονοδιάστατο κουτί. Τα σφάλματα που θα δούμε μπορούμε να τα χωρίσουμε σε δύο κατηγορίες. Σε αυτά που οφείλονται στα συστηματικά σφάλματα στην προσέγγιση της κίνησης και σε αυτά που οφείλονται στην πεπερασμένη προσέγγιση των πραγματικών αριθμών και των πράξεων ανάμεσά τους από τον υπολογιστή. Θα δώσουμε έμφαση στην πρώτη κατηγορία γιατί αυτή είναι συνήθως αυτή που επικρατεί σε πολλά ενδιαφέροντα αριθμητικά προβλήματα στις φυσικές επιστήμες. Το σφάλμα στις μεθόδους 1 και 2 οφείλεται στη διακριτοποίηση του χρόνου. Αυτό έχει σαν αποτέλεσμα οι αλγόριθμοι να μη βλέπουν την ακριβή χρονική

49 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 121 στιγμή της κρούσης. Είναι λοιπόν αναμενόμενο το σφάλμα αυτό να ελαττώνεται όταν η διακριτοποίηση του χρόνου γίνεται ολοένα και λεπτότερη. Οταν υπολογίζουμε μια ποσότητα με μία από τις μεθόδους αυτές, λ.χ. τη θέση του κινητού μια συγκεκριμένη χρονική στιγμή, το αποτέλεσμα που παίρνουμε δεν έχουμε ιδέα αν είναι ορθό και πόση είναι η ακρίβεια προσδιορισμού του. Η πρώτη απόπειρα στην προσπάθεια ελέγχου αυτού το προβλήματος είναι να μελετήσουμε το αποτέλεσμα που πήραμε πόσο εξαρτάται από την παράμετρο που καθορίζει τη λεπτότητα της διακριτοποίησης του χρόνου: Αν καταφέρουμε να δείξουμε ότι το αποτέλεσμά μας συγκλίνει με ανεκτή ακρίβεια σε ένα όριο καθώς δt 0, αποκτάμε αυτοπεποίθηση πως η τιμή αυτή είναι σωστή στη δεδομένη ακρίβεια. Δυστυχώςημέθοδοςαυτήδεδουλεύειαλγοριθμικά: Καθώς δt 0,το σφάλμα διακριτοποίησης του χρόνου ελαττώνεται αλλά άλλα σφάλματα μπορεί να γίνονται σημαντικά. Αναφέραμε στην προηγούμενη παράγραφο ότι η συσσώρευση σφαλμάτων στην απεικόνιση και στις πράξεις μεταξύ των πραγματικών αριθμών γίνεται σημαντικότερη στο όριο αυτό. Άρα πρέπει η μελέτη αυτή να γίνει προσεκτικά. Αν έχουμε τη δυνατότητα να μελετήσουμε το πρόβλημα με ένα διαφορετικό αλγόριθμο, η σύγκλιση των αποτελεσμάτων των διαφορετικών μεθόδων συνεισφέρει στη βεβαιότητα της ορθότητας των υπολογισμών. Σε αντίθεση με ένα τυπικό πρόβλημα που έχουμε να λύσουμε, στο συγκεκριμένο έχουμε την πολυτέλεια να συγκρίνουμε τα αποτελέσματά μας και με την ακριβή λύση του προβλήματος. Σε τέτοιες περιπτώσεις έχουμε τη δυνατότητα να αντιστρέψουμε το πρόβλημα και να χρησιμοποιήσουμε την ακριβή λύση για να μελετήσουμε τη σχετική ακρίβεια και αποτελεσματικότητα διαφορετικών προσεγγιστικών μεθόδων. Ας δοκιμάσουμε να δούμε πώς μπορούμε να κάνουμε την ανάλυση της σύγκλισης των αποτελεσμάτων καθώς δt 0. Για κάθε μέθοδο θα καθορίσουμε όλες τις παραμέτρους εκτός από το δt. Στην ανάλυση παρακάτω θα χρησιμοποιήσουμε L = 10, v 0 = 1.0, x 0 = 0.0, t 0 = 0.0, t f = 95.0,άρατουλικό σημείοθαπρέπεινακάνειμίακρούσηανά10μονάδεςχρόνου. Θαπάρουμε διαδοχικά μικρότερες τιμές του δt και θα υπολογίσουμε την τελική θέση του κινητού x(t 95) 18 σασυνάρτησητου δt.θαμελετήσουμεαν,πόσοκαλάκαι πόσογρήγορασυγκλίνειαυτήητιμήσεέναόριοκαθώς δt Η ανάλυση αποτελείται από πολλές επαναλαμβανόμενες εντολές: Η μετα- 18 Προσέξτετο! 19 Φυσικάεδώγνωρίζουμεότιθαπρέπειναπάρουμε x(95) = 5.

50 122 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ γλώττιση του κώδικα, ο καθορισμός των παραμέτρων, το τρέξιμο και ο υπολογισμόςτιςτιμήςx(t 95)γιαπολλέςτιμέςτουδt.Σεένααρχείοbox1D anal.in γράφουμε τις τιμές των παραμέτρων που θα εισάγουμε στο πρόγραμμα: 10 L x0 v t0 tf dt Στη συνέχεια μεταγλωττίζουμε το πρόγραμμα > f77 box1d_1.f -o box καιτοτρέχουμεμετηνεντολή > cat box1d_anal.in./box που στέλνει τα περιεχόμενα του αρχείου box1d anal.in στο stdin του προγράμματος./box. Το αποτέλεσμα που ζητάμε είναι στην τελευταία γραμμή του αρχείου box1d 1.dat: > tail -n 1 box1d_1.dat Ητρίτητιμήείναιαυτήτηςταχύτηταςκαιδεμαςενδιαφέρει.Σεένααρχείο,λ.χ. box1d anal.dat τοποθετούμε το δt και τις δύο πρώτες τιμές από την παραπάνω εντολή. Αλλάζουμετηντιμήτου δt δt/2στοαρχείο box1d anal.in12 φορέςμέχριναγίνειίσημε καιεπαναλαμβάνουμε 20.Επαναλαμβάνουμε τηδιαδικασία 21 γιατημέθοδο2καιγιατηνακριβήμέθοδοτοποθετώνταςτα αποτελέσματαγιατο x(t 95)σενέεςστήλεςστοαρχείο box1d anal.dat. Το αποτέλεσμα είναι # # dt t1_95 x1(95) x2(95) x3(95) # Ο σεφ προτείνει: Δοκιμάστε την εντολή sed s/0.05/0.025/ box1d anal.in./box αλλάζοντας το με την τιμή του δt που επιθυμείτε να μελετήσετε. 21 Σπεσιαλιτέ:Δείτετοσενάριοφλοιού box1d anal.cshστοσυνοδευτικόλογισμικόγια ιδέες αυτοματοποίησης της διαδικασίας.

51 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ όπου τη δεύτερη γραμμή την προσθέσαμε ως σχόλιο(ο gnuplot την αγνοεί λόγω του #) που μας θυμίζει τι αντιπροσωπεύει κάθε στήλη. Η μελέτη της σύγκλισης μπορεί να φανεί εποπτικά στο αριστερό Σχήμα Η 1η μέθοδος βελτιώνει την ακρίβειά της μεγιστοποιώντας την όταν δt 0.01 ενώγια δt < τοσφάλμαγίνεται > 10%καιήμέθοδοςδίνειάχρηστα αποτελέσματα. Η 2η μέθοδος έχει πολύ καλύτερη συμπεριφορά από την 1η. Για να προσπαθήσουμε να καταλάβουμε το λόγο. Παρατηρούμεότικαθώςμικραίνειτο δtητελικήτιμήτου tπλησιάζειτην αναμενόμενη t f = 95.Γιατίόμωςδενπαίρνουμε t = 95,ειδικάόταν t/δtείναι ακέραιος αριθμός; Επίσης παρατηρούμε στην 9η γραμμή των δεδομένων του πίνακα(dt= ): Αφού 95/ δεν είναι ακέραιος, γιατί t = 95; Ακόμα χειρότερα: Αν θεωρητικά αναμένουμε να γίνουν 95/δt βήματα πόσα γίνονται στην πραγματικότητα Κάθε φορά που κάνετε μια μέτρηση μετρήστε πόσεςγραμμέςέχειτοαρχείο box1d 1.datμετηνεντολή 22 > wc -l box1d_1.dat και συγκρίνετε με τον αναμενόμενο αριθμό. Το αποτέλεσμα είναι ενδιαφέρον: # # dt N N0 # Εναλλακτικά,βάλτεέναμετρητήμέσαστοβρόχοτουπρογράμματος.

52 124 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ όπουη2ηστήληέχειτοναριθμότωνβημάτωνπουέγινανκαιη3ητοναριθμό των βημάτων που έπρεπε να γίνουν. Παρατηρούμε ότι η ακρίβεια ελαττώνεται ότανμικραίνουμετο δtκαιστοτέλοςηδιαφοράείναιπερίπου5%!ειδικάστην τελευταία γραμμή, αν οι πράξεις γίνονταν με μεγαλύτερη ακρίβεια θα έπρεπε οτελικόςχρόνοςναήταν t f = κάτιπουαλλάζει δραματικά το αποτέλεσμα σε μια περιοδική κίνηση με περίοδο συγκρινόμενη μετοσφάλμαστοχρόνο... Επειδήη1ημέθοδοςπροχωράειτοχρόνοστις εξισώσεις κίνησης ανάλογα με τον αριθμό των βημάτων καταλαβαίνουμε ότι στην πραγματικότητα η τιμή που παίρνουμε είναι για άλλο χρόνο από αυτόν που νομίζουμε. Άρα μια σημαντική πηγή σφαλμάτων είναι το σφάλμα συσσώρευσης στον υπολογισμό του χρόνου που γίνεται μεγαλύτερο καθώς μικραίνει το δt. Πώς θα μπορούσαμε να βελτιώσουμε τη συμπεριφορά αυτή; Μια σημαντική βελτίωση μπορεί να γίνει αν αντί να υπολογίζουμε το χρόνο προσθετικά, τον υπολογίζουμε πολλαπλασιαστικά. Εστω i ένας μετρητής των βημάτων που έχουμε κάνει. Τότε t = t + dt! Not accurate, avoid t = t0 + i*dt! Better accuracy, prefer Ο κύριος βρόχος του προγράμματος στο box1d 1.f γίνεται: t = t0 x = x0 v = v0 i = 0 do while(t.le. tf) write(11,*)t,x,v i = i + 1 x = x + v*dt

53 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 125 t = t0 + i*dt if(x.lt. 0.0.or. x.gt. L) v = -v enddo Το πλήρες πρόγραμμα θα το βρείτε στο αρχείο box1d 4.f του συνοδευτικού λογισμικού. Ας ονομάσουμε τη μέθοδο αυτή μέθοδο 3. Παρόμοια αλλαγή κάνουμεκαιστοαρχείο box1d 2.fπουθαβρείτεστο box1d 5.fκαικαλούμετη μέθοδο αυτή μέθοδο 4. Τέλος τον ακριβή αλγόριθμο του αρχείου box1d 3.f τον μετατρέπουμε στο αρχείο box1d 6.f. Επαναλαμβάνουμε την παραπάνω α- νάλυση και βρίσκουμε ότι το πρόβλημα ακριβούς προσδιορισμού του χρόνου πρακτικά εξαφανίζεται. Το αποτέλεσμα της ανάλυσης του σφάλματος το δείχνουμεστοδεξίσχήμα2.21. Ημέθοδος2και4δενπαρουσιάζεισημαντική διαφορά. Στημέθοδο1και3ηδιαφοράείναιδραματικήμετοσφάλμανα μειώνεται μέχρι και περισσότερο από 10 φορές. Το πρόβλημα του αυξανόμενου δx (%) 0.1 δx (%) method method 2 1e δt method 3 method e δt Σχήμα2.21:Τοεπί%σφάλμα δx = 2 x i (95) x(95) / x i (95)+x(95) 100όπου x i (95) ητιμήπουυπολογίζειημέθοδος i = 1,2,3,4και x(95)ητιμήπουυπολογίζειοακριβής αλγόριθμος σύμφωνα με το κείμενο. σφάλματος καθώς μειώνουμε το δt δεν εξαφανίζεται. Αλλά τώρα καταλαβαίνουμε ότι προέρχεται από τη συσσώρευση σφάλματος στην επαναληπτική σχέση x=x+v*dt. Αυτόν τον τύπο σφάλματος είναι δυσκολότερο να το βελτιώσουμε και παρουσιάζεται συχνά σε μεθόδους επίλυσης διαφορικών εξισώσεων που θα μελετήσουμε στο επόμενο κεφάλαιο Το Δισδιάστατο Κουτί Ας γενικεύσουμε τη μελέτη μας όταν το υλικό σημείο κινείται στις δύο διαστάσεις,στοεπίπεδο. Τοσωμάτιοείναιπεριορισμένομέσασεένακουτί 0 < x <

54 126 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ L x, 0 < y < L y καισκεδάζεταιελαστικάπάνωστατοιχώματάτου.βρίσκεται δηλαδή σε ένα ορθογώνιο απειρόβαθο πηγάδι δυναμικού. Ο χρήστης τοποθετεί τηχρονικήστιγμή t 0 τουλικόσημείοσεμιααρχικήθέση (x 0,y 0 )μεαρχική ταχύτητα (v 0x,v 0y )καιτοπρόγραμμαυπολογίζειτηντροχιάπουακολουθείτο υλικόσημείομέχριτοχρόνο t f μεβήμα δt. Μίατέτοιατροχιάφαίνεταιστο Σχήμα Θα γενικεύσουμε τον αλγόριθμο που χρησιμοποιήσαμε στο πρόγραμμα box2d 1.f για να μελετήσουμε την κίνηση στο μονοδιάστατο κουτί. Αν είναι γνωστή η θέσηκαιηταχύτητατουκινητούσεμιαχρονικήστιγμή t,τότετηχρονική στιγμή t+δtηθέσηκαιηταχύτητάτουθαδίνεταιαπότιςσχέσεις x(t+δt) = x(t)+v x (t)δt y(t+δt) = y(t)+v y (t)δt v x (t+δt) = v x (t) v y (t+δt) = v y (t). (2.25) Η σύγκρουση με τα τοιχώματα προτυποποιείται με ανάκλαση της κάθετης στα τοιχώματα συνιστώσας της ταχύτητας όταν η αντίστοιχη συντεταγμένη περάσει τα όρια του τοίχου. Φυσικά αυτό εισάγει το συστηματικό σφάλμα που συζητήσαμε στην προηγούμενη παράγραφο. Αποφεύγουμε το συστηματικό σφάλμα συσσώρευσης στον υπολογισμό του χρόνου εισάγοντας έναν μετρητή βημάτων i, και έτσι το κεντρικό κομμάτι του προγράμματος είναι: i = i + 1 t = t0 + i *dt x = x + vx*dt y = y + vy*dt if(x.lt. 0.0.or. x.gt. Lx) vx = -vx if(y.lt. 0.0.or. y.gt. Ly) vy = -vy Παραθέτουμε το πλήρες πρόγραμμα παρακάτω το οποίο θα βρείτε στο αρχείο box2d 1.f. Εκτός από τα εισαγωγικά και τις αρχικοποιήσεις, εισάγαμε και δύο μετρητές κρούσεων με τα τοιχώματα nx και ny: File box2d_1.f Motion of a free particle in a box 0<x<Lx 0<y<Ly Use integration with time step dt: x = x + vx*dt y=y+vy*dt

55 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 127 program box2d implicit none Declaration of variables real*8 Lx,Ly,x0,y0,v0x,v0y,t0,tf,dt,t,x,y,vx,vy integer i,nx,ny Ask user for input: print *, # Enter Lx,Ly: read(5,*)lx,ly print *, # Lx =,Lx, Ly=,Ly if( Lx.le. 0.0) stop Lx must be positive. if( Ly.le. 0.0) stop Ly must be positive. print *, # Enter x0,y0,v0x,v0y: read(5,*)x0,y0,v0x,v0y print *, # x0=,x0, y0=,y0, v0x=,v0x, v0y=,v0y if(x0.lt. 0.0.or. x0.gt. Lx) stop illegal value of x0. if(y0.lt. 0.0.or. y0.gt. Ly) stop illegal value of y0. if(v0x**2+v0y**2.eq. 0.0 ) stop illegal value of v0 = 0. print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # t0=,t0, tf=,tf, dt=,dt Initialize i = 0 nx = 0 ny = 0 t = t0 x = x0 y = y0 vx = v0x vy = v0y open(unit=11,file= box2d_1.dat ) ompute: do while(t.le. tf) write(11,*)t,x,y,vx,vy i = i + 1

56 128 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ t = t0 + i *dt x = x + vx*dt y = y + vy*dt if(x.lt. 0.0.or. x.gt. Lx) then vx = -vx nx = nx + 1 endif if(y.lt. 0.0.or. y.gt. Ly) then vy = -vy ny = ny + 1 endif enddo close(11) print *, # Number of collisions: print *, # nx=,nx, ny=,ny end Μια τυπική συνεδρία μελέτης μιας τροχιάς δίνεται παρακάτω: > f77 box2d_1.f -o box >./box # Enter Lx,Ly: # Lx = 10. Ly= 5. # Enter x0,y0,v0x,v0y: # x0= 5. y0= 0. v0x= 1.27 v0y= 1.33 # Enter t0,tf,dt: # t0= 0. tf= 50. dt= 0.01 # Number of collisions: # nx= 6 ny= 13 > gnuplot gnuplot> plot "box2d_1.dat" using 1:2 with lines title "x (t)" gnuplot> replot "box2d_1.dat" using 1:3 with lines title "y (t)" gnuplot> plot "box2d_1.dat" using 1:4 with lines title "vx(t)" gnuplot> replot "box2d_1.dat" using 1:5 with lines title "vy(t)" gnuplot> plot "box2d_1.dat" using 2:3 with lines title "x-y"

57 2.3. Κ ΙΝΗΣΗΜΕΤ ΕΜΠΟΔ ΙΩΝ 129 Παρατηρούμε την τελευταία γραμμή εξόδου από το πρόγραμμα: Το υλικό σημείο ανακλάταιαπότακάθετατοιχώματατουκουτιού6φορές(nx= 6)καιμεταοριζόντια 13(ny=13). Με τις εντολές αυτές παίρνουμε τις γραφικές παραστάσεις που φαίνονται στα Σχήματα 2.22 και x(t) y(t) v x (t) v y (t) Σχήμα 2.22: Τα αποτελέσματα για το υλικό σημείο που κινείται μέσα σε δισδιάστατο κουτί πουπαίρνουμεαπότοπρόγραμμα box2d 1.f.Οιπαράμετροιείναι L x = 10, L y = 5, x 0 = 5, y 0 = 0, v 0x = 1.27, v 0y = 1.33, t 0 = 0, t f = 50, δt = Για να κάνουμε animation της τροχιάς αντιγράφουμε το αρχείο box2d animate.gnu από το συνοδευτικό λογισμικό στον κατάλογο που έχουμε τα δεδομένα μας και δίνουμε τις εντολές στο gnuplot: gnuplot> file = "box2d_1.dat" gnuplot> Lx = 10 ; Ly = 5 gnuplot> t0 = 0 ; tf = 50; dt = 1 gnuplot> load "box2d_animate.gnu" gnuplot> t0 = 0 ; dt = 0.5; load "box2d_animate.gnu" Στην τελευταία γραμμή επαναλάβαμε το animation στη... μισή ταχύτητα. Μπορείτε να χρησιμοποιήσετε επίσης το ήδη γνωστό πρόγραμμα animate2d.gnu που παρουσιάσαμε στην παράγραφο Οι αλλαγές που κάναμε στο box2d animate.gnu απλά προσθέτουν ένα σχέδιο του κουτιού και υπολογίζουν αυτόματα τα όρια σχεδιασμού της γραφικής παράστασης. Επίσης, το διάνυσμα που παρακολουθεί την κίνηση του σωματιδίου δεν είναι το διάνυσμα θέσης, αλλά αυτό που ενώνει τηναρχικήμετηντελικήθέσητου. Το επόμενο βήμα είναι να ελέγξουμε την ακρίβεια των αποτελεσμάτων μας. Αυτό γίνεται στο πνεύμα της αντίστοιχης παρουσίασης του μονοδιάστατου προβλήματος και αφήνεται σαν άσκηση για τον αναγνώστη.

58 130 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ t= (x,y)= ( , ) y x Σχήμα2.23: ΗτροχιάτουυλικούσημείουτουΣχήματος2.22τηχρονικήστιγμή t = 48. Ηαρχήτουβέλουςείναιηαρχικήθέσητουυλικούσημείουκαιτοτέλοςηστιγμιαίατου θέση. Το κουτί περιγράφεται από τις παχιές γραμμές. 2.4 Εφαρμογές Στην παράγραφο αυτή θα παρουσιάσουμε απλά προβλήματα ελεύθερης κίνησης μετ εμποδίων για εξάσκηση στον προγραμματισμό τους. Θα αρχίσουμε με... μίνι γκολφ. Ο παίκτης ρίχνει το(σημειακό) μπαλάκι σε έναορθογώνιοεπίπεδοκουτίμήκουςπλευρών L x, L y τοοποίοείναιανοιχτό στηνπλευρά x = 0. Τοκουτίέχειμιατρύπακέντρου (x c,y c )καιακτίνας R. Ανημπάλαπέσειμέσα,οπαίκτηςκερδίζει. Ανημπάλαβγειαπότην ανοιχτή πλευρά ο παίκτης χάνει. Για να ελέγξουμε αν το υλικό σημείο μπήκε στηνπεριοχήτηςτρύπαςότανείναιστηθέση (x,y)αρκείναελέγξουμεαν (x x c ) 2 +(y y c ) 2 R 2. Τουλικόσημείουποτίθεταιπωςγια t 0 = 0βρίσκεταιστηθέση(0,L y /2)και οπαίκτηςτοεκτοξεύειμεταχύτηταμέτρου v 0 μεγωνία θμοίρεςπουσχηματίζει με τον άξονα x. Το πρόγραμμα δίνεται παρακάτω:

59 2.4. ΕΦΑΡΜΟΓ ΕΣ 131 t= (x,y)= ( , ) y x Σχήμα 2.24: Η τροχιά του υλικού σημείου που παράγεται από το πρόγραμμα MiniGolf.f με παραμέτρους αυτές που δίνονται στο κείμενο. Απεικονίζεται η στιγμή της... επιτυχίας! Τηχρονικήστιγμή t = 45.3τουλικόσημείομπαίνειστηνπεριοχήτηςτρύπαςμεκέντρο (8,2.5)καιακτίνα 0.5. File MiniGolf.f Motion of a free particle in a box 0<x<Lx 0<y<Ly The box is open at x=0 and has a hole at (xc,yc) of radius R Ball is shot at (0,Ly/2) with speed v0, angle theta (degrees) Use integration with time step dt: x = x + vx*dt y=y+vy*dt Ball stops in hole (success) or at x=0 (failure) program MiniGolf implicit none Declaration of variables real*8 Lx,Ly,x0,y0,v0x,v0y,t0,tf,dt,t,x,y,vx,vy real*8 v0,theta,xc,yc,r,r2,pi integer i,nx,ny character*7 result

60 132 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ parameter(pi= d0) Ask user for input: print *, # Enter Lx,Ly: read(5,*)lx,ly print *, # Lx =,Lx, Ly=,Ly if( Lx.le. 0.0) stop Lx must be positive. if( Ly.le. 0.0) stop Ly must be positive. print *, # Enter hole position and radius: (xc,yc), R: read(5,*)xc,yc,r print *, # (xc,yc)= (,xc,,,yc, ) R=,R print *, # Enter v0, theta(degrees): read(5,*)v0,theta print *, # v0=,v0, theta=,theta, degrees if(v0.le. 0.0D0 ) stop illegal value of v0. if(abs(theta).ge. 90.0D0) stop illegal value of theta. print *, # Enter dt: read(5,*)dt print *, # dt=,dt Initialize t0 = 0.0D0 x0 = D0! small but non-zero y0 = Ly/2.0 R2 = R*R theta = (PI/180.0D0)*theta v0x = v0*cos(theta) v0y = v0*sin(theta) print *, # x0=,x0, y0=,y0, v0x=,v0x, v0y=,v0y i = 0 nx = 0 ny = 0 t = t0 x = x0 y = y0 vx = v0x vy = v0y open(unit=11,file= MiniGolf.dat )

61 2.4. ΕΦΑΡΜΟΓ ΕΣ ompute: do while(.true. )!forever! write(11,*)t,x,y,vx,vy i = i + 1 t = t0 + i*dt x = x + vx*dt y = y + vy*dt if(x.gt. Lx) then vx = -vx nx = nx + 1 endif if(y.lt. 0.0.or. y.gt. Ly) then vy = -vy ny = ny + 1 endif if(x.le. 0.0D0)then result = Failure goto 11 endif if( ((x-xc)*(x-xc)+(y-yc)*(y-yc)).le. R2)then result = Success goto 11 endif enddo 11 continue!break loop here close(11) print *, # Number of collisions: print *, # Result=,result, nx=,nx, ny=,ny end Για να το τρέξουμε κάνουμε τα συνηθισμένα: > f77 MiniGolf.f -o mg >./mg # Enter Lx,Ly: 10 5 # Lx = 10. Ly= 5. # Enter hole position and radius: (xc,yc), R:

62 134 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ # (xc,yc)= ( 8., 2.5 ) R= 0.5 # Enter v0, theta(degrees): 1 80 # v0= 1. theta= 80. degrees # Enter dt: 0.01 # dt= 0.01 # x0= 1.E-05 y0= 2.5 v0x= v0y= # Number of collisions: # Result= Success nx= 0 ny= 9 Φτιάξτεταδιαγράμματατηςθέσηςκαιτηςταχύτηταςμετοχρόνοκαθώςκαιτης τροχιάς κατά τα γνωστά. Για διασκέδαση του αναγνώστη παρέχουμε και ειδικό πρόγραμμα animation(μπορείτε να χρησιμοποιήσετε και το animate2d.gnu). Αντιγράψτε από το συνοδευτικό λογισμικό το αρχείο MiniGolf animate.gnu, ξεκινήστε το gnuplot και δώστε τις εντολές: gnuplot> file = "MiniGolf.dat" gnuplot> Lx = 10;Ly = 5 gnuplot> xc = 8; yc = 2.5 ; R = 0.5 gnuplot> t0 = 0; dt = 0.1 gnuplot> load "MiniGolf_animate.gnu" Το Σχήμα 2.24 αποτελεί αδιάψευστη μαρτυρία της επιτυχίας μας! Η επόμενη εφαρμογή μας θα είναι τρισδιάστατη. Θα μελετήσουμε την κίνηση ενόςυλικούσημείουτοοποίοκινείταιμέσασεένακύλινδροακτίναςrκαιύψους L. Η κρούσεις στα τοιχώματα και τις βάσεις του κυλίνδρου είναι ελαστικές και ο κύλινδρος είναι αμετακίνητος και απαραμόρφωτος. Στο πρόγραμμα που θα γράψουμε παίρνουμε τον κύλινδρο να έχει τον άξονα συμμετρίας τον άξονα των z. Ημίαβάσητουτοποθετείταιστοεπίπεδο z = 0καιηάλληστο z = L. Η διάταξη φαίνεται στο Σχήμα Το πρόβλημα δεν παρουσιάζει καμία δυσκολία σε σχέση με τα προηγούμενα όσοαφοράτηνκίνησηστονάξονατωνz,τοσωμάτιοανακλάταιπάνωσταεπίπεδα τοιχώματα των βάσεων του κυλίνδρου. Το μόνο καινούργιο είναι η προβολή τηςκίνησηςστοεπίπεδο x y,όπουτουλικόσημείοφαίνεταινακινείταισε ένα επίπεδο και να συγκρούεται ελαστικά στο εσωτερικό ενός κύκλου ακτίνας Rκαικέντροπάνωστονάξονατων z.ηκατάστασηπεριγράφεταιστοσχήμα

63 2.4. ΕΦΑΡΜΟΓ ΕΣ Κατάτηνελαστικήανάκλασητουσωματίουαπλά v r v r ενώηv θ μένει ή ίδια. Η ταχύτητα του σωματιδίου πριν την κρούση είναι ενώ μετά Από τις σχέσεις v = v xˆx+v y ŷ καιτιςσχέσεις v r = v ˆr, v θ = v ˆθ,παίρνουμε Αντιστρέφοντάς τις παίρνουμε = v rˆr +v θˆθ (2.26) v = v xˆx+v yŷ = v rˆr +v θˆθ (2.27) ˆr = cosθˆx+sinθŷ ˆθ = sinθˆx+cosθŷ, (2.28) v r = v x cosθ+v y sinθ v θ = v x sinθ+v y cosθ. (2.29) v x = v r cosθ v θ sinθ v y = v r sinθ +v θ cosθ. (2.30) Μετομετασχηματισμό v r v r ηνέαταχύτητασεκαρτεσιανέςσυντεταγμένεςθαείναι v x = v r cosθ v θ sinθ v y = v r sinθ +v θ cosθ. (2.31) Ομετασχηματισμός v x v x, v y v y θαυλοποιηθείσεμιαυπορουτίνα reflectvonircle(vx,vy,x,y,xc,yc,r). Στην είσοδο της δίνουμε την αρχική ταχύτητα (vx,vy), το σημείο κρούσης (x,y), το κέντρο του κύκλου (xc,yc)καιτηνακτίνατουκύκλου 23 R.Στηνέξοδο,τα (vx,vy)έχουναντικατασταθείμετιςνέεςτιμές 24 (v x,v y ). Το πρόγραμμα που προκύπτει θα το βρείτε στο αρχείο ylinder3d.f: 23 Προφανώςιδανικάθαισχύει R 2 = (x x c ) 2 +(y y c ) 2 αλλάεπειδήυπάρχεισυστηματικό σφάλμα στη θέση της κρούσης, επιλέγουμε το R να δίνεται. 24 Επίσηςτουλικόσημείοόπωςθαδούμετοποθετείταιακριβώςπάνωστονκύκλο.

64 136 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ θ ^ vθ y^ ^r v v r v R v r θ (x,y) ^x (x c,y c) Σχήμα 2.25: Ελαστική ανάκλαση υλικού σημείου που πέφτει στο εσωτερικό κύκλου ακτίνας R = R καικέντρου r c = x cˆx+y c ŷστοσημείο r = xˆx+yŷ. Εχουμε R = (x x c )ˆx+(y y c )ŷ.ηταχύτητααρχικάείναι v = v rˆr+v θˆθόπου ˆr R/R.Μετάτηνανάκλαση vr v r καιηνέαταχύτητατουυλικούσημείουείναι v = v rˆr+v θˆθ File ylinder3d.f Motion of a free particle in a cylinder with axis the z-axis, radius R and 0<z<L Use integration with time step dt: x = x + vx*dt y = y + vy*dt z = z + vz*dt Use subroutine reflectvonircle for colisions at r=r program ylinder3d implicit none Declaration of variables real*8 x0,y0,z0,v0x,v0y,v0z,t0,tf,dt,t,x,y,z,vx,vy,vz real*8 L,R,R2,vxy,rxy,r2xy,xc,yc integer i,nr,nz

65 2.4. ΕΦΑΡΜΟΓ ΕΣ Ask user for input: print *, # Enter R, L: read(5,*)r,l print *, # R=,R, L=,L if( R.le. 0.0) stop R must be positive. if( L.le. 0.0) stop L must be positive. print *, # Enter x0,y0,z0,v0x,v0y,v0z: read(5,*)x0,y0,z0,v0x,v0y,v0z rxy = DSQRT(x0*x0+y0*y0) print *, # x0 =,x0, y0 =,y0, z0=,z0, rxy=,rxy print *, # v0x=,v0x, v0y=,v0y, v0z=,v0z if(rxy.gt. R ) stop illegal value of rxy > R if(z0.lt. 0.0D0 ) stop illegal value of z0 < 0 if(z0.gt. L ) stop illegal value of z0 > L if(v0x**2+v0y**2+v0z**2.eq. 0.0 ) stop illegal value of v0 = 0. print *, # Enter t0,tf,dt: read(5,*)t0,tf,dt print *, # t0=,t0, tf=,tf, dt=,dt Initialize i = 0 nr = 0 nz = 0 t = t0 x = x0 y = y0 z = z0 vx = v0x vy = v0y vz = v0z R2 = R*R xc = 0.0D0!center of circle which is the projection of the yc = 0.0D0!cylinder on the xy plane open(unit=11,file= ylinder3d.dat ) ompute: do while(t.le. tf)

66 138 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ write(11,100)t,x,y,z,vx,vy,vz i = i + 1 t = t0 + i *dt x = x + vx*dt y = y + vy*dt z = z + vz*dt if(z.lt. 0.0.or. z.gt. L) then vz = -vz! reflection on cylinder caps nz = nz + 1 endif r2xy = x*x+y*y if( r2xy.gt. R2)then call reflectvonircle(vx,vy,x,y,xc,yc,r) nr = nr + 1 endif enddo close(11) print *, # Number of collisions: print *, # nr=,nr, nz=,nz 100 FORMAT(100G28.16) end ============================================================ subroutine reflectvonircle(vx,vy,x,y,xc,yc,r) implicit none real*8 vx,vy,x,y,xc,yc,r real*8 theta,cth,sth,vr,vth theta = atan2(y-yc,x-xc) cth = cos(theta) sth = sin(theta) vr vth vx = vx*cth + vy *sth = -vx*sth + vy *cth = -vr*cth - vth*sth!reflect vr -> -vr

67 2.4. ΕΦΑΡΜΟΓ ΕΣ 139 vy = -vr*sth + vth*cth x = xc + R*cth!put x,y on the circle y = yc + R*sth end Να επισημάνουμε μόνο τις ακόλουθες λεπτομέρειες: Χρησιμοποιούμε καταρχήν τη συνάρτηση atan2 για τον προσδιορισμό της γωνίας theta. Η συνάρτηση αυτήμεορίσματα atan2(y,x)επιστρέφειτηγωνία θ = tan 1 (y/x)στοσωστό τεταρτημόριο που βρίσκεται το σημείο (x, y). Η γωνία που ζητάμε δίνεται από την εντολή atan2(y-yc,x-xc). Στη συνέχεια εφαρμόζουμε τις σχέσεις (2.29) και (2.31), ενώ στις τελευταίες δύο γραμμές επιβάλλουμε μετά την κρούση το υλικόσημείοναείναιπάνωστοσημείοτουκύκλου (x c +Rcosθ,y c +Rsinθ). t= (x,y,z)= ( , , ) 10 8 z x y Σχήμα2.26:Ητροχιάτουσωματιδίουπουανακλάταιστοεσωτερικόκυλίνδρουμε R = 10, L = 10σύμφωναμετοπρόγραμμα ylinder3d.f. Εχουμεεπιλέξει r 0 = 1.0ˆx+2.2ŷ+3.1ẑ, v 0 = 0.93ˆx 0.89ŷ+0.74ẑ, t 0 = 0, t f = 500.0, δt = Η μεταγλώττιση και το τρέξιμο γίνεται κατά τα γνωστά: > f77 ylinder3d.f -o cl

68 140 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ >./cl # Enter R, L: # R= 10. L= 10. # Enter x0,y0,z0,v0x,v0y,v0z: # x0 = 1. y0 = 2.2 z0= 3.1 rxy= # v0x= 0.93 v0y= v0z= 0.74 # Enter t0,tf,dt: # t0= 0. tf= 500. dt= 0.01 # Number of collisions: # nr= 33 nz= 37 Για να φτιάξουμε τις γραφικές παραστάσεις της θέσης/ταχύτητας συναρτήσει του χρόνου δίνουμε τις εντολές gnuplot κατά τα γνωστά: gnuplot> file="ylinder3d.dat" gnuplot> plot file using 1:2 with lines t " x(t)",\ file using 1:3 with lines t " y(t)",\ file using 1:4 with lines t " z(t)" gnuplot> plot file using 1:5 with lines t "v_x(t)",\ file using 1:6 with lines t "v_y(t)",\ file using 1:7 with lines t "v_z(t)" Μπορούμε να δούμε και την απόσταση του κινητού από τον άξονα του κυλίνδρου r(t) = x(t) 2 +y(t) 2 σασυνάρτησημετοχρόνομετηνεντολή gnuplot> plot file using 1:(sqrt($2**2+$3**2)) with lines title "r(t)" Γιαναφτιάξουμετοσχήματιςτροχιάςμαζίμετονκύλινδροδίνουμετιςεντολές gnuplot> L = 10 ; R = 10 gnuplot> set urange [0:2.0*pi] gnuplot> set vrange [0:L] gnuplot> set parametric gnuplot> splot file using 2:3:4 with lines notitle,\ R*cos(u),R*sin(u),v notitle

69 2.4. ΕΦΑΡΜΟΓ ΕΣ 141 Με την εντολή set parametric μπορούμε να φτιάξουμε τη γραφική παράστασημιαςδισδιάστατηςεπιφάνειαςτηςμορφής r(u,v) = x(u,v)ˆx+y(u,v)ŷ + z(u, v) ẑ. Ο κύλινδρος(χωρίς τις βάσεις του) δίνεται από τις παραμετρικές εξισώσεις r(u,v) = Rcosuˆx+Rsinuŷ+vẑμε u [0,2π), v [0,L]. Για το animation της τροχιάς αντιγράψτε το αρχείο ylinder3d animate.gnu στονκατάλογοπουκάνετετηνανάλυσηκαιμέσααπότο gnuplotδώστετις εντολές gnuplot> R=10;L=10;t0=0;tf=500;dt=10;load "ylinder3d_animate.gnu" βάζοντας φυσικά τις παραμέτρους που χρησιμοποιήσατε εσείς. Το αποτέλεσμα φαίνεται στο Σχήμα 2.26.

70 142 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ 2.5 Ασκήσεις 2.1 Στο πρόγραμμα ircle.f δώστε τις εντολές που απαιτούνται ώστε το πρόγραμμα να τυπώνει τον αριθμό των πλήρων κύκλων που διέγραψε το κινητό. 2.2 Στο πρόγραμμα ircle.f προσθέστε όλα τα αναγκαία τεστ στις παραμέτρους που εισάγει ο χρήστης, έτσι ώστε το πρόγραμμα να είναι εγγυημένο ότιθατρέξειομαλά. Κάνετετοίδιοκαισταάλλαπρογράμματαπουδίνονται στο κεφάλαιο αυτό. 2.3Υλικόσημείοκινείταιπάνωσεκύκλομεκέντροτηναρχήτωναξόνων μεσταθερήγωνιακήταχύτητα ω.τηχρονικήστιγμή t 0 = 0τοσωμάτιο βρίσκεταιστοσημείο (x 0,y 0 ).Γράψτετοπρόγραμμα ircularmotion.f που να απεικονίζει την τροχιά. Ο χρήστης θα δίνει στην είσοδο τα ω,x 0,y 0,t 0,t f,δt. Στηνέξοδοθαπαίρνειταδεδομένασύμφωναμετο πρόγραμμα ircle.f. 2.4 Μετατρέψτε το πρόγραμμα SimplePendulum.f έτσι ώστε ο χρήστης να μπορεί να δίνει και μη μηδενική ταχύτητα ως αρχική συνθήκη. 2.5Μελετήστετοόριο k 0στοπρόβληματηςβολήςπουδίνεταιαπότις Σχέσεις (2.10).Αναπτύξτετο e kt = 1 kt+ 1 2! (kt)2 +...καικρατήστε τουςόρουςπουδεμηδενίζονταιστοόριο k 0.Στησυνέχειακρατήστε τους όρους με την αμέσως μικρότερη δύναμη του k. Προγραμματίστε τις εξισώσεις αυτές σε ένα αρχείο ProjectileSmallAirResistance.f. Θεωρήστετιςαρχικέςσυνθήκες v 0 = ˆx+ŷκαιυπολογίστεαριθμητικάτοβεληνεκές της τροχιάς με τα δύο προγράμματα ProjectileSmallAirResistance.f, ProjectileAirResistance.f. Προσδιορίστε τις τιμές του k για τις ο- ποίες τα αποτελέσματά σας συμφωνούν με ακρίβεια καλύτερη από 5%. 2.6 Προγραμματίστε την κίνηση της βολής όταν η δύναμη της αντίστασης του αέρα έχει μέτρο ανάλογο του τετραγώνου της ταχύτητας. Συγκρίνετε το βεληνεκές της τροχιάς που προκύπτει με αυτό που υπολογίζεται από το πρόγραμμα ProjectileAirResistance.f για τις παραμέτρους του Σχήματος Κάνετε τις απαραίτητες μετατροπές στο πρόγραμμα Lissajous.f ώστε ο χρήστης να μπορεί να δίνει διαφορετικό πλάτος και αρχική φάση στην

71 2.5. ΑΣΚ ΗΣΕΙΣ 143 κίνηση που γίνεται στη διεύθυνση του άξονα των y. Μελετήστε τις τροχιέςόταντοπλάτοςείναιίσοκαιηδιαφοράφάσηςείναι π/4,π/2,π, π καιτοίδιοόταντοπλάτοςστηδιεύθυνσητουάξονατων yείναιδιπλάσιο. 2.8 Κάνετε τις απαραίτητες μετατροπές στο πρόγραμμα ProjectileAirResistance.f ώστεναμπορείνασυμπεριλάβεικαιτημελέτητηςπερίπτωσης k = Κάνετε τις απαραίτητες μετατροπές στο πρόγραμμα ProjectileAirResistance.f ώστε να υπολογίστε την κίνηση του υλικού σημείου στο χώρο. Κάνετε τα διαγράμματα της θέσης/ταχύτητας συναρτήσει του χρόνου και της τρισδιάστατης τροχιάς με την εντολή splot στο gnuplot. Χρησιμοποιήστε το πρόγραμμα animate3d.gnu για να κάνετε animation της τροχιάς Κάνετε τις απαραίτητες μετατροπές στο πρόγραμμα hargeinb.f ώστε να υπολογίζει τον αριθμό των πλήρων στροφών που έχει κάνει η προβολή τηςτροχιάςτουφορτίουστοεπίπεδο x y Μεταβάλετε το πρόγραμμα box1d 1.f έτσι ώστε να τυπώνει στο stdout τον αριθμό των κρούσεων του υλικού σημείου στο αριστερό τοίχωμα, στο δεξί και το συνολικό Επαναλάβετε το ίδιο για το πρόγραμμα box1d 2.f. Συμπληρώστε σε δύο στήλες στον πίνακα της Σελ. 122 το συνολικό αριθμό των κρούσεων που προκύπτουν και σχολιάστε Στο πρόγραμμα box1d 1.f επιλέξτε L= 10, v0=1. Ελαττώστε το dt μέχριτουλικόσημείονασταματήσεινακινείται. Γιαποιατιμήτου dt συμβαίνει αυτό; Αυξήστε το v0=10,100. Μέχρι ποια τιμή του dt μπορείτε να φτάσετε τώρα; Γιατί; 2.14 Στο πρόγραμμα box1d 1.f αλλάξτε τις δηλώσεις REAL REAL*8 και στις σταθερές προσθέστε τον εκθέτη D0(λ.χ D0). Μελετήστε τη διαφορά στα αποτελέσματα που πήρατε στην ανάλυση της παραγράφου Επαναλάβετε την άσκηση Τι παρατηρείτε; 2.15 Κάντε το ίδιο στα προγράμματα box1d 2.f, box1d 3.f και επαναλάβετε την ανάλυση της παραγράφου Μεταβάλλετε το πρόγραμμα box1d 1.f ώστε να μελετήσετε την περίπτωση που το κινητό συγκρούεται μη ελαστικά με τα τοιχώματα του κουτιού, έτσιώστε v = ev, 0 < e 1.

72 144 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ 2.17 Μεταβάλλετε το πρόγραμμα box2d 1.f ώστε να μελετήσετε την περίπτωση που το κινητό συγκρούεται μη ελαστικά με τα τοιχώματα του κουτιού, έτσιώστε v x = ev x, v y = ev y, 0 < e Χρησιμοποιείστε τη μέθοδο υπολογισμού του χρόνου που βρίσκεται στα προγράμματα box1d 4.f, box1d 5.f, box1d 6.f και αναπαράγετε τα α- ποτελέσματα του Σχήματος Κινητό πέφτει ελεύθερα στην κατακόρυφη διεύθυνση ξεκινώντας από η- ρεμία από ύψος h. Στο δάπεδο υφίσταται μη ελαστική κρούση έτσι ώστε μετάτηνκρούση v y = ev y με 0 < e 1παράμετρος. Μελετήστε γράφοντας κατάλληλο πρόγραμμα την κίνηση για e = 0.1, 0.5, 0.9, Γενικεύστετοπροηγούμενοπρόγραμμαγια v 0 = v 0x ˆx. Κάνετετο animation της τροχιάς Μελετήστε την κίνηση υλικού σημείου στο κουτί του Σχήματος Μετρήστε σε κάθε βολή πόσες κρούσεις παίρνετε μέχρι το υλικό σημείο ναβγειαπότοκουτί. L x a L y Σχήμα 2.27: Άσκηση Μελετήστε την κίνηση υλικού σημείου στο μπιλιάρδο του Σχήματος Μετρήστε σε κάθε βολή πόσες κρούσεις έχετε μέχρι να πετύχετε μία τρύπα. Το πρόγραμμα να σημειώνει σε ποια τρύπα μπήκε η μπίλια Προγραμματίστε την κίνηση ενός υλικού σημείου μέσα στο επίπεδο κουτί του Σχήματος Στο κέντρο του υπάρχει κύκλος πάνω στον οποίο το υλικό σημείο σκεδάζεται ελαστικά(υποδ.: Χρησιμοποιείστε την υπορουτίνα reflectvonircle του προγράμματος ylinder3d.f).

73 2.5. ΑΣΚ ΗΣΕΙΣ 145 a a a a L y a a a a L x Σχήμα 2.28: Άσκηση L y 2R L x Σχήμα 2.29: Άσκηση Τοποθετήστε στο κουτί της προηγούμενης άσκησης 4 κύκλους πάνω στους οποίους θα ανακλάται το υλικό σημείο(σχήμα 2.30). 2.25ΘεωρήστετηδιάταξητουΣχήματος2.31. Κάθεφοράπουτουλικό σημείο σκεδάζεται σε ένα κύκλο, ο κύκλος εξαφανίζεται. Η κίνηση σταματάει όταν όλοι οι κύκλοι εξαφανιστούν. Κάθε φορά που το υλικό σημείο χτυπάει τον αριστερό τοίχο χάνετε ένα πόντο. Προσπαθήστε να διαλέξτε τροχιές που ελαχιστοποιούν τους χαμένους πόντους.

74 146 ΚΕΦ ΑΛΑΙΟ2. ΠΕΡΙΓΡΑΦ ΗΤΗΣΚ ΙΝΗΣΗΣ L L x y 2a 2R 2R 2R 2R Σχήμα 2.30: Άσκηση L L x y Σχήμα 2.31: Άσκηση 2.25.

75 Κεφάλαιο 3 Κίνηση Σωματιδίου Στο κεφάλαιο αυτό μελετάται αριθμητικά η επίλυση των κλασικών εξισώσεων κίνησης μονοδιάστατων μηχανικών συστημάτων, όπως λ.χ. αυτή του σημειακού σωματιδίου σε μια ευθεία, του απλού εκκρεμούς κλπ. Γίνεται εισαγωγή σε μεθόδους αριθμητικής ολοκλήρωσης διαφορικών εξισώσεων με αρχικές συνθήκες και ιδιαίτερα στη μέθοδο Runge Kutta 4ης τάξης. Τέλος, μελετώνται τα συστήματα του αρμονικού ταλαντωτή και του απλού εκκρεμούς με απόσβεση και οδήγηση από εξωτερική χρονοεξαρτημένη δύναμη. Το τελευταίο σύστημα είναι μη γραμμικό και γίνεται μια εισαγωγή στις χαοτικές ιδιότητές του. 3.1 Αριθμητική Ολοκλήρωση Εξισώσεων Νεύτωνα Το πρόβλημα της λύσης των εξισώσεων κίνησης σωματιδίου υπό την επίδραση δυνάμεωνπουδίνονταιαπότονόμοτουνεύτωναμπορούνναγραφτούνυπότη μορφή d 2 x = a(t, x, v), (3.1) dt2 όπου F a(t, x, v) v = d x m dt. (3.2) Η κλάση των προβλημάτων που θα θεωρήσουμε είναι προβλήματα αρχικών τιμών, δηλ. δίνονται οι αρχικές συνθήκες x(t 0 ) = x 0 v(t 0 ) = v 0, (3.3) 147

76 148 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ οι οποίες προσδιορίζουν μία μοναδική λύση x(t). Η διαφορικές εξισώσεις (3.1) είναι δεύτερης τάξης ως προς τις συναρτήσεις x(t). Για την αριθμητική λύση τους είναι βολικό να ανάγουμε τις εξισώσεις αυτές σε ένα σύστημα από διπλάσιο αριθμό εξισώσεων πρώτου βαθμού: d x dt = v d v dt = a(t, x, v). (3.4) Ειδικά θα ενδιαφερθούμε για την κίνηση σωματιδίου πάνω στην ευθεία(1 διάσταση) και το επίπεδο(2 διαστάσεις) οπότε το σύστημα των εξισώσεων γίνεται dx dt = v x dy dt = v y dx dt = v dv dt = a(t,x,v) 1-διάσταση, (3.5) dv x dt = a x(t,x,v x,y,v y ) 2-διαστάσεις dv y dt = a y(t,x,v x,y,v y ), (3.6) 3.2 Πρελούδιο: Μέθοδοι Euler Για να πάρουμε μια πρώτη γεύση του προβλήματος θα μελετήσουμε το πρόβλημα του εκκρεμούς μήκους l μέσα σε ομογενές πεδίο βαρύτητας g(σχήμα 3.1). Οι εξισώσεις κίνησης δίνονται από το σύστημα διαφορικών εξισώσεων d 2 θ dt 2 dθ dt = g l sinθ που εύκολα ανάγεται στο σύστημα πρώτης τάξης dθ dt dω dt = ω = ω, (3.7) = g l sinθ, (3.8) Το παραπάνω σύστημα πρέπει να γραφτεί σε διακριτή μορφή έτσι ώστε να επιτευχθεί η αριθμητική του επίλυση με τη βοήθεια υπολογιστή. Ο πιο απλός τρόπος είναι να θεωρήσουμε την ολοκλήρωση του συστήματος από τον αρχικό

77 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER 149 θ l m g Σχήμα 3.1: Το εκκρεμές μήκους l μέσα σε ομογενές πεδίο βαρύτητας g. χρόνο t 0 = 0μέχριτελικόχρόνο t f χωρίζονταςτοχρονικόδιάστημα t f t 0 σε N 1ίσαδιαστήματαπλάτους 1 t h,όπου h = (t f t 0 )/(N 1)και προσεγγίζονταςτιςπαραγώγουςαπότιςσχέσεις (x n+1 x n )/ t x n : ω n+1 = ω n +α n t θ n+1 = θ n +ω n t. (3.9) όπου α = (g/l)sinθηγωνιακήεπιτάχυνση. Ημέθοδοςαυτήακούειστο όνομα μέθοδος Euler. Το σφάλμα που εισάγεται από τη μέθοδο σε κάθε βήμα είναιτηςτάξηςτου ( t) 2.Πράγματιαυτόπροκύπτειαπόαπλήανάπτυξηκατά Taylorγύρωαπότοσημείο t n αγνοώνταςόλουςτουςόρουςαπότηδεύτερη παράγωγοκαιπάνω.κατάτηνολοκλήρωσηαπό t 0 σε t f,τοσυνολικόσφάλμα είναιτάξης t! Ολόγοςείναιότιτασφάλματααυτάπροστίθενταισεκάθε βήμακαιαφούοαριθμόςτωνβημάτων N 1/ tτοσυνολικόσφάλμαείναι ( t) 2 (1/ t) = t.ημέθοδος Eulerλέμεότιείναιμιαμέθοδοςπρώτης τάξης και ως εκ τούτου έχει περιορισμένη ακρίβεια. Σαν να μην έφτανε αυτό η μέθοδος αυτή έχει προβλήματα ευστάθειας, ειδικά σε προβλήματα που παρουσιάζουν περιοδικότητα. Η μέθοδος είναι ασύμμετρη γιατί χρησιμοποιεί για την προώθηση της λύσης πληροφορία για τη συνάρτηση μόνο στην αρχή του διαστήματος (t, t + t). Με μια απλή παραλλαγή παίρνουμε τη μέθοδο Euler romer η οποία παρουσιάζει βελτιωμένη συμπεριφορά ως προς την ευστάθεια 1 Εχουμε Nδιακριτούςχρόνους t 0,t 1,...,t N 2,t N 1 t f

78 150 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ θ s (t) θ t Σχήμα3.2:Σύγκλισητηςμεθόδου Eulerγιατοαπλόεκκρεμέςμεπερίοδο T 1.987(ω 2 = 10.0) για διαφορετικές τιμές του βήματος χρόνου t που καθορίζεται από των αριθμό των βημάτων steps= ,000.Ηλύσηείναιγια θ 0 = 0.2, ω 0 = 0.0καισυγκρίνεταιμετη γνωστήλύσηγιαμικρέςγωνίεςμε α(t) (g/l)θ. ανκαιαυτήείναιπρώτηςτάξηςμεσυνολικόσφάλμα t. Γιατολόγοαυτό χρησιμοποιούμε για την προώθηση της γωνίας θ την καινούργια τιμή της γωνιακής ταχύτητας ω n+1 = ω n +α n t θ n+1 = θ n +ω n+1 t. (3.10) Μια μέθοδος που βελτιώνει τους παραπάνω αλγόριθμους ως προς το σφάλμα διακριτοποίησηςείναιοαλγόριθμος Euler Verletοοποίοςδίνειολικόσφάλμα 2 ( t) 2.Αυτόςδίνεταιαπότιςεξισώσεις θ n+1 = 2θ n θ n 1 +α n ( t) 2 ω n = θ n+1 θ n 1 2 t. (3.11) Η μέθοδος Euler Verlet (3.11) είναι μια μέθοδος δύο βημάτων, αφού για την προώθηση της λύσης είναι αναγκαίο να γνωρίζουμε την τιμή της συνάρτησης σε δύο προηγούμενα βήματα. Άρα πρέπει να καθορίσουμε προσεκτικά τις 2 ΔείτετοΠαράρτημα3.7γιατιςλεπτομέρειες.

79 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER θ s (t) θ t Σχήμα 3.3: Σύγκλιση της μεθόδου Euler-romer, παρόμοια με το Σχήμα 3.2. Παρατηρούμε πως η μέθοδος συγκλίνει πολύ γρηγορότερα από την Euler. αρχικές συνθήκες για τα δύο πρώτα βήματα. Για το λόγο αυτό χρησιμοποιούμε τον αλγόριθμο Euler για να προωθήσουμε τις αρχικές συνθήκες ένα βήμα πίσω. Αν θ 1 = θ(t 0 ), ω 1 = ω(t 0 )είναιοιαρχικέςσυνθήκες,τότεορίζουμε θ 0 = θ 1 ω 1 t+ 1 2 α 1( t) 2. (3.12) Επίσης στο τελευταίο βήμα θα πρέπει να πάρουμε ω N = θ N θ N 1 t. (3.13) Παρόλο που η μέθοδος έχει μικρότερο συνολικό σφάλμα από τη μέθοδο Euler, το πρόβλημά της είναι ότι παρουσιάζεται ασταθής. Στη δεύτερη των εξισώσεων (3.11) η γωνιακή ταχύτητα προκύπτει από το λόγο δύο μικρών αριθμών, εκ των οποίων ο παρονομαστής είναι η διαφορά δύο μεγάλων αριθμών. Για μικρό χρόνο t, η πληροφορία βρίσκεται αρκετά δεκαδικά ψηφία πέρα από τα αρχικά και αφού ο υπολογιστής έχει πεπερασμένη ακρίβεια σε κάποια στιγμή η ακρίβεια της πληροφορίας γίνεται πολύ μικρή ή και χάνεται τελείως. Στην πρώτη των εξισώσεων (3.11),οόρος α n t 2 είναικατάμίατάξηωςπρος tμικρότερος απότοναντίστοιχοόρο α n tτηςμεθόδου Euler.Μειώνονταςτο t,γρήγορα

80 152 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ θ s (t) θ t Σχήμα 3.4: Σύγκλιση της μεθόδου Euler-Verlet, παρόμοια με το Σχήμα 3.2. Παρατηρούμε πως η μέθοδος συγκλίνει πολύ γρηγορότερα από την Euler αλλά τα σφάλματα στρογγυλοποίησηςκάνουντημέθοδοάχρηστηγια steps 50,000(προσέξτετιγίνεται για steps= 100, 000. Γιατί;). έχουμεα n t 2 2θ n θ n 1 καιηακρίβειατηςμεθόδουεκμηδενίζεταιλόγωτης πεπερασμένης ακρίβειας των πραγματικών αριθμών στη μνήμη του υπολογιστή. Ο προγραμματισμός των μεθόδων αυτών είναι ιδιαίτερα απλός. Γράφουμε ένα πρόγραμμα που θα κάνει σύγκριση και των τρίων μεθόδων, Euler, Euler- romer και Euler-Verlet. Για το λόγο αυτό το κυρίως πρόγραμμα είναι απλά ένα interface με το χρήστη και για τους υπολογισμούς καλούνται διαφορετικές υ- πορουτίνες euler, euler cromer και euler verlet. Ο χρήστης απλά πρέπει να προγραμματίσει την κοινή σε όλους του υπολογισμούς συνάρτηση accel(x) που δίνει τη γωνιακή επιτάχυνση συναρτήσει της γωνίας θ(εδώ η μεταβλητή REAL x). Στην παράγραφο αυτή παίρνουμε accel(x)= * sin(x). Η δομή των δεδομένων είναι πολύ απλή: Σε τρία arrays REAL T(P), X(P) καιv(p)αποθηκεύονταιαντίστοιχαοιχρόνοι t n,γωνιακέςθέσειςθ n καιγωνιακέςταχύτητες ω n για n = 1,...,steps. Οχρήστηςπροσδιορίζειτοχρονικό διάστηματηςολοκλήρωσηςαπό t i = 0σε t f = Tfiκαθώςκαιτοναριθμό των βημάτων ολοκλήρωσης steps τα οποία πρέπει να είναι λιγότερα από το μέγεθος Pτων arrays. Δίνειτιςαρχικέςσυνθήκες θ 0 = Xinκαι ω 0 = Vin. Στη συνέχεια οι υπορουτίνες των μεθόδων καλούνται και στην είσοδο τους

81 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER v t Σχήμα3.5: Σύγκλισητηςμεθόδου EulerγιατοαπλόεκκρεμέςπαρόμοιαμετοΣχήμα3.2 αλλάγια θ 0 = 3.0, ω 0 = 0.0. Εδώδείχνουμετησυμπεριφοράτηςγωνιακήςταχυτήταςκαι παρατηρούμεμεγάληαστάθειαγια steps 1,000. παρέχουμε τις αρχικές συνθήκες, διάστημα ολοκλήρωσης και αριθμό βημάτων Xin,Vin,Tfi,steps ενώ στην έξοδο μας παρέχουν τα αποτελέσματα αποθηκευμένα στα arrays T,X,V. Στη συνέχεια τα αποτελέσματα τυπώνονται στα αρχεία euler.dat, euler cromer.dat και euler verlet.dat. Οι υπορουτίνες υπολογισμού ακολουθούν τη διαδικασία καθορισμού των αρχικώνσυνθηκών,υπολογισμούτουχρόνου t h = Tfi/(steps 1)και εκτελούντουςβρόχουςπουθαπροωθούντηλύσημεβήμα t.σεκάθεβήμα τα αποτελέσματα αποθηκέυονται στα arrays T,X,V. Ετσι το απλό τμήμα του κώδικα T(1) = 0.0 X(1) = Xin V(1) = Vin h = Tfi/(steps-1) do i = 2,steps T(i) = T(i-1)+h X(i) = X(i-1)+V(i-1)*h V(i) = V(i-1)+accel(X(i-1))*h enddo

82 154 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ v t Σχήμα 3.6: Σύγκλιση της μεθόδου Euler-romer, παρόμοια με το Σχήμα 3.5. Παρατηρούμε πως η μέθοδος συγκλίνει πολύ γρηγορότερα από την Euler. εκτελεί τις απαραίτητες εντολές για τη μέθοδο Euler. Λίγη προσοχή πρέπει να δοθεί στη μέθοδο Euler-Verlet όπου πρέπει να καθοριστούν τα δύο πρώτα βήματα, καθώς και το τελευταίο για την ταχύτητα: T(1) = 0.0 X(1) = Xin V(1) = Vin X0 = X(1) - V(1) * h + accel(x(1)) *h*h/2.0 T(2) = h X(2) = 2.0*X(1) - X0 + accel(x(1)) *h*h do i = 3,steps... enddo V(steps)= (X(steps)-X(steps-1))/h Για διευκόλυνση του αναγνώστη παραθέτουμε ολόκληρο το πρόγραμμα παρακάτω: Program to integrate equations of motion for accelerations

83 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER v t Σχήμα 3.7: Σύγκλιση της μεθόδου Euler-Verlet, παρόμοια με το Σχήμα 3.5. Παρατηρούμε πως η μέθοδος συγκλίνει πολύ γρηγορότερα από την Euler αλλά τα σφάλματα στρογγυλοποίησηςκάνουντημέθοδοπολύγρήγοραασταθήγια steps 18,000. which are functions of x with the method of Euler, Euler-romer and Euler-Verlet. The user sets initial conditions and the subroutines return X(t) and V(t)=dX(t)/dt in arrays T(1..STEPS),X(1..STEPS),V(1..STEPS) The user provides number of integration STEPS and the final time TFI.Initial time is assumed to be t_0=0 and the integration step h = TFI/(STEPS-1) The user programs a real function accel(x) which gives the acceleration dv(t)/dt as function of X. NOTE: T(1) = 0 T(STEPS) = TFI and there are STEPS-1 aditional steps after the initial point program diff_eq_euler implicit none! We force ourselved to declare all variables integer P! The size of the arrays, should be larger parameter(p=110000)! than number of steps real T(P),X(P),V(P)! time t,x(t),v(t)=dx/dt real Xin,Vin,Tfi! initial conditions

84 156 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ integer steps,i!t_0 = 0.0 The user provides initial conditions X_0,V_0 final time t_f and number of steps: print *, Enter X_0,V_0,t_f,number of steps (t_0=0): read(5,*)xin,vin,tfi,steps This check is necessary to avoid memory violations: if(steps.ge. P )then print *, steps must be strictly less than P. steps,p=,steps,p stop endif Xin= X(1), Vin=V(1), T(1)=0 and the routine gives evolution in T(2..STEPS), X(2..STEPS), V(2..STEPS) which we print in a file call euler(xin,vin,tfi,steps,t,x,v) open(unit=20,file="euler.dat")!filename euler.dat given here do i=1,steps Each line in data file has time, position, velocity: write(20,*) T(i),X(i),V(i) enddo close(20)!we close the unit to be reused below We repeat everything for each method call euler_cromer(xin,vin,tfi,steps,t,x,v) open(unit=20,file="euler_cromer.dat") do i=1,steps write(20,*) T(i),X(i),V(i) enddo close(20) call euler_verlet(xin,vin,tfi,steps,t,x,v) open(unit=20,file="euler_verlet.dat") do i=1,steps write(20,*) T(i),X(i),V(i) enddo close(20)

85 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER 157 end Function which returns the value of acceleration at position x used in the integration subroutines euler, euler_cromer and euler_verlet real function accel(x) implicit none real x accel = -10.0*sin(x) end Driver routine for integrating equations of motion using the Euler method Input: Xin=X(1), Vin=V(1) -- initial condition at t=0, Tfi the final time and steps the number of steps of integration (the initial point is counted as the first one) Output: The arrays T(1..steps), X(1..steps), V(1..steps) which gives x(t_i)=x(i), dx/dt(t_i)=v(i), t_i=t(i) i=1..steps where for i=1 we have the initial condition. subroutine euler(xin,vin,tfi,steps,t,x,v) implicit none integer P parameter(p=110000) real T(P),X(P),V(P)!time t,x(t),v(t)=dx/dt real Xin,Vin,Tfi integer steps,i real h,accel!**note: we have to declare the function accel** Initial conditions set here: T(1) = 0.0 X(1) = Xin V(1) = Vin

86 158 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ h is the time step Dt h = Tfi/(steps-1) do i = 2,steps T(i) = T(i-1)+h! time advances by Dt X(i) = X(i-1)+V(i-1)*h! advancement and storage of position V(i) = V(i-1)+accel(X(i-1))*h!... and velocity. Here we call accel(x enddo end Driver routine for integrating equations of motion using the Euler-romer method Input: Xin=X(1), Vin=V(1) -- initial condition at t=0, Tfi the final time and steps the number of steps of integration (the initial point is counted as the first one) Output: The arrays T(1..steps), X(1..steps), V(1..steps) which gives x(t_i)=x(i), dx/dt(t_i)=v(i), t_i=t(i) i=1..steps where for i=1 we have the initial condition. subroutine euler_cromer(xin,vin,tfi,steps,t,x,v) implicit none integer P parameter(p=110000) real T(P),X(P),V(P)!time t,x(t),v(t)=dx/dt real Xin,Vin,Tfi integer steps,i real h,accel T(1) = 0.0 X(1) = Xin V(1) = Vin h = Tfi/(steps-1) do i = 2,steps T(i) = T(i-1)+h V(i) = V(i-1)+accel(X(i-1))*h

87 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER 159 X(i) = X(i-1)+V(i)*h!here is the difference compared to Euler enddo end Driver routine for integrating equations of motion using the Euler - Verlet method Input: Xin=X(1), Vin=V(1) -- initial condition at t=0, Tfi the final time and steps the number of steps of integration (the initial point is counted as the first one) Output: The arrays T(1..steps), X(1..steps), V(1..steps) which gives x(t_i)=x(i), dx/dt(t_i)=v(i), t_i=t(i) i=1..steps where for i=1 we have the initial condition. subroutine euler_verlet(xin,vin,tfi,steps,t,x,v) implicit none integer P parameter(p=110000) real T(P),X(P),V(P)!time t,x(t),v(t)=dx/dt real Xin,Vin,Tfi integer steps,i real h,g_over_l parameter(g_over_l=10.0) real h2,x0,o2h real accel Initial conditions set here: T(1) = 0.0 X(1) = Xin V(1) = Vin h = Tfi/(steps-1)! time step h2 = h*h! time step squared o2h = 0.5/h! h/2 We have to initialize one more step: X0 corresponds to X(0) X0 = X(1) - V(1) * h + accel(x(1)) *h2/2.0

88 160 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ T(2) = h X(2) = 2.0*X(1) - X0 + accel(x(1)) *h2 Now i starts from 3: do i = 3,steps T(i) = T(i-1)+h X(i) = 2.0*X(i-1) - X(i-2) + accel(x(i-1))*h2 V(i-1) = o2h * (X(i)-X(i-2)) enddo Notice that we have one more step for the velocity: V(steps)= (X(steps)-X(steps-1))/h end Η μεταγλώττιση και το τρέξιμο του προγράμματος γίνονται πολύ απλά με τις εντολές: > f77 euler.f -o euler >./euler Enter X_0,V_0,t_f,number of steps (t_0=0): > ls euler*.dat euler_cromer.dat euler.dat euler_verlet.dat > head -n 5 euler.dat E E E E E E E E-02 Η τελευταία εντολή μας δείχνει τις 5 πρώτες γραμμές του αρχείου euler.dat όπουβλέπουμετις3στήλεςμετοχρόνο,θέσηκαιταχύτηταπουδίνειημέθοδος. Για να δούμε γραφικά τα αποτελέσματα μπορούμε να χρησιμοποιοήσουμε τοπρόγραμμα gnuplot 3 : > gnuplot G N U P L O T Version 4.0 patchlevel 0 3

89 3.2. ΠΡΕΛΟ ΥΔΙΟ:Μ ΕΘΟΔΟΙ EULER 161 last modified Thu Apr 15 14:44:22 EST gnuplot> plot "euler.dat" using 1:2 with lines gnuplot> plot "euler.dat" using 1:3 with lines κάνει απλές γραφικές παραστάσεις των θέσεων και ταχυτήτων αντίστοιχα συναρτήσει του χρόνου. Στην τελευταία μπορούμε να προσθέσουμε και τα αποτελέσματα των άλλων μεθόδων δίνοντας στη συνέχεια τις εντολές: gnuplot> replot "euler_cromer.dat" using 1:3 with lines gnuplot> replot "euler_verlet.dat" using 1:3 with lines Τα αποτελέσματα φαίνονται στα Σχήματα Παρατηρούμε ότι η μέθοδος Euler είναι ασταθής εκτός αν πάρουμε το βήμα χρόνου πάρα πολύ μικρό. Η μέθοδος Euler Verlet έχει πολύ καλύτερη συμπεριφορά. Τα αποτελέσματα συγκλίνουν γρήγορα και παραμένουν σταθερά και για μεγάλο αριθμό βημάτων steps 100, 000. Η μέθοδος Euler Verlet συγκλίνει γρήγορα αλλά σύντομα παρατηρούμε τα σφάλματα συσσώρευσης γίνονται φανερά εξαιτίας της Σχέσης (3.11). Το φαινόμενο αυτό είναι εντονότερο για αρχικές συνθήκες με μεγάλη αρχική γωνιακή απόκλιση, όπως φαίνεται στο Σχήμα 3.7. Στα Σχήματα όπου η αρχική γωνιακή απόκλιση είναι μικρή, συγκρίνουμε τη λύση που παίρνουμεμετηλύσηγιατοαρμονικόεκκρεμές(sin(θ) θ): α(θ) = g l θ Ω2 θ θ(t) = θ 0 cos(ωt)+(ω 0 /Ω)sin(Ωt) ω(t) = ω 0 cos(ωt) (θ 0 Ω)sin(Ωt), (3.14) όπου παρατηρούμε ταύτιση για τις τιμές του t που οι μέθοδοι συγκλίνουν. Μετοντρόποαυτόελέγχουμετονκώδικαγιαπιθανάσφάλματακαιγιατην ορθότητα των αποτελεσμάτων. Για το γράφημα των παραπάνω συναρτήσεων μπορούμε να δώσουμε τις παρακάτων εντολές στο πρόγραμμα gnuplot: gnuplot> set dummy t #makes t the independent variable in functions gnuplot> omega2 = 10 gnuplot> X0 = 0.2 gnuplot> V0 = 0.0 gnuplot> omega = sqrt(omega2) gnuplot> x(t) = X0 * cos(omega * t) +(V0/omega)*sin(omega*t) gnuplot> v(t) = V0 * cos(omega * t) -(omega*x0)*sin(omega*t) gnuplot> plot x(t), v(t)

90 162 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ Η σύγκριση των αποτελεσμάτων με τα θεωρητικά, ιδιαίτερα όταν οι διαφορές δεν διακρίνονται με γυμνό μάτι ή όταν η ποσοτική ανάλυση είναι επιθυμητή, μπορεί να γίνει αναπαριστώντας γραφικά τις διαφορές των υπολογισθέντων από τις θεωρητικές τιμές. Οι σχετικές γραφικές παραστάσεις γίνονται με τις εντολές: gnuplot> plot "euler.dat" using 1:($2-x($1)) with lines gnuplot> plot "euler.dat" using 1:($3-v($1)) with lines Οι εντολή using 1:($2-x($1)) σε απλά ελληνικά λέει Κάνε τη γραφική παράσταση χρησιμοποιώντας στο άξονα των y την τιμή της 2ης στήλης του euler.datμείοντηντιμήτηςσυνάρτησης x(t)για tίσομετηναντίστοιχητιμήτηςπρώτηςστήλης. Μετοντρόποαυτό(καιμεμικρήμετατροπή για να υπολογίζουμε την απόλυτη τιμή της διαφοράς) φτιάχνουμε τα Σχήματα Μέθοδοι Runge Kutta Στην προηγούμενη παράγραφο είδαμε μία μέθοδο πεπερασμένων διαφορών ενός βήματος πρώτης τάξης, τη μέθοδο Euler. Αυτό σημαίνει πως όταν προσεγγίζουμετηνολοκλήρωσημε N διακριτάβήματααπόχρόνο t i σεχρόνο t f με βήμα t h = (t f t 0 )/Nτοσφάλμαδιακριτοποίησηςείναιτάξης O(h). Γεννάται το ερώτημα αν είναι δυνατόν να βρεθεί αλγόριθμος ολοκλήρωσης ο οποίος να κάνει τα σφάλματα να είναι ανώτερης τάξης. Μια κλάση τέτοιων μεθόδων είναι οι μέθοδοι Runge Kutta. Οι μέθοδοι αυτοί είναι επαγωγικοί ενόςβήματος,δηλ. ηεπόμενηθέσηπροκύπτειαπλάαπότηγνώσητηςπροηγούμενης. Αυτό είναι σε αντίθεση με μεθόδους δύο ή πολλαπλών βημάτων όπως η μέθοδος Euler Verlet όπου η γνώση της επόμενης θέσης απαιτεί να γνωρίζουμε τη θέση του σωματιδίου για δύο προηγούμενα βήματα. Η μέθοδος Runge Kuttaτάξης pέχεισφάλμα O(h p ).Αυτόσημαίνειότισεκάθεβήμα εισάγεταισφάλμαδιακριτοποίησηςτάξης O(h p+1 )αφούτότετοσφάλμαμετα από N = (t f t 0 )/ tβήματαθαείναιτάξης O(h p+1 ) N = O(h p+1 ) t f t 0 t O(h p+1 ) 1 h = O(hp ). (3.15) Ας θεωρήσουμε για απλότητα το πρόβλημα με μια άγνωστη συνάρτηση x(t) η οποία εξελίσεται στο χρόνο σύμφωνα με τη διαφορική εξίσωση: dx dt = f(t,x). (3.16)

91 3.3. Μ ΕΘΟΔΟΙ RUNGE KUTTA 163 x t t t n n+1 n+2 h Σχήμα3.8:Ηγεωμετρίατουβήματοςτηςμεθόδου1ηςτάξηςπουδίνεταιαπότηνΕξίσωση (3.17). t Αςδούμεπρώταμίαμέθοδοπρώτηςτάξης.Ηπιόαφελήςπροσέγγισηθαήταν να πάρουμε την παράγωγο να μας δίνει την πεπερασμένη διαφορά, δηλ. dx dt x n+1 x n t = f(t n,x n ) x n+1 = x n +hf(t n,x n ) (3.17) ΑναπτύσσονταςκατάTaylorβλέπουμεότιτοσφάλμασεκάθεβήμαείναι O(h 2 ), άρατοσφάλμαγιατηνεξέλιξηαπό t i t f είναι O(h).Πράγματι x n+1 = x(t n +h) = x n +h dx dt (x n)+o(h 2 ) = x n +hf(t n,x n )+O(h 2 ). (3.18) Η γεωμετρία του βήματος φαίνεται στο Σχήμα 3.8. Επιλέγεται το σημείο 1 και απόεκείμεγραμμικήεπέκτασηστηνκατεύθυνσητηςπαραγώγουk 1 f(t n,x n ) προσδιορίζουμετοσημείο x n+1. Βελτίωση της μεθόδου προκύπτει αν πάρουμε ένα ενδιάμεσο σημείο 2. ΑυτηηδιαδικασίαφαίνεταιστοΣχήμα3.9καιέγκειταιστοναπάρουμετοενδιάμεσοσημείο2στομέσοτουδιαστήματος (t n,t n+1 )μεγραμμικήπροέκταση

92 164 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ x k k 1 t t t n n+1/2 n+1 t h/2 h/2 Σχήμα3.9:Ηγεωμετρίατουβήματοςτηςμεθόδου2ηςτάξηςπουδίνεταιαπότηνΕξίσωση (3.19). απότο x n χρησιμοποιώνταςτηνκλίσηπουδίνεταιαπότηνπαράγωγοστο x n k 1 f(t n,x n ). Στησυνέχειαχρησιμοποιούμεωςεκτιμητήτηςπαραγώγου στοδιάστημααυτότηνκλίσηστοσημείο2δηλ. k 2 f(t n+1/2,x n+1/2 ) = f(t n +h/2,x n + (h/2)k 1 )καιτηχρησιμοποιούμεγιαναπροεκτείνουμεγραμμικάαπότο x n στο x n+1.συνοψίζονταςέχουμε k 1 = f(t n,x n ) k 2 f(t n + h 2,x n + h 2 k 1) x n+1 = x n +hk 2. (3.19) Αυτό που θα δείξουμε είναι ότι παρόλο που χρειάζεται να υπολογίσουμε τη συνάρτηση f δύο φορές σε κάθε βήμα, διπλασιάζοντας ουσιαστικά τον υπολογιστικόχρόνο,τοσφάλμαστοβήμα (3.19) είναι O(h 3 )άρατοσυνολικό σφάλμαείναι O(h 2 ),οπότεαναγκαστικάη (3.19) θαυπερτερήσειτης (3.17) σε ακρίβεια ακόμα και αν συγκριθούν σε δεδομένο υπολογιστικό χρόνο, δηλ. η

93 3.3. Μ ΕΘΟΔΟΙ RUNGE KUTTA 165 (3.19) σεβήμα hκαιη (3.17) σε h/2. 4 x 2 k 2 01 k k 1 3 k 3 4 t t t n n+1/2 n+1 t h/2 h/2 Σχήμα 3.10: Η γεωμετρία του βήματος της μεθόδου 4ης τάξης που δίνεται από την Εξίσωση (3.20). Η βελτίωση γίνεται περισσότερο αισθητή με τη μέθοδο Runge Kutta 4ης τάξης. Στην περίπτωση αυτή έχουμε 4 υπολογισμούς τη συνάρτησης f αλλά τοσυνολικόσφάλμαείναιτώρα O(h 4 ),οπότεγιατουςίδιουςλόγουςημέθοδοςθαυπερτερήσειτελικάσεακρίβειατης (3.19) 5. Ηδιαδικασίαπουθα ακολουθήσουμε εξηγήται γεωμετρικά στο Σχήμα Χρησιμοποιούμε τώρα 3ενδιάμεσασημείαγιατηνπροώθησηαπότο x n στο x n+1. Αρχικάχρησιμοποιώνταςτηνκλίσηπουδίνεταιαπότηνπαράγωγοστο x n k 1 f(t n,x n ), βρίσκουμετοενδιάμεσοσημείο2στομέσοτουδιαστήματος (t n,t n+1 = t n +h) δηλ. x 2 = x n + (h/2)k 1. Υπολογίζουμετηνπαράγωγοτηςσυνάρτησηςστο σημείο2δηλ. k 2 f(t n + h/2,x n + (h/2)k 1 )καιτηχρησιμοποιούμεγιανα προεκτείνουμεγραμμικάαπότο x n στοενδιάμεσοσημείο3,πάλιστομέσοτου 4 Οπωςφαίνεταιστηνπράξη,η (3.17) πάσχεικαιαπόπροβλήματασταθερότηταςπερισσότερο από την (3.19) οπότε συνίσταται να απογεύγεται. 5 Πάντα;Χμμμμμ,όχιπάντα!Μεγαλύτερηςτάξηςδενσημαίνειαναγκαστικάκαιμεγαλύτερης ακρίβειας αν και τις περισσότερες φορές αυτό είναι σωστό.

94 166 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ διαστήματος (t n,t n+1 ),δηλ. x 3 = x n +(h/2)k 2.Υπολογίζουμετηνπαράγωγο τηςσυνάρτησης k 3 f(t n +h/2,x n +(h/2)k 2 )καιτηχρησιμοποιούμεγιανα προεκτείνουμεπροςτοσημείο4,τοοποίοτώρατοπαίρνουμεστοάκροτου διαστήματοςδηλ. με t 4 = t n + h,οπότεπαίρνουμε x 4 = x n + hk 3. Κάνουμε ένατέταρτουπολογισμότηςπαραγώγου k 4 f(t n + h,x n + hk 3 )καιχρησιμοποιούμεκαιτις4παραγώγους k 1,k 2,k 3 και k 4 ωςεκτιμητέςτηςπαραγώγου της συνάρτησης. Εκείνο που έδειξαν οι Runge Kutta είναι ότι το σφάλμα διακριτοποιήσηςσεκάθεβήμαστηνπροώθησητηςσυνάρτησηςγίνεται O(h 5 )αν πάρουμε: k 1 = f(t n,x n ) k 2 = f(t n + h 2,x n + h 2 k 1) k 3 = f(t n + h 2,x n + h 2 k 2) k 4 = f(t n +h,x n +hk 3 ) x n+1 = x n + h 6 (k 1 +2k 2 +2k 3 +k 4 ). (3.20) Οδεύτεροςόροςστηντελευταίαεξίσωσηείναιέναςμέσοςόροςτων4παραγώγων με το κατάλληλο βάρος ώστε να πετύχουμε την εξουδετέρωση των σφαλμάτωνμέχριτάξης h 5. Τέλος θα κλείσουμε συζητώντας μία απορία που πιθανώς θα έχει δημιουργθεί στον αναγνώστη: Συζητήσαμε πώς είναι δυνατόν κανείς να μειώσει τα σφάλματα διακριτοποίησης χρησιμοποιώντας αλγόριθμους των οποίων τα σφάλματα αυτά μειώνονται κατα το δυνατόν γρηγορότερα με το βήμα στο χρόνο h, συνήθωςσαν h p. Άραμπορείκανείςναυποθέσειότι PUχρόνουεπιτρέποντος -το οποίο δεν αποτελεί σοβαρό εμπόδιο στις απλές περιπτώσεισ- μπορούμε να πλησιάσουμε αυθαίρετα κοντά στην αναλυτική λύση σε επίπεδο ακρίβειας μηχανής. Αυτό όμως δεν είναι σωστό. Μια άλλη κατηγορία σφαλμάτων είναι τα σφάλματα στρογγυλοποίησης τα οποία προστίθενται σε κάθε βήμα εφαρμογής της μεθόδου. Αυτά συσσωρεύονται ανάλογα με τον αριθμό των βημάτων, ο- πότεγιαπολύμικρό h,άρακαιπολύμεγάλοαριθμόβημάτων,αυτάθαγίνουν μεγαλύτερα από την επιθυμητή ακρίβεια. Αυτή η κατηγορία σφαλμάτων εξαρτάται από το hardware, τη γλώσσα προγραμματισμού ή/και το μεταγλωττιστή και τέλος από τον αλγόριθμο. Για το τελευταίο ας δώσουμε ένα παράδειγμα: Εστω ότι θέλουμε να υπολογίσουμε την παράγωγο μιάς συνάρτησης από τη

95 3.3. Μ ΕΘΟΔΟΙ RUNGE KUTTA 167 σχέση f (t) = f(t+h) f(t) h παίρνοταςτο hαυθαίρεταμικρό. Ανυποθέσουμεότιηπαράγωγοςκαιοιτιμές της συνάρτησης είναι πεπερασμένοι αριθμοί O(1), τότε ο αριθμητής θα πρέπειναείναι O(h). Οταντο hγίνειτηςτάξηςτηςακρίβειαςτων REAL(ή των REAL*8κλπ)τότεοαριθμητήςπουείναιηδιαφοράδύοαριθμώνπερίπου ίσωνκαιτηςτάξηςτηςμονάδαςθααρχίσειναχάνεισημαντικάσεακρίβειασε σχέση με την πραγματική τιμή μέχρι που θα είναι ένας άχρηστος αριθμός. Αυτό συμβαίνει γενικά όταν αφαιρούμε αριθμούς περίπου ίσους ή όταν προσθέτουμε αριθμούς που η τάξη μεγέθους τους διαφέρει περισσότερο από την ακρίβεια του υπολογιστή. Άρα και όταν χρησιμοποιούμε τη σχέση, x n+1 = x n +ho(x n ) γιαπολύμικρόβήμαhκαιo(x)τηςτάξηςμεγέθοςτου x n,τασφάλματαστρογγυλοποίησης θα είναι σημαντικά και θα αυξάνουν προσθετικά με τον αριθμό των βημάτων Προγραμματισμός της Runge Kutta 4ης τάξης Ας συζητήσουμε τώρα τον προγραμματισμό της μεθόδου Runge Kutta 4ης τάξης για την περίπτωση της κίνησης ενός σωματιδίου σε μία διάσταση. Για το λόγο αυτό θα πρέπει να ολοκληρώσουμε το σύστημα διαφορικών εξισώσεων (3.5) που είναι ένα σύστημα εξισώσεων για τις δύο συναρτήσεις του χρόνου x 1 (t) x(t)και x 2 (t) v(t)γιατιςοποίεςέχουμε dx 1 dt = f 1(t,x 1,x 2 ) dx 2 dt = f 2(t,x 1,x 2 ) (3.21) Στην περίπτωση αυτή η μέθοδος Runge Kutta 4ης τάξης που δίνεται στην

96 168 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ εξίσωση (3.20) γενικεύεται ως εξής: k 11 = f 1 (t n,x 1,n,x 2,n ) k 21 = f 2 (t n,x 1,n,x 2,n ) k 12 = f 1 (t n + h 2,x 1,n + h 2 k 11,x 2,n + h 2 k 21) k 22 = f 2 (t n + h 2,x 1,n + h 2 k 11,x 2,n + h 2 k 21) k 13 = f 1 (t n + h 2,x 1,n + h 2 k 12,x 2,n + h 2 k 22) k 23 = f 2 (t n + h 2,x 1,n + h 2 k 12,x 2,n + h 2 k 22) k 14 = f 1 (t n +h,x 1,n +hk 13,x 2,n +hk 23 ) k 24 = f 2 (t n +h,x 1,n +hk 13,x 1,n +hk 23 ) x 1,n+1 = x 1,n + h 6 (k 11 +2k 12 +2k 13 +k 14 ) x 2,n+1 = x 1,n + h 6 (k 21 +2k 22 +2k 23 +k 24 ). (3.22) Ο προγραμματισμός της μεθόδου είναι απλός. Στο κυρίως πρόγραμμα έχουμεαπλό interfaceμετοχρήστηκαιτουζητάμετααπαραίτηταδεδομένα: Το χρόνοολοκλήρωσηςαπό t 0 =T0έως t f = TFκαιτοναριθμότωνβημάτων N = STEPS+1.Τιςαρχικέςσυνθήκεςx 1 (t 0 ) = X10, x 2 (t 0 ) =X20.Ηδομήτωνδεδομένων είναι απλή: Τρία arrays T(P), X1(P), X2(P) αποθηκεύουν τις τιμές του χρόνου t 1,t 2,...,t STEPS+1 καιτιςαντίστοιχεςτιμέςτωνσυναρτήσεων x 1 (t i )και x 2 (t i ).ΤοπρόγραμμακαλείτηνυπορουτίναRK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) η οποία είναι ο οδηγός της μεθόδου, δηλ. οδηγεί την καρδιά του προγράμματος την υπορουτίνα RKSTEP(t,x1,x2,dt) η οποία εφαρμόζει τους τύπους (3.22) καιπροωθείτιςτιμέςτωνσυναρτήσεων x1, x2τηχρονικήστιγμή tκατάένα βήμα h = dt. Κάθε βήμα, αφού οριστούν οι αρχικές συνθήκες καταγράφεται στην RKστα arrays T, X1και X2. ΟτανηRKεπιστρέψειτονέλεγχοστοκυρίως πρόγραμμα, τα αποτελέσματα είναι καταχωρημένα στα T, X1 και X2, τα οποία τυπώνονται στο αρχείο rk.dat. Παρακάτων παραθέτουμε το πρόγραμμα για να διευκολύνουμε τον αναγνώστη: Program to solve a 2 ODE system using Runge-Kutta Method User must supply derivatives

97 3.3. Μ ΕΘΟΔΟΙ RUNGE KUTTA 169 dx1/dt=f1(t,x1,x2) dx2/dt=f2(t,x1,x2) as real functions Output is written in file rk.dat program rk_solve implicit none integer P parameter(p=10000) real T0,TF,X10,X20 integer STEPS,PSIZE real T(P),X1(P),X2(P) integer i Input: print *, Runge-Kutta Method for 2-ODEs Integration print *, Enter STEPS,T0,TF,X10,X20: read(5,*) STEPS,T0,TF,X10,X20 print *, No. Steps=,STEPS print *, Time: Initial T0 =,T0, Final TF=,TF print *, X1(T0)=,X10, X2(T0)=,X20 The alculation: PSIZE=P call RK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) Output: open(unit=11,file= rk.dat ) do i=1,steps+1 write(11,*)t(i),x1(i),x2(i) enddo close(11) end The functions f1,f2(t,x1,x2) provided by the user

98 170 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ real function f1(t,x1,x2) implicit none real t,x1,x2 f1=x2!dx1/dt= v = x2 end real function f2(t,x1,x2) implicit none real t,x1,x2 f2=-10.0d0*x1!dx2/dt=dv/dt=a harmonic oscillator end RK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) is the driver for the Runge-Kutta integration routine RKSTEP Input: Initial and final times T0,T1 Initial values at t=t0 X10,X20 Number of steps of integration STEPS Size of arrays T,X1,X2 Output: real arrays T(PSIZE),X1(PSIZE),X2(PSIZE) where T(1) = T0 X1(1) = X10 X2(1) = X20 X1(i) = X1(at t=t(i)) X2(i) = X2(at t=t(i)) T(STEPS+1)=TF Therefore we must have PSIZE>STEPS subroutine RK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) implicit none integer STEPS,PSIZE real T(PSIZE),X1(PSIZE),X2(PSIZE),T0,TF,X10,X20 real dt real TS,X1S,X2S!values of time and X1,X2 at given step integer i Some checks: if(steps.le. 1 )then print *, rk: STEPS must be >= 1 stop endif

99 3.3. Μ ΕΘΟΔΟΙ RUNGE KUTTA 171 if(steps.ge. PSIZE)then print *, rk: STEPS must be <,PSIZE stop endif Initialize variables: dt = (TF-T0)/STEPS T (1) = T0 X1(1) = X10 X2(1) = X20 TS = T0 X1S = X10 X2S = X20 Make RK steps: The arguments of RKSTEP are replaced with the new ones! do i=2,steps+1 call RKSTEP(TS,X1S,X2S,dt) T(i) = TS X1(i) = X1S X2(i) = X2S enddo end Subroutine RKSTEP(t,x1,x2,dt) Runge-Kutta Integration routine of ODE dx1/dt=f1(t,x1,x2) dx2/dt=f2(t,x1,x2) User must supply derivative functions: real function f1(t,x1,x2) real Function f2(t,x1,x2) Given initial point (t,x1,x2) the routine advnaces it by time dt. Input : Inital time t and function values x1,x2 Output: Final time t+dt and function values x1,x2 areful!: values of t,x1,x2 are overwritten... subroutine RKSTEP(t,x1,x2,dt)

100 172 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ implicit none real t,x1,x2,dt real f1,f2 real k11,k12,k13,k14,k21,k22,k23,k24 real h,h2,h6 h =dt!h =dt, integration step h2=0.5d0*h!h2=h/2 h6= d0*h!h6=h/6 k11=f1(t,x1,x2) k21=f2(t,x1,x2) k12=f1(t+h2,x1+h2*k11,x2+h2*k21) k22=f2(t+h2,x1+h2*k11,x2+h2*k21) k13=f1(t+h2,x1+h2*k12,x2+h2*k22) k23=f2(t+h2,x1+h2*k12,x2+h2*k22) k14=f1(t+h,x1+h *k13,x2+h *k23) k24=f2(t+h,x1+h *k13,x2+h *k23) t =t+h x1=x1+h6*(k11+2.0d0*(k12+k13)+k14) x2=x2+h6*(k21+2.0d0*(k22+k23)+k24) end 3.4 Σύγκριση των Μεθόδων Στην παράγραφο αυτή θα κάνουμε έλεγχο ορθότητας των προγραμμάτων μας και θα μετρήσουμε την ακρίβειά τους ως προς τα ολικά σφάλματα διακριτοποίησης. Τοπιοαπλότεστστοοποίομπορούμεναταυποβάλλουμεείναινα συγκρίνουμε τα αριθμητικά αποτελέσματα σε ένα σύστημα για το οποίο έχουμε γνωστή την αναλυτική λύση. Θα διαλέξουμε να το κάνουμε για την περίπτωση του απλού αρμονικού ταλαντωτή. Οι αλλαγές που θα κάνουμε στα προγράμματα είναι μικρές και θα τις αναφέρουμε περιληπτικά. Κατ αρχήν μετατρέπουμε όλες τις μεταβλητές REAL σε διπλής ακρίβειας REAL*8. Απλά αλλάζουμε τις δηλώσεις στα κατάλληλα σημεία του προγράμματος και προσθέτουμε ένα D0 σε

101 3.4. Σ ΥΓΚΡΙΣΗΤΩΝΜΕΘ ΟΔΩΝ e-04 δx 1e-06 1e-08 1e-10 1e t Σχήμα 3.11: Η απόκλιση της αριθμητικής λύσης με τη μέθοδο Euler από την αναλυτική γιατοναπλόαρμονικόταλαντωτή.οιπαράμετροιείναι ω 2 = 10, t 0 = 0, t f = 6, x(0) = 0.2, v(0) = 0καιοαριθμόςτωνβημάτωνείναι N = 50,500,5,000,50,000. Παρατηρούμεότι κάθε φορά το σφάλμα περίπου υποδεκαπλασιάζεται σύμφωνα με την αναμενόμενη ακρίβεια της μεθόδου O( t). όλες τις σταθερές(λ.χ D0 κλπ). Στη συνέχεια μετατρέπουμε τις συναρτήσειςτηςεπιτάχυνσηςσεαυτήτουαρμονικούταλαντωτή a = ω 2 xκαι παίρνουμε ω 2 = 10(T 1.987). Ετσιστοπρόγραμμα euler.fέχουμε real*8 function accel(x) implicit none real*8 x accel = -10.0D0*x end ενώ στο πρόγραμμα rk.f έχουμε real*8 function f2(t,x1,x2) implicit none real*8 t,x1,x2 f2=-10.0d0*x1 end

102 174 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ e-04 1e-05 δx 1e-06 1e-07 1e-08 1e-09 1e t Σχήμα 3.12: Παρόμοια με το Σχήμα 3.11 για τη μέθοδο Euler-romer. Το σφάλμα περίπου υποδεκαπλασιάζεται σύμφωνα με την αναμενόμενη ακρίβεια της μεθόδου O( t). Στη συνέχεια τρέχουμε τα προγράμματα για δεδομένο χρονικό διάστημα από t 0 = 0σε t f = 6μεαρχικέςσυνθήκες x 0 = 0.2, v 0 = 0καιμεταβάλλουμετο χρονικό βήμα t αλλάζοντας τον αριθμό των βημάτων steps. Στη συνέχεια συγκρίνουμε τη λύση που παίρνουμε με αυτή του απλού αρμονικού ταλαντωτή a(x) = ω 2 x x h (t) = x 0 cos(ωt)+(v 0 /ω)sin(ωt) v h (t) = v 0 cos(ωt) (x 0 ω)sin(ωt), (3.23) καιμελετούμετησχέσητωναποκλίσεων δx(t) = x(t) x h (t) και δv(t) = v(t) v h (t) μετοβήμα t. ΤααποτελέσματάμαςφαίνονταισταΣχήματα Παρατηρούμε πως για τις μεθόδους Euler και Euler-romer τα σφάλματα είναι τάξης O( t) όπως είχαμε προβλέψει, αλλά για τη δεύτερη τα σφάλματα είναι αριθμητικά μικρότερα από αυτά της πρώτης έχοντας πιο ευσταθή συμπεριφορά για το συγκεκριμένο περιοδικό σύστημα. Για τη μέθοδο Euler Verletτοσφάλμαβρίσκεταιναείναιτάξης O( t 2 )ενώγιατην Runge-Kutta είναιτάξης O( t 4 ). Μία άλλη μέθοδος για να ελένξουμε την ορθότητα των αποτελεσμάτων μας είναι να βρούμε μια διατηρούμενη ποσότητα όπως η ενέργεια, ορμή, στροφορμήκλπκαιναεξετάζουμεαναυτήαποκλίνειαπότηναρχικήτηςτιμή. Στην

103 3.5. ΟΑΡΜΟΝΙΚ ΟΣΤΑΛΑΝΤΩΤ ΗΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ e-04 1e-06 δx 1e-08 1e-10 1e-12 1e t Σχήμα 3.13: Παρόμοια με το Σχήμα 3.11 για τη μέθοδο Euler-Verlet. Το σφάλμα περίπου υποεκατονταπλασιάζεταισύμφωναμετηναναμενόμενηακρίβειατηςμεθόδου O( t 2 ). περίπτωσή μας υπολογίζουμε τη μηχανική ενέργεια E = 1 2 mv mω2 x 2 (3.24) σεκάθεβήμακαιαπόαυτήτηναπόκλιση δe = E E 0. Τααποτελέσματα φαίνονται στα σχήματα Ο Αρμονικός Ταλαντωτής με Απόσβεση και Εξωτερική Δύναμη. Στην παράγραφο αυτή θα μελετήσουμε τον απλό αρμονικό ταλαντωτή του οποίου η κίνηση υπόκειται σε απόσβεση ανάλογη της ταχύτητάς του και σε εξωτερική δύναμη, την οποία για απλότητα θα πάρουμε να έχει ημιτονοειδή εξάρτηση από το χρόνο. d 2 x dt +γdx 2 dt +ω2 0 x = a 0sinωt, (3.25) με F(t) = ma 0 sinωtκαι ωηκυκλικήσυχνότητατηςοδηγούσαςδύναμης.

104 176 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ e e-06 1e-08 δx 1e-10 1e-12 1e-14 1e-16 1e t Σχήμα3.14: ΠαρόμοιαμετοΣχήμα3.11γιατημέθοδο Runge-Kutta4ηςτάξης. Το σφάλμαπερίπουμειώνεταικατά 10 4 σύμφωναμετηναναμενόμενηακρίβειατηςμεθόδου O( t 4 ).Στα 50,000βήματαγίνονταιφανεράτασφάλματαστρογγυλοποίησης. Αςθεωρήσουμεαρχικάτοσύστημαμε a 0 = 0.Οιπραγματικέςλύσειςτης διαφορικήςεξίσωσης 6 πουείναιπεπερασμένεςγια t + δίνονται,διακρίνοντας τις περιπτώσεις, x 0 (t) = c 1 e (γ+ γ 2 4ω 2 0 )t/2 +c 2 e (γ γ 2 4ω 2 0 )t/2, γ 2 4ω 2 0 > 0, (3.26) x 0 (t) = c 1 e γt/2 +c 2 e γt/2 t, γ 2 4ω0 2 = 0, (3.27) ( ) x 0 (t) = c 1 e γt/2 cos γ 2 +4ω0 2 t/2 ( ) +c 2 e γt/2 sin γ 2 +4ω0 2 t/2, γ 2 4ω 2 0 < 0,(3.28) Στην τελευταία περίπτωση η λύση ταλαντώνεται με πλάτος που φθίνει εκθετικά μετοχρόνο. Γιατηνπερίπτωσηπου a 0 > 0,ηγενικήλύσηπροκύπτειαπότοάθροισμα μιαςειδικήςλύσης x s (t)καιτηςλύσηςτηςομογενούςεξίσωσης x 0 (t). Μια 6 Προκύπτουνεύκολααντικαθιστώνταςτηδοκιμαστικήλύση x(t) = Ae Ωt καιλύνοντας ωςπρος Ω.

105 3.5. ΟΑΡΜΟΝΙΚ ΟΣΤΑΛΑΝΤΩΤ ΗΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ δe e-04 1e t Σχήμα 3.15: Παρόμοια με το Σχήμα 3.11 στην περίπτωση της ενέργειας για τη μέθοδο Euler. ειδικήλύσηπροκύπτειαπότηδοκιμαστικήλύση x s (t) = Asinωt + Bcosωt την οποία αντικαθιστούμε στην(3.25) και λύνουμε για τα A και B. Βρίσκουμε ότι x s (t) = a 0[(ω 2 0 ω2 )cosωt+γωsinωt] (ω 2 0 ω 2 ) 2 +ω 2 γ 2 (3.29) και x(t) = x 0 (t)+x s (t). (3.30) Ηλύση x 0 (t)είναιεκθετικάφθίνουσαμετοχρόνοκαιτελικάεπικρατείηx s (t). Η μόνη περίπτωση που αυτό δεν ισχύει είναι στην περίπτωση του συντονισμού χωρίςαπόσβεσηω = ω 0, γ = 0.Ηλύσηστηνπερίπτωσηαυτήβρίσκεταιεύκολα ναείναιη x(t) = c 1 cosωt+c 2 sinωt+ a 0 (cosωt+2(ωt)sinωt). (3.31) 4ω2 Οι δύο πρώτοι όροι είναι αυτοί του απλού αρμονικού ταλαντωτή, ενώ ο τελευταίος όρος αυξάνει το πλάτος της μετατόπισης γραμμικά με το χρόνο καταδεικνύοντας τη συνεχή ροή ενέργειας από την εξωτερική δύναμη στον ταλαντωτή. Ο προγραμματισμός του συστήματος γίνεται με απλή μετατροπή του κώδικα rk.f. Οι βασικές ρουτίνες RK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) και

106 178 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ e-04 1e-05 δe 1e-06 1e-07 1e-08 1e-09 1e t Σχήμα 3.16: Παρόμοια με το Σχήμα 3.11 στην περίπτωση της ενέργειας για τη μέθοδο Euler-romer. RKSTEP(t,x1,x2,dt) μένουν ως έχουν και αλλάζει απλά το interface με το χρήστη. Εισάγουμετιςβασικέςπαραμέτρους ω 0, ω, γ, a 0 διαδραστικάστην καθιερωμένη είσοδο(standard input). Επειδή θέλουμε να τις χρησιμοποιήσουμε στη συνάρτηση f2(t,x1,x2) που δίνει την επιτάχυνση χωρίς να αλλάξουμε τη δομή των οδηγών της μεθόδου Runge-Kutta, πρέπει να τις ορίσουμε σε κοινήθέσηστημνήμηγιατοκυρίωςπρόγραμμακαιτηνενλόγωσυνάρτηση. Αυτό στη FORTRAN 77 γίνεται με τη χρήση OMMON BLOKS. Αυτά ορίζονται μετα τη δήλωση των μεταβλητών και ορίζουν για αυτές μια συγκεκριμένη θέση στη μνήμη στις οποίες αποθηκεύονται οι τιμές τους. Το κομμάτι κώδικα real*8 omega_0,omega,gamma,a_0,omega_02,omega2 common /params/omega_0,omega,gamma,a_0,omega_02,omega2 σε οποιαδήποτε ρουτίνα δίνει πρόσβαση στη μνήμη στη θέση params στην ο- ποίααποθηκεύονταιοιτιμέςτωνμεταβλητών 7.Τομόνοάλλοσημείοπουχρήζει προσοχής στο πρόγραμμα είναι η συνάρτηση της επιτάχυνσης f2(t,x1,x2) η οποία τώρα έχει όρο που εξαρτάται από την ταχύτητα που εδώ συμβολίζουμε με τη μεταβλητή x2: 7 Στηνπραγματικότηταοπρογραμματιστήςμπορείνααποθηκεύσειό,τιτύπουμεταβλητή θέλει σε διαφορετικές υπορουτίνες και έτσι να ρυθμίσει την παροχή μνήμης με οικονομία. Εμείς μόνο για ευκολία χρησιμοποιούμε τις ίδιου τύπου μεταβλητές με τα ίδια ονόματα.

107 3.5. ΟΑΡΜΟΝΙΚ ΟΣΤΑΛΑΝΤΩΤ ΗΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ e-04 1e-06 δe 1e-08 1e-10 1e-12 1e-14 1e t Σχήμα 3.17: Παρόμοια με το Σχήμα 3.11 στην περίπτωση της ενέργειας για τη μέθοδο Euler-Verlet. real*8 function f2(t,x1,x2) implicit none real*8 omega_0,omega,gamma,a_0,omega_02,omega2 common /params/omega_0,omega,gamma,a_0,omega_02,omega2 real*8 t,x1,x2 f2=-omega_02*x1-gamma*x2+a_0*dcos(omega*t) end Ησυνάρτησηdcosείναιηγνωστή cosηοποίαπαίρνειόρισμακαιδίνειτιμέςμε ακρίβεια REAL*8. Για διευκόλυνση του αναγνώστη παραθέτουμε όλο το interface, παραλείποντας φυσικά τις υπορουτίνες RK, RKSTEP που έχουμε παραθέσει προτύτερα. Το πρόγραμμα αποθηκεύεται στο αρχείο dlo.f. Program to solve Damped Linear Oscillator using 4th order Runge-Kutta Method Output is written in file dlo.dat program dlo_solve

108 180 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ e e-06 1e-08 δe 1e-10 1e-12 1e-14 1e t Σχήμα 3.18: Παρόμοια με το Σχήμα 3.11 στην περίπτωση της ενέργειας για τη μέθοδο Runge-Kutta 4ης τάξης. Για μεγάλο αριθμό βημάτων το σφάλμα είναι σφάλμα στρογγυλοποίησης. implicit none integer P parameter(p=110000) real*8 T0,TF,X10,X20 integer STEPS,PSIZE real*8 T(P),X1(P),X2(P) real*8 Energy real*8 omega_0,omega,gamma,a_0,omega_02,omega2 common /params/omega_0,omega,gamma,a_0,omega_02,omega2 integer i Input: print *, Runge-Kutta Method for DLO Integration print *, Enter omega_0, omega, gamma, a_0: read(5,*) omega_0,omega,gamma,a_0 omega_02 = omega_0*omega_0 omega2 = omega *omega print *, omega_0=,omega_0, omega=, omega

109 3.5. ΟΑΡΜΟΝΙΚ ΟΣΤΑΛΑΝΤΩΤ ΗΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ.181 print *, gamma=,gamma, a_0=,a_0 print *, Enter STEPS,T0,TF,X10,X20: read(5,*) STEPS,T0,TF,X10,X20 print *, No. Steps=,STEPS print *, Time: Initial T0 =,T0, Final TF=,TF print *, X1(T0)=,X10, X2(T0)=,X20 The alculation: PSIZE=P call RK(T,X1,X2,T0,TF,X10,X20,STEPS,PSIZE) Output: open(unit=11,file= dlo.dat ) write(11,*) # Damped Linear Oscillator - dlo write(11,*) # omega_0=,omega_0, omega=, omega, * gamma=,gamma, a_0=,a_0 do i=1,steps+1 Energy = 0.5D0*X2(i)*X2(i)+0.5D0*omega_02*X1(i)*X1(i) write(11,*)t(i),x1(i),x2(i),energy enddo close(11) end The functions f1,f2(t,x1,x2) provided by the user real*8 function f1(t,x1,x2)!velocity function implicit none real*8 t,x1,x2 f1=x2!dx1/dt= v = x2 end real*8 function f2(t,x1,x2)!acceleration function implicit none real*8 omega_0,omega,gamma,a_0,omega_02,omega2 common /params/omega_0,omega,gamma,a_0,omega_02,omega2 real*8 t,x1,x2

110 182 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ f2=-omega_02*x1-gamma*x2+a_0*dcos(omega*t) end x t Σχήμα 3.19: Η θέση συναρτήσει του χρόνου για τον αρμονικό ταλαντωτή με απόσβεση για διαφορετικέςτιμέςτουσυντελεστήαπόσβεσης γμε ω 0 = Τα αποτελέσματα φαίνονται στα Σχήματα Στο Σχήμα 3.19 παρατηρούμε τη μετάβαση από την φάση που η κίνηση αποσβέννυται χωρίς ταλάντωσηγια γ > 2ω 0 στηφάσηπουτοσύστηματαλαντώνεταιμεεκθετικάφθίνων μετοχρόνοπλάτοςγια γ < 2ω 0. Ηεκθετικήμείωσητουπλάτουςφαίνεται στο Σχήμα 3.21, ενώ η εξάρτηση της περιόδου T του όρου ταλάντωσης(δηλ. του ορίσματος στον(συν)ημιτονειδή όρο) από το συντελεστή απόσβεσης γ στο Σχήμα3.22. ΤοενλόγωσχήμαπροκύπτειαπότηΣχέση (3.28) τηνοποία γράφουμε στη μορφή ( ) 2π 4ω0 2 = γ 2. (3.32) T Το δεξί μέλος της εξίσωσης τοποθετείται στον οριζόντιο άξονα ενώ στον κάθετο τοποθετούμε το αριστερό. Η παραπάνω σχέση προβλέπει ότι οι δύο ποσότητεςείναιίσεςκαιοιμετρήσειςπρέπειναβρίσκονταιπάνωστηδιαγώνιο y = x. Οι μετρήσεις για την περίοδο T παίρνονται μετρώντας το χρόνο μεταξύ δύο διαδοχικών ακρότατων(v = 0) στην τροχιά x(t)(βλ. Σχήμα 3.19).

111 3.5. ΟΑΡΜΟΝΙΚ ΟΣΤΑΛΑΝΤΩΤ ΗΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ v x Σχήμα3.20:Ητροχιάστοχώροτωνφάσεωνγιατοναρμονικόταλαντωτήμεαπόσβεσηγια διαφορετικέςτιμέςτουσυντελεστήαπόσβεσης γμε ω 0 = Παρατηρούμετηνύπαρξη ελκυστήστο (x,v) = (0,0)στονοποίοκαταλήγειστοσύστημαγια t +. Τέλος σημαντικό είναι να μελετήσουμε το Σχήμα 3.20 στο οποίο βλέπουμε τηντροχιάτουσυστήματοςστοχώροτωνφάσεων 8 Τοσύστημαγια t + καταλήγει στο σημείο (0, 0) για οποιαδήποτε τιμή της σταθεράς γ. Το σημείο αυτό για το σύστημα είναι ένας ελκυστής (attractor). Στη συνέχεια προσθέτουμε την εξωτερική δύναμη και μελετούμε την απόκριση του συστήματος σε αυτή. Το πρώτο που παρατηρούμε στο Σχήμα 3.23 είναι ότι το σύστημα μετά από μια παροδική κατάσταση(transient state) η ο- ποία εξαρτάται από τις αρχικές συνθήκες, καταλήγει σε μία σταθερή κατάσταση η οποία δεν εξαρτάται από τις αρχικές συνθήκες. Στη συγκεκριμένη περίπτωση αυτό προβλέπεται εύκολα από τις Σχέσεις (3.26) (3.28) όπου αφού οι εκθετικοίόροιγίνουναμελητέοι,επικρατείοόρος x s (t)της (3.29).Οτελευταίος 8 Γιατηνακρίβειαοχώροςτωνφάσεωνείναιοχώροςτωνθέσεων ορμών,αλλάστην περίπτωσή μας η διαφορά είναι τετριμμένη.

112 184 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ Amplitude Σχήμα 3.21: Το πλάτος ταλάντωσης για τον αρμονικό ταλαντωτή με απόσβεση για διαφορετικέςτιμέςτουσυντελεστήαπόσβεσης γμε ω 0 = Παρατηρούμετηνεκθετική μείωση του πλάτους με το χρόνο. t μπορεί να γραφτεί στη μορφή x(t) = x 0 (ω)cos(ωt+δ(ω)) a 0 x 0 (ω) = (ω 2 0 ω 2 ) 2 +γ 2 ω, 2 ωγ tanδ(ω) =. (3.33) ω 2 ω0 2 Την παραπάνω σχέση την επιβεβαιώνουμε στο Σχήμα 3.24 όπου μελετάμε την εξάρτησητουπλάτους x 0 (ω)απότηγωνιακήσυχνότητατηςεξωτερικήςδύναμης. Τέλος μελετάμε την τροχιά του συστήματος στο χώρο των φάσεων. Παρατηρούμε την ύπαρξη ελκυστή για το σύστημα, δηλ. την ύπαρξη υπόχωρου πάνωστονοποίοκινήταιτοσύστημαόταν t + οοποίοςείναιανεξάρτητος των αρχικών συνθηκών. Στην περίπτωση αυτή ο ελκυστής είναι καμπύλη μιας διάστασης σε αντίθεση με την περίπτωση που δεν έχουμε εξωτερική δύναμη και ο ελκυστής είναι μηδενοδιάστατο σημείο(βλ. Σχήμα 3.20).

113 3.6. ΤΟΕΚΚΡΕΜ ΕΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ ω (2 π/t) γ 2 Σχήμα 3.22: Η περίοδος ταλάντωσης για τον αρμονικό ταλαντωτή με απόσβεση για διαφορετικέςτιμέςτουσυντελεστήαπόσβεσης γ με ω 0 = Στουςάξονεςεπιλέγουμε τις κατάλληλες ποσότητες για τη γραφική επιβεβαίωση της Εξίσωσης (3.28), δηλ. (2π/T) 2 = 4ω 2 0 γ2. Τασημείαείναιοιμετρήσειςενώηευθείαγραμμήείναιηθεωρητικήπρόβλεψη,δηλ.ηδιαγώνιος y = x 3.6 Το Εκκρεμές με Απόσβεση και Εξωτερική Δύναμη. Στην παράγραφο αυτή θα μελετήσουμε ένα μη γραμμικό δυναμικό σύστημα με μη-τετριμμένες ιδιότητες. Θα ανακαλύψουμε πως πολλά ενδιαφέροντα δυναμικά συστήματα στη φύση, παρ όλο που η κίνησή τους καθορίζεται από ντετερμινιστικούς νόμους και δεν υπάρχει πρόβλημα αρχής να προσδιοριστεί η κατάστασή τους σε αυθαίρετους χρόνους δεδομένων των αρχικών συνθηκών, η συμπεριφορά τους είναι χαοτική και πολύ σύντομα είναι πρακτικά αδύνατο να κάνουμε προβλέψεις σε βάθος χρόνου. Αυτό δίνεται από το εκκρεμές στο ομογενές πεδίο βαρύτητας της γης με δύναμη απόσβεσης ανάλογη της ταχύτητας του εκκρεμούς και μια εξωτερική οδηγούσα δύναμη, κατακόρυφη στη διέυθυνση και

114 186 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ x 0 =1 v 0 =0 x 0 =0 v 0 = x(t) Σχήμα 3.23: Η περίοδος ταλάντωσης για τον αρμονικό ταλαντωτή με απόσβεση και εξωτερικήδύναμηγιαδιαφορετικέςαρχικέςσυνθήκες. Εχουμεπάρει ω 0 = 3.145, ω = 2.0, γ = 0.5 και a 0 = 1.0.Παρατηρούμεότιτοσύστημαπαρουσιάζειμιαμεταβατικήκατάστασημετάτο πέραςτηςοποίαςταλαντώνεταισύμφωναμετησχέση x(t) = x 0 (ω)cos(ωt+δ). t μέτρο/φορά που μεταβάλλεται συνημιτονοειδώς με το χρόνο: d 2 θ dt 2 +γdθ dt +ω2 0sinθ = 2Acosωt sinθ. (3.34) Στηνπαραπάνωεξίσωση θείναιηγωνίαμετηνκατακόρυφο, γοσυντελεστή απόσβεσης, ω0 2 = g/lηφυσικήκυκλικήσυχνότητατουεκκρεμούςκαι ω, 2A η κυκλική συχνότητα και το πλάτος της εξωτερικής γωνιακής επιτάχυνσης που προκαλείται από την εξωτερική δύναμη. Οταν δεν υπάρχει εξωτερική δύναμη το σύστημα έχει εξ αιτίας των αποσβέσεων,ελκυστήτοσημείο (θ, θ) = (0,0). Αυτόθασυνεχίσεινασυμβαίνει καθώς αυξάνουμε το A από μηδέν και ο ελκυστής παραμένει σταθερός για αρκετάμικρό A.Γιακάποιατιμή A c οελκυστήςγίνεταιασταθήςκαιησυμπεριφορά του συστήματος γίνεται πολυπλοκότερη. Αυτή θα μελετηθεί λεπτομερέστερα σε επόμενο κεφάλαιο, εδω θα κάνουμε μια εισαγωγική προσέγγιση έχοντας κατά νου ότι το σύστημα αυτό παρουσιάζει ενδιαφέρον.

115 3.6. ΤΟΕΚΚΡΕΜ ΕΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ x 0 (ω) Σχήμα3.24: Τοπλάτοςταλάντωσης x 0 (ω)γιατοναρμονικόταλαντωτήμεαπόσβεση καιεξωτερικήδύναμη. Εχουμεπάρει ω 0 = 3.145, γ = 0.5και a 0 = 1.0. Παρατηρούμε συντονισμόγια ω ω 0.Τασημείαείναιοιμετρήσειςμαςκαιησυνεχήςγραμμήηθεωρητική πρόβλεψη (3.33). ω Ο προγραμματισμός του συστήματος γίνεται με τετριμμένες αλλαγές του προγράμματος dlo.f. Οι μετατροπές στο πρόγραμμα φαίνονται παρακάτω, έ- χονταςκατάνουπως X1 θ, X2 θ, a 0 A. Τοπρόγραμματοαποθηκεύουμε στο αρχείο fdp.f (fdp= Forced Damped Pendulum). Οι εντολές ανάμεσα στις τελίτσες είναι πανομοιότυπες με τα προγράμματα dlo.f, rk.f. Program to solve Forced Damped Pendulum using 4th order Runge-Kutta Method Output is written in file fdp.dat program fdp_solve implicit none integer P

116 188 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ v x Σχήμα 3.25: Η τροχιά στο χώρο των φάσεων για τον αρμονικό ταλαντωτή με απόσβεση καιεξωτερικήδύναμη. Εχουμεπάρει ω 0 = 3.145, ω = 2.0, γ = 0.5και a 0 = 1.0. parameter(p=110000)... Energy = 0.5D0*X2(i)*X2(i)+omega_02*(1.0D0-dcos(X1(i))) real*8 function f2(t,x1,x2) implicit none real*8 omega_0,omega,gamma,a_0,omega_02,omega2 common /params/omega_0,omega,gamma,a_0,omega_02,omega2 real*8 t,x1,x2 f2=-(omega_02+2.0d0*a_0*dcos(omega*t))*dsin(x1)-gamma*x2 end... subroutine RKSTEP(t,x1,x2,dt)... real*8 h,h2,h6,pi,pi2

117 3.6. ΤΟΕΚΚΡΕΜ ΕΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ v x Σχήμα 3.26: Η τροχιά στο χώρο των φάσεων για τον αρμονικό ταλαντωτή με απόσβεση καιεξωτερικήδύναμηγια t > 100. Εχουμεπάρει ω 0 = 3.145, ω = 2.0, γ = 0.5και a 0 = 1.0. Παρατηρούμε τον ελκυστή που τώρα είναι καμπύλη(έλλειψη) μιας διάστασης.... parameter(pi = D0) parameter(pi2= d0) x1=x1+h6*(k11+2.0d0*(k12+k13)+k14) x2=x2+h6*(k21+2.0d0*(k22+k23)+k24) if( x1.gt. pi) x1 = x1 - pi2 if( x1.lt. -pi) x1 = x1 + pi2 end Τις τελευταίες γραμμές στο πρόγραμμα τις προσθέσαμε ώστε να κρατήσουμε τηγωνίαστοδιάστημα [ π,π]. Γιαναμελετήσουμετιςιδιότητεςτουσυστήματοςθαθέσουμε ω 0 = 1, ω = 2,καιγ = 0.2εκτόςαναναφέρουμερητώςδιαφορετικά.Ηφυσικήπερίοδος τουεκκρεμούςείναι T 0 = 2π/ω 0 = 2π ενώαυτήτης εξωτερικής δύναμης T = 2π/ω = π Το σύστημα για A < A c με A c 0.18έχεισταθερόελκυστήτοσημείο (θ, θ) = (0,0)

118 190 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ ενώγια A c < A < 0.71οελκυστήςείναικλειστήκαμπύλη. Ηπερίοδοςτης ταλάντωσης βρίσκεται να είναι διπλάσια αυτής της εξωτερικής δύναμης. Για 0.72 < A < 0.79οελκυστήςείναιανοιχτήκαμπύλημιακαιτοεκκρεμέςεκτελεί ολόκληρους κύκλους στη σταθερή του κατάσταση. Η περίοδος στο διάστημα αυτόγίνεταιίσημεαυτήτηςεξωτερικήςδύναμης. Για 0.79 < A η περίοδος διπλασιάζεται διαδοχικά για κρίσιμες τιμές του A, η τροχία όμως συνεχίζει να είναι περιοδική. Για μεγαλύτερες τιμές του A η τροχιά παύει ναείναιπεριοδικήκαιτοσύστημαέχειχαοτικήσυμπεριφορά. Για A 3.1 βρίσκουμετοσύστημαναέχειπάλιπεριοδικήκίνησηενώγια A να έχουμε το φανόμενο διπλασιαμού της περιόδου. Για A έχουμε καθαρή χαοτική συμπεριφορά κ.ο.κ. Τα αποτελέσματα αυτά περιγράφονται στα Σχήματα Σχήμα3.27:Τροχιάστοχώροτωνφάσεωνγιατοεκκρεμέςμεαπόσβεσηκαιεξωτερικήδύναμη. Εχουμεπάρει ω 0 = 1.0, ω = 2.0, γ = 0.2και A = 0.60,0.72,0.85,1.02.Παρατηρούμε το φαινόμενο του διπλασιασμού της περιόδου. Για την ανάλυση της συμπεριφοράς του εκκρεμούς και κυρίως για τη διευκόλυνση της διάκρισης μεταξύ περιοδικής και χαοτικής συμπεριφοράς μπορεί κανείς να μελετήσει τα λεγόμενα διαγράμματα Poinaré. Στα διαγράμματα αυτά

119 3.6. ΤΟ ΕΚΚΡΕΜ ΕΣ ΜΕ ΑΠ ΟΣΒΕΣΗ ΚΑΙ ΕΞΩΤΕΡΙΚ Η Δ ΥΝΑΜΗ Σχήμα 3.28: Τροχιά στο χώρο των φάσεων για το εκκρεμές με απόσβεση και εξωτερική δύναμη. Εχουμε πάρει ω0 = 1.0, ω = 2.0, γ = 0.2 και A = 1.031, 1.033, 1.04, 1.4. Παρατηρούμε την εμφάνιση χαοτικής συμπεριφοράς. τοποθετούμε ένα σημείο στο χώρο των φάσεων κάθε φορά που ο χρόνος είναι ακέραιο πολλαπλάσιο της περιόδου της εξωτερικής δύναμης. Με τον τρόπο αυτό αν η κίνηση είναι περιοδική με περίοδο ίση με την περίοδο της εξωτερικής δύναμης θα έχουμε ένα σημείο στο διάγραμμα και γενικότερα θα έχουμε n σημεία αν η περίοδος είναι n πολλαπλάσιο της T = 2π/ω. Οπότε κανείς περιμένει όταν παρατηρήται το φαινόμενο διπλασιασμού της περίοδου, το διάγραμμα Poincare να αποκτά επί πλέον μεμονομένα σημεία ενώ όταν η συμπεριφορά είναι χαοτική, τα σημεία να ανήκουν σε έναν υπόχωρο του χώρου των φάσεων που να έχει πολυπλοκότερη δομή. Αυτό μπορούμε εύκολα να το προγραμματίσουμε στον κώδικά μας στο fdo.f ή εναλλακτικά να πάρουμε τη σχετική πληροφορία από το αρχείο εξόδου fdo.dat με το πρόγραμμα awk το οποίο τρέχουμε από τη γραμμή εντολών9 : awk -v o=$omega -v s=$steps -v tf=$tf \ BEGIN{T= /o;dt=tf/s;} $1%T<dt{print $2,$3} fdp.dat 9 Η εντολή μπορεί να γραφτεί σε μία γραμμή χωρίς το τελικό \ της πρώτης γραμμής

120 192 ΚΕΦ ΑΛΑΙΟ 3. Κ ΙΝΗΣΗ ΣΩΜΑΤΙΔ ΙΟΥ Σχήμα 3.29: Τροχιά στο χώρο των φάσεων για το εκκρεμές με απόσβεση και εξωτερική δύναμη. Εχουμε πάρει ω0 = 1.0, ω = 2.0, γ = 0.2 και A = 1.568, 3.8, 4.44, 4.5. Παρατηρούμε την παύση και επανεμφάνιση χαοτικής συμπεριφοράς. όπου $omega, $STEPS, $TF οι τιμές της κυκλικής συχνότητας ω, αριθμού βημάτων ολοκλήρωσης και τελικού χρόνου tf 10. Στο πρόγραμμα υπολογίζουμε την περίοδο T και το βήμα χρόνου dt. Στη συνέχεια τυπώνομε εκείνες τις γραμμές του αρχείου των οποίων ο χρόνος είναι ακέραιο πολλαπλάσιο της περιόδου με ακρίβεια χρόνου dt11. Αυτό γίνεται με την πράξη modulo $1 % T < dt που είναι TRUE όταν το υπόλοιπο της διαίρεσης της πρώτης στήλης ($1) του αρχείου fdo.dat έχει υπόλοιπο διαίρεσης με την περίοδο T μικρότερο από dt. Τα αποτελέσματα για τη χαοτική φάση φαίνονται στο Σχήμα Κλείνουμε τη μελέτη μας με την παρουσίαση μιας ακόμα έννοιας που μας βοηθάει στην ανάλυση τβν ιδιοτήτων του εκκρεμούς. Αυτή είναι η έννοια της λεκάνης του ελκυστή (basin of an attractor) η οποία είναι το σύνολο των 10 Αντικαταστήστε με απλές αριθμητικές τιμές αν δεν ξέρετε να χρησιμοποιήτε μεταβλητές φλοιού. 11 Φυσικά αυτό κάνει τα μεμονομένα σημεία να γίνονται συγκεχυμένα στο διάγραμμα Poincare.

121 3.6. ΤΟΕΚΚΡΕΜ ΕΣΜΕΑΠ ΟΣΒΕΣΗΚΑΙΕΞΩΤΕΡΙΚ ΗΔ ΥΝΑΜΗ Σχήμα 3.30: Διάγραμμα Poincaré για το εκκρεμές με απόσβεση και εξωτερική δύναμη ότανπαρουσιάζειχαοτικήσυμπεριφορά. Εχουμεπάρει ω 0 = 1.0, ω = 2.0, γ = 0.2και A = 1.4,4.5. αρχικών συνθηκών στο χώρο των φάσεων που οδηγούν το σύστημα στο συγκεκριμένο ελκυστή. Στην περίπτωσή μας το εκκρεμές για A > 0.79 εκτελεί κυκλική κίνηση είτε με θετική είτε με αρνητική φορά(μετα την παρέλευση της παροδικής φάσης φυσικά) η οποίες αποτελούν τους δύο ελκυστές του συστήματος. Παίρνοντας ένα μεγάλο δείγμα από αρχικές συνθήκες και σημειώνοντας το πρόσημο της γωνιακής ταχύτητας μετά την παρέλευση της παροδικής φάσης παίρνουμε το Σχήμα Στην περιοδική φάση διακρίνουμε περιοχές, των οποίων τα περιγράμματα δεν είναι καθαρά, οι οποίες δεν οδηγούν στο συγκεκριμένο ελκυστή Σχήμα 3.31: Basin of attractor για το εκκρεμές με απόσβεση και εξωτερική δύναμη. Εχουμεπάρει ω 0 = 1.0, ω = 2.0, γ = 0.2και A = 0.85,1.4.Διακρίνουμετηνπεριοδικήαπό τη χαοτική συμπεριφορά.

122 194 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ 3.7 Παράρτημα: Στη Μέθοδο Euler Verlet Η Σχέσεις (3.11) προκύπτουν από το ανάπτυγμα κατά Taylor θ(t+ t) = θ(t)+( t)θ (t)+ ( t)2 2! θ(t t) = θ(t) ( t)θ (t)+ ( t)2 2! Προσθέτοντας και αφαιρώντας κατά μέλη παίρνουμε που δίνουν θ (t)+ ( t)3 θ (t)+o(( t) 4 ) 3! θ (t) ( t)3 θ (t)+o(( t) 4 ). 3! θ(t+ t)+θ(t t) = 2θ(t)+( t) 2 θ (t)+o(( t) 4 ) θ(t+ t) θ(t t) = 2( t)θ (t)+o(( t) 3 ) (3.35) θ(t+ t) = 2θ(t) θ(t t)+( t) 2 α(t)+o(( t) 4 ) ω(t) = θ(t+ t) θ(t t) +O(( t) 2 ) (3.36) 2( t) πουείναιοισχέσεις (3.11). Στις προσομοιώσεις το σημαντικό είναι το συνολικό σφάλμα που συσσωρεύτεταιμετάαπότα N 1βήματατηςολοκλήρωσης.Ειδικάγιατησυγκεκριμένη μέθοδο πρέπει να δούμε τα σφάλματα που συσσωρεύονται ιδιαίτερα προσεκτικά: Το σφάλμα στην ταχύτητα ω(t) δε συσσωρεύεται γιατί υπολογίζεται από τηδιαφοράτωνθέσεων θ(t+ t) θ(t t). Στη θέση το σφάλμα συσσωρεύεται ως εξής: Εστω δθ(t) το συνολικό σφάλμαπουέχεισυσσωρευτείαπότηνολοκλήρωσηαπόχρόνο t 0 έως t. Τότε σύμφωνα με τα αναπτύγματα (3.36) το σφάλμα στο πρώτο βήμα είναι δθ(t 0 + t) = O(( t) 4 ).Τότε 12 θ(t 0 +2 t) = 2θ(t 0 + t) θ(t 0 )+ t 2 α(t 0 + t)+o(( t) 4 ) δθ(t 0 +2 t) = 2δθ(t 0 + t) δθ(t 0 )+O(( t) 4 ) = 2O(( t) 4 ) 0+O(( t) 4 ) = 3O(( t) 4 ) 12 Θυμίζουμεότιηεπιτάχυνση α(t)δίνεται,οπότε δα(t) = 0.

123 3.7. ΠΑΡ ΑΡΤΗΜΑ:ΣΤΗΜ ΕΘΟΔΟ EULER VERLET 195 Στα επόμενα βήματα παίρνουμε θ(t 0 +3 t) = 2θ(t 0 +2 t) θ(t 0 + t)+ t 2 α(t 0 +2 t)+o(( t) 4 ) δθ(t 0 +3 t) = 2δθ(t 0 +2 t) δθ(t 0 + t)+o(( t) 4 ) = 6O(( t) 4 ) O(( t) 4 )+O(( t) 4 ) = 6O(( t) 4 ) θ(t 0 +4 t) = 2θ(t 0 +3 t) θ(t 0 +2 t)+ t 2 α(t 0 +3 t)+o(( t) 4 ) δθ(t 0 +4 t) = 2δθ(t 0 +3 t) δθ(t 0 +2 t)+o(( t) 4 ) = 12O(( t) 4 ) 3O(( t) 4 )+O(( t) 4 ) = 10O(( t) 4 ) Καιεπαγωγικά,αν δθ(t 0 + (n 1) t) = (n 1)n 2 O(( t) 4 )στοεπόμενο βήμα παίρνουμε θ(t 0 +n t) = 2θ(t 0 +(n 1) t) θ(t 0 +(n 2) t)+ t 2 α(t 0 +(n 1) t) +O(( t) 4 ) δθ(t 0 +n t) = 2δθ(t 0 +(n 1) t) δθ(t 0 +(n 2) t)+o(( t) 4 ) = 2 (n 1)n 2 Άρα τελικά = n(n+1) O(( t) 4 ) 2 O(( t) 4 ) (n 2)(n 1) O(( t) 4 )+O(( t) 4 ) 2 δθ(t 0 +n t) = n(n+1) O(( t) 4 ) 1 ) O(( t) 2 ) (3.37) 2 t 2O(( t)4 Άρατοολικόσφάλμαείναι O(( t) 2 ). Για πληρότητα αναφέρουμε και τον αλγόριθμο Velocity Verlet ή μέθοδο Leapfrog. Στην περίπτωση αυτη χρησιμοποιούμε ρητά την ταχύτητα: θ n+1 = θ n +ω n t+ 1 2 α n t 2 ω n+ 1 2 = ω n α n t ω n+1 = ω n α n+1 t. (3.38)

124 196 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ Στοτελευταίοβήμαχρειαζόμαστετηνεπιτάχυνση α n+1 οπότεπρέπειαυτήνα εξαρτάταιμόνοαπότηθέση θ n+1 καιόχιαπότηνταχύτητα. Οι μέθοδοι Verlet είναι δημοφιλείς σε προσομοιώσεις molecular dynamics, κυρίως συστημάτων με πολλά σωμάτια. Εχουν το ιδιαίτερο προσόν ότι υλοποιούνται σχετικά εύκολα οι περιορισμοί(constraints) στους οποίους υπόκειται τα σωματίδια που αποτελούν το σύστημα Παράρτημα: Runge Kutta 2ης τάξης Στην παράγραφο αυτή θα δείξουμε με δύο τρόπους γιατί η επιλογή του ενδιάμεσου σημείου 2 στην Εξίσωση (3.17) μειώνει το σφάλμα κατά μία δύναμη τουβήματος h. Οπωςθαφανεί,ηεπιλογήτουμέσουτουδιαστήματοςγιατο σημείο2δενείναιτυχαία(οπότελ.χ. τοσημείομε t = t n + 0.4hδενθαείχε το ίδιο αποτέλεσμα). Πράγματι από τη σχέση dx dt = f(t,x) x n+1 = x n + tn+1 t n f(t,x)dx. (3.39) Αναπτύσσονταςκατά Taylorγύρωαπότοσημείο (t n+1/2,x n+1/2 )παίρνουμε Οπότε tn+1 f(t,x) = f(t n+1/2,x n+1/2 )+(t t n+1/2 ) df dt (t n+1/2)+o(h 2 ). (3.40) t n f(t,x)dx = f(t n+1/2,x n+1/2 )(t n+1 t n )+ df dt (t n+1/2) (t t n+1/2) 2 2 +O(h 2 )(t n+1 t n ) = f(t n+1/2,x n+1/2 )h+ df dt (t n+1/2) +O(h 2 )h = f(t n+1/2,x n+1/2 )h+ df dt (t n+1/2) { (tn+1 t n+1/2 ) 2 { h ( h)2 2 t n+1 t n (t } n t n+1/2 ) 2 2 } +O(h 3 ) = f(t n+1/2,x n+1/2 )h+o(h 3 ). (3.41) Παρατηρούμε ότι για την εξαφάνιση του όρου O(h) είναι αναγκαία η τοποθέτηση τουβοηθητικούσημείουστοχρόνο t n+1/2.

125 3.7. ΠΑΡ ΑΡΤΗΜΑ:ΣΤΗΜ ΕΘΟΔΟ EULER VERLET 197 Ηεπιλογήαυτήδενείναιμοναδική. Αυτόμπορείναφανείκαιαπόμια διαφορετική ανάλυση του αναπτύγματος κατά Taylor. Αναπτύσσοντας τώρα γύρωαπότοσημείο (t n,x n )παίρνουμε x n+1 = x n +(t n+1 t n ) dx n dt (t n+1 t n ) 2d2 x n dt 2 +O(h3 ) = x n +hf n + h2 df n 2 dt +O(h3 ) = x n +hf n + h2 2 = x n +hf n + h2 2 ( fn t + f ) n dx n +O(h 3 ) x dt ( fn t + f ) n x f n +O(h 3 ), (3.42) όπουγιασυντομίαθέσαμε f n f(t n,x n ), dxn dt dx dt (x n)κ.ο.κ.ορίζουμε k 1 = f(t n,x n ) = f n k 2 = f(t n +ah,x n +bhk 1 ) x n+1 = x n +h(c 1 k 1 +c 2 k 2 ). (3.43) καιθαπροσδιορίσουμετιςσυνθήκεςέτσιώστετοσφάλμαοιόροι O(h 2 )της τελευταίας εξίσωσης να ταυτίζονται με αυτούς της (3.42). Αναπτύσσοντας την k 2 παίρνουμε k 2 = f(t n +ah,x n +bhk 1 ) = f(t n,x n +bhk 1 )+ha f t (t n,x n +bhk 1 )+O(h 2 ) f = f(t n,x n )+hbk 1 x (t n,x n )+ha f t (t n,x n )+O(h 2 ) { = f n +h a f } n f n +O(h 2 ) = f n +h t +bk 1 x } f n +O(h 2 ) (3.44) x { a f n t +bf n

126 198 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ Αντικαθιστώντας στην (3.43) παίρνουμε x n+1 = x n +h(c 1 k 1 +c 2 k 2 ) { = x n +h c 1 f n +c 2 f n +c 2 h = x n +h(c 1 +c 2 )f n + h2 2 Αρκεί λοιπόν να επιλέξουμε ( a f n t +bf n ) f n x ( (2c 2 a) f n t +(2c f n 2b)f n x } +O(h 2 ) ) +O(h 3 ). (3.45) c 1 +c 2 = 1 2c 2 a = 1 2c 2 b = 1. (3.46) Επιλογή c 1 = 0, c 2 = 1, a = b = 1/2μάςδίνειτημέθοδο (3.19). Άλλες επιλογέςστηβιβλιογραφίαείναι c 2 = 1/2και c 2 = 3/4.

127 3.8. ΑΣΚ ΗΣΕΙΣ Ασκήσεις 3.1 Αποδείξτε ότι το συνολικό σφάλμα στη μέθοδο Euler-romer είναι τάξης t 3.2 Αναπαράγετε τα αποτελέσματα των σχημάτων Βελτιώστε τον υπολογισμό του χρόνου στα προγράμματα των μεθόδων Euler, Euler-romer, Euler-Verlet, Runge-Kutta ώστε να μήν έχουμε προσθετική συσσώρευση σφαλμάτων στο χρόνο όταν η παράμετρος h είναι πολύ μικρή(λ.χ. στις εντολές T(i)=T(i-1)+h). Επαναλάβατε την ανάλυση της προηγούμενης άσκησης. 3.4 Μεταβάλλετε τα προγράμματα των μεθόδων Euler, Euler-romer, Euler- Verlet, Runge-Kutta ώστε REAL REAL*8(προσοχή στις σταθερές: να της ορίσετε ρητά να είναι διπλής ακρίβειας προσθέτοντας τον εκθέτη D0). Επαναλάβατε την ανάλυση της προηγούμενης άσκησης. 3.5 Να επαναλάβετε τη σύγκριση των μεθόδων Euler, Euler-romer, Euler- Verlet, Runge-Kutta για τα παρακάτω συστήματα των οποίων η αναλυτική λύση είναι γνωστή: (αʹ) Σωματίδιο που πέφτει ελεύθερα στο ομογενές πεδίο βαρύτητας. Θεωρήστε v(0) = 0, m = 1, g = 10. (βʹ) Σωματίδιο που πέφτει στο ομογενές πεδίο βαρύτητας μέσα σε ρευστόαπότοοποίοδέχεταιδύναμη F = kv. Θεωρήστε v(0) = 0, m = 1, g = 10 k = 0.1,1.0,2.0. Υπολογίστετηνορικήταχύτητα του σωματιδίου αριθμητικά και συγκρίνετέ τη με τη θεωρητική της τιμή. (γʹ)επαναλάβετεγιαδύναμηαντίστασης F = kv Μελετήστε το σύστημα του αρμονικού ταλαντωτή με απόσβεση d 2 x dt 2 +γdx dt +ω2 0x = 0. (3.47) Πάρτε ω 0 = 3.145, γ = 0.5καιυπολογίστετηνενέργειασυναρτήσειτου χρόνου. Είναι η τιμή της μονοτονική; Γιατί; (Δείξτε ότι d(e/m)/dt = γv 2 ).Επαναλάβατεγιαγ = 4,5,6,7,8.Πότετοσύστηματαλαντώνεται και πότε όχι; Υπολογίστε αριθμητικά την κρίσιμη τιμή του γ για την

128 200 ΚΕΦ ΑΛΑΙΟ3. Κ ΙΝΗΣΗΣΩΜΑΤΙΔ ΙΟΥ οποία το σύστημα μετατρέπεται από ταλαντούμενο σε μή ταλαντούμενο. Συγκρίνετε το αποτέλεσμά σας με την αναλυτική λύση. 3.7 Αναπαράγετε τα αποτελέσματα που οδηγούν στα Σχήματα Αναπαράγετε τα αποτελέσματα που οδηγούν στα Σχήματα Υ- πολογίστε αριθμητικά τη φάση δ(ω) και επιβεβαιώστε τη Σχέση (3.33). 3.9 Θεωρήσετε το μοντέλο για μια κούνια να είναι ο αρμονικός ταλαντωτής με απόσβεση ο οποίος υπόκειται σε περιοδική δύναμη η οποία είναι στιγμιαία ώθηση συχνότητας ω. Ορίστε το στιγμιαία να είναι η ώθηση να δίνει επιτάχυνση a 0 τοκατάλληλοχρονικόδιάστημαδιάρκειας tκαι 0στα υπόλοιπαβήματα.υπολογίστετοπλάτος x 0 (ω)για ω 0 = 3.145και γ = Θεωρήστε την εξωτερική δύναμη να είναι το μισό συνημίτονο δίνοντας επιτάχυνση στον ο αρμονικό ταλαντωτή με απόσβεση a(t) = { a0 cosωt cosωt > 0 0 cosωt 0 Μελετήστε τη μετάβαση του συστήματος στη σταθερή κατάσταση και υπολογίστετοπλάτος x 0 (ω)για ω 0 = 3.145και γ = Θεωρήστε την εξωτερική δύναμη να δίνει επιτάχυνση στον ο αρμονικό ταλαντωτή με απόσβεση a(t) = 1 π cosωt+ 2 3π cos2ωt 2 15π cos4ωt Μελετήστε τη μετάβαση του συστήματος στη σταθερή κατάσταση και υπολογίστετοπλάτος x 0 (ω)για ω 0 = 3.145και γ = 0.5.Συγκρίνετετα αποτελέσματά σας με αυτά της προηγούμενης άσκησης. Τι συμπεραίνετε; 3.12 Γράψτε ένα πρόγραμμα που να προσομοιώνει ταυτόχρονα N όμοιους αρμονικούς ταλαντωτές. Πάρτε N = 20 και δώστε τυχαίες αρχικές συνθήκες σεκάθεένααπόαυτούςκαιπαρακολουθήστετιςτροχιέςτουςστοχώρο των φάσεων. Παρατηρήστε αν οι τροχιές τέμνονται και εξηγήστε τα αποτελέσματά σας.

129 3.8. ΑΣΚ ΗΣΕΙΣ Στην προηγούμενη άσκηση τοποθετήστε τους N = 20 αρμονικούς ταλαντωτέςστοχώροτωνφάσεωνσεέναμικρότετράγωνομεκέντροτηναρχή των αξόνων. Παρακολουθήστε την εξέλιξη του συστήματος στο χρόνο. Αλλάζει το σχήμα με το χρόνο; Αλλάζει το εμβαδόν; Εξηγήστε Επαναλάβατε την προηγούμενη άσκηση όταν υπάρχει απόσβεση με γ = 0.5.Πάρτε ω 0 = Στην περίπτωση του εκκρεμούς με απόσβεση και εξωτερική δύναμη, πάρτε ω = 2, ω 0 = 1.0, γ = 0.2μελετήστετηνπαροδικήφάσησταδιαγράμματα θ(t), θ(t)για A = 0.1,0.5,0.79,0.85,1.03, Στην περίπτωση του εκκρεμούς με απόσβεση και εξωτερική δύναμη, πάρτε ω = 2, ω 0 = 1.0, γ = 0.2μελετήστετιςτροχιέςστοχώροτηςφάσηςγια A =0.1,0.19,0.21,0.25,0.5,0.71,0.79,0.85,1.02,1.031,1.033,1.05, 1.08, 1.1, 1.4, 1.8, 3.1, 3.5, 3.8, 4.2, 4.42, 4.44, 4.445, 4.447, Αναπαράγετε τα Σχήματα Αναπαράγετε τα Σχήματα 3.31.

130 Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικόυ έργου του διδάσκοντα Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ε.Μ.Π.» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικού πόρους.

Κεφάλαιο 2 : Περιγραφή της Κίνησης. Υπολογιστική Φυσική Ι. Αναγνωστόπουλος Κωνσταντίνος

Κεφάλαιο 2 : Περιγραφή της Κίνησης. Υπολογιστική Φυσική Ι. Αναγνωστόπουλος Κωνσταντίνος Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο Υπολογιστική Φυσική Ι Κεφάλαιο 2 : Περιγραφή της Κίνησης Αναγνωστόπουλος Κωνσταντίνος Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο ΚΕΦΑΛΑΙΟ 2 Περιγραφή της Κίνησης Στο κεφάλαιο αυτό θα δείξουμε πώς να προγραμματίσουμε απλές εξισώσεις τροχιάς ενός σωματιδίου και πώς να κάνουμε βασική ανάλυση των αριθμητικών αποτελεσμάτων. Χρησιμοποιούμε

Διαβάστε περισσότερα

Ενότητα 3 (μέρος 1 ο )

Ενότητα 3 (μέρος 1 ο ) Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών Εθνικό Μετσόβιο Πολυτεχνείο Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού Ενότητα 3 (μέρος 1 ο ) Σιέττος Κωνσταντίνος Άδεια Χρήσης Το παρόν

Διαβάστε περισσότερα

ΕΞΕΤΑΣΕΙΣ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΟΥ ΜΗΧΑΝΙΚΟΥ

ΕΞΕΤΑΣΕΙΣ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ ΕΦΑΡΜΟΓΕΣ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΟΥ ΜΗΧΑΝΙΚΟΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΗΡΩΩΝ ΠΟΛΥΤΕΧΝΕΙΟΥ 9 ΖΩΓΡΑΦΟΥ, 157 80 ΑΘΗΝΑ ηλ. ταχυδρομείο: semfe@central.ntua.gr, fax: 2107721685 ιστοσελίδα: semfe.ntua.gr

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Εικόνα: Στην εκτέλεση πέναλτι, ο ποδοσφαιριστής κτυπά ακίνητη μπάλα, με σκοπό να της δώσει ταχύτητα και κατεύθυνση ώστε να σκοράρει. Υπό προϋποθέσεις, η εκτέλεση μπορεί να ιδωθεί

Διαβάστε περισσότερα

Ασκήσεις Κεφ. 1, Κινηματική υλικού σημείου Κλασική Μηχανική, Τμήμα Μαθηματικών Διδάσκων: Μιχάλης Ξένος, email : mxenos@cc.uoi.gr 10 Απριλίου 2012 1. Αν το διάνυσμα θέσης υλικού σημείου είναι: r(t) = [ln(t

Διαβάστε περισσότερα

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

Διαβάστε περισσότερα

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016 Διδάσκoντες: Χαράλαμπος Παναγόπουλος, Μάριος Κώστα Βαθμός: Όνομα: Α.Δ.Τ.:... ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ 24/03/2016 Άσκηση 1 (1 μονάδα) Ποιο είναι το αποτέλεσμα

Διαβάστε περισσότερα

2. Οι νόµοι της κίνησης, οι δυνάµεις και οι εξισώσεις κίνησης

2. Οι νόµοι της κίνησης, οι δυνάµεις και οι εξισώσεις κίνησης Οι νόµοι της κίνησης, οι δυνάµεις και οι εξισώσεις κίνησης Βιβλιογραφία C Kittel, W D Knight, A Rudeman, A C Helmholz και B J oye, Μηχανική (Πανεπιστηµιακές Εκδόσεις ΕΜΠ, 1998) Κεφ, 3 R Spiegel, Θεωρητική

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική ΙI 11 Ιουνίου 2012

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική ΙI 11 Ιουνίου 2012 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική ΙI Ιουνίου 202 Απαντήστε και στα 4 Θέματα με σαφήνεια και απλότητα. Οι ολοκληρωμένες απαντήσεις στα ερωτήματα εκτιμώνται ιδιαιτέρως. Καλή σας επιτυχία.

Διαβάστε περισσότερα

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. 15 Μαίου 2013

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. 15 Μαίου 2013 ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική 15 Μαίου 013 Συµπληρώστε τα στοιχεία σας στο παρακάτω πίνακα τώρα Ονοµατεπώνυµο Αρ. Ταυτότητας Username Password Δηµιουργήστε ένα φάκελο στο home directory σας µε

Διαβάστε περισσότερα

2 Η ΠΡΟΟΔΟΣ. Ενδεικτικές λύσεις κάποιων προβλημάτων. Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέταση

2 Η ΠΡΟΟΔΟΣ. Ενδεικτικές λύσεις κάποιων προβλημάτων. Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέταση 2 Η ΠΡΟΟΔΟΣ Ενδεικτικές λύσεις κάποιων προβλημάτων Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέταση Ένας τροχός εκκινεί από την ηρεμία και επιταχύνει με γωνιακή ταχύτητα που δίνεται από την,

Διαβάστε περισσότερα

Άσκηση 3 Υπολογισμός του μέτρου της ταχύτητας και της επιτάχυνσης

Άσκηση 3 Υπολογισμός του μέτρου της ταχύτητας και της επιτάχυνσης Άσκηση 3 Υπολογισμός του μέτρου της ταχύτητας και της επιτάχυνσης Σύνοψη Σκοπός της συγκεκριμένης άσκησης είναι ο υπολογισμός του μέτρου της στιγμιαίας ταχύτητας και της επιτάχυνσης ενός υλικού σημείου

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Εικόνα: Στην εκτέλεση πέναλτι, ο ποδοσφαιριστής κτυπά ακίνητη μπάλα, με σκοπό να της δώσει ταχύτητα και κατεύθυνση ώστε να σκοράρει. Υπό προϋποθέσεις, η εκτέλεση μπορεί να ιδωθεί ως κίνηση σε δυο (αντί

Διαβάστε περισσότερα

Το ελαστικο κωνικο εκκρεμε ς

Το ελαστικο κωνικο εκκρεμε ς Το ελαστικο κωνικο εκκρεμε ς 1. Εξισώσεις Euler -Lagrange x 0 φ θ z F l 0 y r m B Το ελαστικό κωνικό εκκρεμές αποτελείται από ένα ελατήριο με σταθερά επαναφοράς k, το οποίο αναρτάται από ένα σταθερό σημείο,

Διαβάστε περισσότερα

1. Κινηµατική. x dt (1.1) η ταχύτητα είναι. και η επιτάχυνση ax = lim = =. (1.2) Ο δεύτερος νόµος του Νεύτωνα παίρνει τη µορφή: (1.

1. Κινηµατική. x dt (1.1) η ταχύτητα είναι. και η επιτάχυνση ax = lim = =. (1.2) Ο δεύτερος νόµος του Νεύτωνα παίρνει τη µορφή: (1. 1. Κινηµατική Βιβλιογραφία C. Kittel W. D. Knight M. A. Rueman A. C. Helmholz και B. J. Moe Μηχανική. Πανεπιστηµιακές Εκδόσεις Ε.Μ.Π. 1998. Κεφ.. {Μαθηµατικό Συµπλήρωµα Μ1 Παράγωγος} {Μαθηµατικό Συµπλήρωµα

Διαβάστε περισσότερα

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

Διαβάστε περισσότερα

ΦΥΣ 145 Λύσεις Ενδιάμεσης Εξέτασης Χ. Παναγόπουλος 12/3/2015

ΦΥΣ 145 Λύσεις Ενδιάμεσης Εξέτασης Χ. Παναγόπουλος 12/3/2015 Οι εντολές είναι: ΦΥΣ 145 Λύσεις Ενδιάμεσης Εξέτασης Χ. Παναγόπουλος 12/3/2015 ls -l../lab3/*/data* cp../lab3/*/plot*../lab3 mkdir../lab1/plot grep FORMAT../*/prog*.f chmod o+r../lab*/*/plot2 cd../lab3/exercise1

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Πτυχιακή εξέταση στη Μηχανική ΙI 20 Σεπτεμβρίου 2007

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Πτυχιακή εξέταση στη Μηχανική ΙI 20 Σεπτεμβρίου 2007 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Πτυχιακή εξέταση στη Μηχανική ΙI 0 Σεπτεμβρίου 007 Τμήμα Π. Ιωάννου & Θ. Αποστολάτου Απαντήστε στα ερωτήματα που ακολουθούν με σαφήνεια, ακρίβεια και απλότητα. Όλα τα

Διαβάστε περισσότερα

Λύσεις στο Επαναληπτικό Διαγώνισμα 2

Λύσεις στο Επαναληπτικό Διαγώνισμα 2 Τμήμα Μηχανικών Οικονομίας και Διοίκησης Απειροστικός Λογισμός ΙΙ Γ. Καραγιώργος ykarag@aegean.gr Λύσεις στο Επαναληπτικό Διαγώνισμα 2 Για τυχόν παρατηρήσεις, απορίες ή λάθη που θα βρείτε, στείλτε μου

Διαβάστε περισσότερα

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

Διαβάστε περισσότερα

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

Διαβάστε περισσότερα

3) το παράθυρο Πίνακας τιμών όπου εμφανίζονται οι τιμές που παίρνουν οι παράμετροι

3) το παράθυρο Πίνακας τιμών όπου εμφανίζονται οι τιμές που παίρνουν οι παράμετροι Ο Δ Η Γ Ι Ε Σ Γ Ι Α Τ Ο M O D E L L U S 0.0 4. 0 5 Για να κατεβάσουμε το πρόγραμμα Επιλέγουμε Download στη διεύθυνση: http://modellus.co/index.php/en/download. Στη συνέχεια εκτελούμε το ModellusX_windows_0_4_05.exe

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Μηχανική Εικόνα: Στην εκτέλεση πέναλτι, ο ποδοσφαιριστής κτυπά ακίνητη μπάλα, με σκοπό να της δώσει ταχύτητα και κατεύθυνση ώστε να σκοράρει. Υπό προϋποθέσεις, η εκτέλεση μπορεί να

Διαβάστε περισσότερα

ΦΥΕ14-5 η Εργασία Παράδοση

ΦΥΕ14-5 η Εργασία Παράδοση ΦΥΕ4-5 η Εργασία Παράδοση.5.9 Πρόβληµα. Συµπαγής οµογενής κύλινδρος µάζας τυλιγµένος µε λεπτό νήµα αφήνεται να κυλίσει από την κορυφή κεκλιµένου επιπέδου µήκους l και γωνίας φ (ϐλέπε σχήµα). Το ένα άκρο

Διαβάστε περισσότερα

Εισαγωγή στο Gnuplot. Σφυράκης Χρυσοβαλάντης

Εισαγωγή στο Gnuplot. Σφυράκης Χρυσοβαλάντης Εισαγωγή στο Gnuplot Σφυράκης Χρυσοβαλάντης Περιεχόμενα Εισαγωγή... 3 Εντολές του Gnuplot... 3 Έξοδος του γραφήματος... 3 Καθορισμός των χαρακτηριστικών του γραφήματος... 4 Συναρτήσεις Αρχεία Δεδομένων...

Διαβάστε περισσότερα

Ενότητα 4: Κεντρικές διατηρητικές δυνάμεις

Ενότητα 4: Κεντρικές διατηρητικές δυνάμεις Ενότητα 4: Κεντρικές διατηρητικές δυνάμεις Έστω F=f κεντρικό πεδίο δυνάμεων. Είναι εύκολο να δείξουμε ότι F=0, δηλ. είναι διατηρητικό: F= V. Σε σφαιρικές συντεταγμένες, γενικά: V ma = F =, V maθ = Fθ =,

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι 22 Ιανουαρίου, 2019

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι 22 Ιανουαρίου, 2019 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι Ιανουαρίου, 9 Καλή σας επιτυχία. Πρόβλημα Α Ένα σωματίδιο μάζας m κινείται υπό την επίδραση του πεδίου δύο σημειακών ελκτικών κέντρων, το ένα εκ των οποίων

Διαβάστε περισσότερα

Μαθηματική Εισαγωγή Συναρτήσεις

Μαθηματική Εισαγωγή Συναρτήσεις Φυσικός Ραδιοηλεκτρολόγος (MSc) ο Γενικό Λύκειο Καστοριάς Καστοριά, Ιούλιος 14 A. Μαθηματική Εισαγωγή Πράξεις με αριθμούς σε εκθετική μορφή Επίλυση βασικών μορφών εξισώσεων Συναρτήσεις Στοιχεία τριγωνομετρίας

Διαβάστε περισσότερα

γ /ω=0.2 γ /ω=1 γ /ω= (ω /g) v. (ω 2 /g)(x-l 0 ) ωt. 2m.

γ /ω=0.2 γ /ω=1 γ /ω= (ω /g) v. (ω 2 /g)(x-l 0 ) ωt. 2m. Μηχανική Ι Εργασία #7 Χειμερινό εξάμηνο 015-016 Ν. Βλαχάκης 1. Σώμα μάζας m και φορτίου q κινείται σε κατακόρυφο άξονα x, δεμένο σε ελατήριο σταθεράς k = mω του οποίου το άλλο άκρο είναι σταθερό. Το σύστημα

Διαβάστε περισσότερα

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

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

Διαβάστε περισσότερα

Κεφάλαιο M4. Κίνηση σε δύο διαστάσεις

Κεφάλαιο M4. Κίνηση σε δύο διαστάσεις Κεφάλαιο M4 Κίνηση σε δύο διαστάσεις Κινηµατική σε δύο διαστάσεις Θα περιγράψουµε τη διανυσµατική φύση της θέσης, της ταχύτητας, και της επιτάχυνσης µε περισσότερες λεπτοµέρειες. Θα µελετήσουµε την κίνηση

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ. ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Σεπτέμβριος 2004

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ. ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Σεπτέμβριος 2004 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Σεπτέμβριος 004 Τμήμα Π Ιωάννου & Θ Αποστολάτου Απαντήστε και στα 4 θέματα με σαφήνεια και συντομία Η πλήρης απάντηση θέματος εκτιμάται ιδιαίτερα

Διαβάστε περισσότερα

Ηλεκτρομαγνητισμός. Μαγνητικό πεδίο. Νίκος Ν. Αρπατζάνης

Ηλεκτρομαγνητισμός. Μαγνητικό πεδίο. Νίκος Ν. Αρπατζάνης Ηλεκτρομαγνητισμός Μαγνητικό πεδίο Νίκος Ν. Αρπατζάνης Μαγνητικοί πόλοι Κάθε μαγνήτης, ανεξάρτητα από το σχήμα του, έχει δύο πόλους. Τον βόρειο πόλο (Β) και τον νότιο πόλο (Ν). Μεταξύ των πόλων αναπτύσσονται

Διαβάστε περισσότερα

E = 1 2 k. V (x) = Kx e αx, dv dx = K (1 αx) e αx, dv dx = 0 (1 αx) = 0 x = 1 α,

E = 1 2 k. V (x) = Kx e αx, dv dx = K (1 αx) e αx, dv dx = 0 (1 αx) = 0 x = 1 α, Μαθηματική Μοντελοποίηση Ι 1. Φυλλάδιο ασκήσεων Ι - Λύσεις ορισμένων ασκήσεων 1.1. Άσκηση. Ενα σωμάτιο μάζας m βρίσκεται σε παραβολικό δυναμικό V (x) = 1/2x 2. Γράψτε την θέση του σαν συνάρτηση του χρόνου,

Διαβάστε περισσότερα

ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 16/2/2012 ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ A ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ Ι

ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 16/2/2012 ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ A ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ Ι ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 6//0 ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ A ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ Ι ΕΞΕΤΑΣΤΗΣ: ΒΑΡΣΑΜΗΣ ΧΡΗΣΤΟΣ ΔΙΑΡΚΕΙΑ ΩΡΕΣ ΑΣΚΗΣΗ Σωματίδιο μάζας m = Kg κινείται ευθύγραμμα και ομαλά στον

Διαβάστε περισσότερα

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

ΦΥΣΙΚΗ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΕΡΓΑΣΙΑ 2 ΑΣΚΗΣΕΙΣ ΣΤΗΝ ΟΜΑΛΗ ΚΥΚΛΙΚΗ ΚΙΝΗΣΗ ΦΥΣΙΚΗ ΘΕΤΙΚΟΥ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΕΡΓΑΣΙΑ 2 ΑΣΚΗΣΕΙΣ ΣΤΗΝ ΟΜΑΛΗ ΚΥΚΛΙΚΗ ΚΙΝΗΣΗ 1. Σώμα μάζας m=15/π Kg εκτελεί ομαλή κυκλική κίνηση ακτίνας R=20/π m με φορά αντίθετη απ τους δείκτες του ρολογιού. Αν το σώμα

Διαβάστε περισσότερα

ΦΥΣ. 211 ΕΡΓΑΣΙΑ # 8 Επιστροφή την Τετάρτη 30/3/2016 στο τέλος της διάλεξης

ΦΥΣ. 211 ΕΡΓΑΣΙΑ # 8 Επιστροφή την Τετάρτη 30/3/2016 στο τέλος της διάλεξης ΦΥΣ. 211 ΕΡΓΑΣΙΑ # 8 Επιστροφή την Τετάρτη 30/3/2016 στο τέλος της διάλεξης 1. Μια µάζα m είναι εξαρτηµένη από το άκρο ενός ελατηρίου µε φυσική συχνότητα ω. Η µάζα αφήνεται να κινηθεί από την κατάσταση

Διαβάστε περισσότερα

Εισαγωγή στο Πρόγραμμα Maxima

Εισαγωγή στο Πρόγραμμα Maxima Εισαγωγή στο Πρόγραμμα Maxima Το Maxima είναι ένα πρόγραμμα για την εκτέλεση μαθηματικών υπολογισμών, συμβολικών μαθηματικών χειρισμών, αριθμητικών υπολογισμών και γραφικών παραστάσεων. Το Maxima λειτουργεί

Διαβάστε περισσότερα

Μαθηματική Εισαγωγή Συναρτήσεις

Μαθηματική Εισαγωγή Συναρτήσεις Φυσικός Ραδιοηλεκτρολόγος (MSc) ο Γενικό Λύκειο Καστοριάς A. Μαθηματική Εισαγωγή Πράξεις με αριθμούς σε εκθετική μορφή Επίλυση βασικών μορφών εξισώσεων Συναρτήσεις Στοιχεία τριγωνομετρίας Διανύσματα Καστοριά,

Διαβάστε περισσότερα

Έναρξη Τερματισμός του MatLab

Έναρξη Τερματισμός του MatLab Σύντομος Οδηγός MATLAB Β. Χ. Μούσας 1/6 Έναρξη Τερματισμός του MatLab Η έναρξη της λειτουργίας του MatLab εξαρτάται από το λειτουργικό σύστημα. Στα συστήματα UNIX πληκτρολογούμε στη προτροπή του συστήματος

Διαβάστε περισσότερα

ΕΠΙΣΚΟΠΗΣΗ ΦΥΣΙΚΗΣ Α ΛΥΚΕΙΟΥ

ΕΠΙΣΚΟΠΗΣΗ ΦΥΣΙΚΗΣ Α ΛΥΚΕΙΟΥ ΕΠΙΣΚΟΠΗΣΗ ΦΥΣΙΚΗΣ Α ΛΥΚΕΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΔΙΔΑΚΤΕΑΣ ΥΛΗΣ ΔΗΜΗΤΡΙΟΣ ΘΕΟΔΩΡΙΔΗΣ Κεφάλαιο 1.1 Ευθύγραμμη κίνηση 1. Τι ονομάζουμε κίνηση; Τι ονομάζουμε τροχιά; Ποια είδη τροχιών γνωρίζετε; Κίνηση ενός αντικειμένου

Διαβάστε περισσότερα

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας Η πρώτη οθόνη μετά την εκτέλεση του προγράμματος διαφέρει κάπως από τα προηγούμενα λογισμικά, αν και έχει αρκετά κοινά στοιχεία. Αποτελείται

Διαβάστε περισσότερα

< h < +. σ (t) = (sin t + t cos t, cos t t sin t, 3), σ (t) = (2 cos t t sin t, 2 sin t t cos t, 0) r (t) = e t j + e t k. σ (t) = 1 2 t 1 2 k

< h < +. σ (t) = (sin t + t cos t, cos t t sin t, 3), σ (t) = (2 cos t t sin t, 2 sin t t cos t, 0) r (t) = e t j + e t k. σ (t) = 1 2 t 1 2 k ΛΥΣΕΙΣ 1. Οι ασκήσεις από το βιβλίο των Marsden - Tromba. 1. 3.1(3)(a) Είναι r (t) = sin ti + 2 cos(2t)j, r (t) = cos ti 4 sin(2t)j για κάθε t, r (0) = 2j, r (0) = i. Η εξίσωση της εφαπτομένης στο r(0)

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ επάνω στην ύλη της Προόδου 1 Δ. ΚΟΥΖΟΥΔΗΣ. Τμήμα Χημικών Μηχανικών, Χειμερινό Εξάμηνο 2015

ΑΣΚΗΣΕΙΣ επάνω στην ύλη της Προόδου 1 Δ. ΚΟΥΖΟΥΔΗΣ. Τμήμα Χημικών Μηχανικών, Χειμερινό Εξάμηνο 2015 ΑΣΚΗΣΕΙΣ επάνω στην ύλη της Προόδου 1 Δ. ΚΟΥΖΟΥΔΗΣ Τμήμα Χημικών Μηχανικών, Χειμερινό Εξάμηνο 2015 m k θ ΚΙΝΗΣΗ ΣΕ ΕΥΘΕΙΑ ΓΡΑΜΜΗ... 3 Ορισμός της στιγμιαίας ταχύτητας... 3 Γραφική ερμηνεία της ταχύτητας...

Διαβάστε περισσότερα

ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ

ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 4// ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΤΗΣ: ΒΑΡΣΑΜΗΣ ΧΡΗΣΤΟΣ ΔΙΑΡΚΕΙΑ ΩΡΕΣ ΑΣΚΗΣΗ α) Για δεδομένη αρχική ταχύτητα υ, με ποια γωνία

Διαβάστε περισσότερα

1 Η ΠΡΟΟΔΟΣ. Ενδεικτικές λύσεις κάποιων προβλημάτων. Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέτασης

1 Η ΠΡΟΟΔΟΣ. Ενδεικτικές λύσεις κάποιων προβλημάτων. Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέτασης 1 Η ΠΡΟΟΔΟΣ Ενδεικτικές λύσεις κάποιων προβλημάτων Τα νούμερα στις ασκήσεις είναι ΤΥΧΑΙΑ και ΟΧΙ αυτά της εξέτασης Ο Ένα υλικό σημείο κινείται επάνω σε μια ευθεία έτσι ώστε η απομάκρυνση του να δίνεται

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Μηχανική Εικόνα: Ο πίνακας ελέγχου σε ένα πιλοτήριο βοηθά τον πιλότο να κρατά το αεροσκάφος υπό έλεγχο δηλ. να ελέγχει πόσο γρήγορα ταξιδεύει και σε ποια κατεύθυνση επιτρέποντάς του

Διαβάστε περισσότερα

Ασκήσεις Κλασικής Μηχανικής, Τμήμα Μαθηματικών Διδάσκων: Μιχάλης Ξένος, email : mxenos@cc.uoi.gr 19 Απριλίου 2013 Κεφάλαιο Ι 1. Να γραφεί το διάνυσμα της ταχύτητας και της επιτάχυνσης υλικού σημείου σε

Διαβάστε περισσότερα

Άσκηση: Απλό Πρότυπο Χωροχρονικής Σκουλικότρυπας

Άσκηση: Απλό Πρότυπο Χωροχρονικής Σκουλικότρυπας Άσκηση: Απλό Πρότυπο Χωροχρονικής Σκουλικότρυπας Σχήμα 1: Η χωρική γεωμετρία της σκουλικότρυπας. Δύο ασυμπτωτικά επίπεδα μέρη του χώρου συνδέονται με ένα λαιμό ό οποίος μπορεί να κανονιστεί να είναι μικρού

Διαβάστε περισσότερα

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό Επικοινωνία Προγράμματος Περιβάλλοντος ΕΠΛ031 Εισαγωγή στον Προγραμματισμό Επικοινωνία Προγράμματος Περιβάλλοντος Λογικές Μονάδες Μεταφορά εδομένων Μορφοποίηση εδομένων Νέαρχος Πασπαλλής Επισκέπτης Ακαδημαϊκός

Διαβάστε περισσότερα

ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 3//7/2013 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ

ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 3//7/2013 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 3//7/013 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΤΗΣ: ΒΑΡΣΑΜΗΣ ΧΡΗΣΤΟΣ ΔΙΑΡΚΕΙΑ ΩΡΕΣ ΑΣΚΗΣΗ 1 Σώμα μάζας m=0.1 Kg κινείται σε οριζόντιο δάπεδο ευθύγραμμα με την

Διαβάστε περισσότερα

 = 1 A A = A A. A A + A2 y. A = (A x, A y ) = A x î + A y ĵ. z A. 2 A + A2 z

 = 1 A A = A A. A A + A2 y. A = (A x, A y ) = A x î + A y ĵ. z A. 2 A + A2 z Οκτώβριος 2017 Ν. Τράκας ΜΑΘΗΜΑΤΙΚΟ ΒΟΗΘΗΜΑ ΔΙΑΝΥΣΜΑΤΑ Διάνυσμα: κατεύθυνση (διεύθυνση και ϕορά) και μέτρο. Συμβολισμός: A ή A. Αναπαράσταση μέσω των συνιστωσών του: A = (A x, A y ) σε 2-διαστάσεις και

Διαβάστε περισσότερα

ΚΑΡΤΕΣΙΑΝΟ ΣΥΣΤΗΜΑ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ

ΚΑΡΤΕΣΙΑΝΟ ΣΥΣΤΗΜΑ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ ΚΑΡΤΕΣΙΑΝΟ ΣΥΣΤΗΜΑ ΣΕ ΔΥΟ ΔΙΑΣΤΑΣΕΙΣ Δυο κάθετοι μεταξύ τους προσανατολισμένοι και βαθμονομημένοι άξονες A Α Έστω σημείο Α στο επίπεδο Η θέση του προσδιορίζεται από τις προβολές στους άξονες A, A 0 A Η

Διαβάστε περισσότερα

Συμβολικά ονόματα που δίνονται σε θέσεις μνήμης όπου αποθηκεύονται αριθμοί. ιεύθυνση

Συμβολικά ονόματα που δίνονται σε θέσεις μνήμης όπου αποθηκεύονται αριθμοί. ιεύθυνση ΥΠΟΛΟΓΙΣΤΕΣ Ι Τι είναι οι μεταβλητές ΕΣ ΤΑΒΛΗΤ - ΜΕΤ ΙΣΤΕΣ Ι ΠΟΛΟΓΙ ΥΠ ΜΕΤΑΒΛΗΤΕΣ Συμβολικά ονόματα που δίνονται σε θέσεις μνήμης όπου αποθηκεύονται αριθμοί. ιεύθυνση 0 1 2 3 4 MNHMH 5 6 7 8 9 Κ Α 1..

Διαβάστε περισσότερα

Κεφάλαιο 1. Κίνηση σε μία διάσταση

Κεφάλαιο 1. Κίνηση σε μία διάσταση Κεφάλαιο 1 Κίνηση σε μία διάσταση Κινηματική Περιγράφει την κίνηση, αγνοώντας τις αλληλεπιδράσεις με εξωτερικούς παράγοντες που ενδέχεται να προκαλούν ή να μεταβάλλουν την κίνηση. Προς το παρόν, θα μελετήσουμε

Διαβάστε περισσότερα

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου Ιωάννης Γ. Τσούλος Εργασία Πρώτη - Αριθμομηχανή Με την χρήση του περιβάλλοντος AWT ή του SWING θα πρέπει να δημιουργηθεί αριθμομηχανή για την εκτέλεση

Διαβάστε περισσότερα

Εξίσωση Διάχυσης στη Μία Διάσταση

Εξίσωση Διάχυσης στη Μία Διάσταση ΚΕΦΑΛΑΙΟ 8 Εξίσωση Διάχυσης στη Μία Διάσταση 8.1 Εισαγωγή Η εξίσωση διάχυσης είναι στενά συνδεδεμένη με τη διαδρομή ενός τυχαίου περιπατητή (random walker). Ας υποθέσουμε ότι μελετάμε την κίνηση ενός τέτοιου

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Μηχανική Εικόνα: Ο πίνακας ελέγχου σε ένα πιλοτήριο βοηθά τον πιλότο να κρατά το αεροσκάφος υπό έλεγχο δηλ. να ελέγχει πόσο γρήγορα ταξιδεύει και σε ποια κατεύθυνση επιτρέποντάς του

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ. ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Ιούνιος 2004

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ. ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Ιούνιος 2004 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΕΞΕΤΑΣΗ ΣΤΗ ΜΗΧΑΝΙΚΗ ΙI Ιούνιος 2004 Τμήμα Π. Ιωάννου & Θ. Αποστολάτου Απαντήστε στα 4 θέματα με σαφήνεια συντομία. Η πλήρης απάντηση θέματος εκτιμάται ιδιαίτερα. Καλή

Διαβάστε περισσότερα

4.1 Αριθμητική Ολοκλήρωση Εξισώσεων Νεύτωνα

4.1 Αριθμητική Ολοκλήρωση Εξισώσεων Νεύτωνα ΚΕΦΑΛΑΙΟ 4 Κίνηση Σωματιδίου Στο κεφάλαιο αυτό μελετάται αριθμητικά η επίλυση των κλασικών εξισώσεων κίνησης μονοδιάστατων μηχανικών συστημάτων, όπως λ.χ. αυτή του σημειακού σωματιδίου σε μια ευθεία, του

Διαβάστε περισσότερα

Κεφάλαιο 3. Κίνηση σε δύο διαστάσεις (επίπεδο)

Κεφάλαιο 3. Κίνηση σε δύο διαστάσεις (επίπεδο) Κεφάλαιο 3 Κίνηση σε δύο διαστάσεις (επίπεδο) Κινηματική σε δύο διαστάσεις Θα περιγράψουμε τη διανυσματική φύση της θέσης, της ταχύτητας, και της επιτάχυνσης με περισσότερες λεπτομέρειες. Σαν ειδικές περιπτώσεις,

Διαβάστε περισσότερα

Ασκήσεις 6 ου Κεφαλαίου

Ασκήσεις 6 ου Κεφαλαίου Ασκήσεις 6 ου Κεφαλαίου 1. Μία ράβδος ΟΑ έχει μήκος l και περιστρέφεται γύρω από τον κατακόρυφο άξονα Οz, που είναι κάθετος στο άκρο της Ο με σταθερή γωνιακή ταχύτητα ω. Να βρεθεί r η επαγώμενη ΗΕΔ στη

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Ι

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Ι ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Ι Θεωρητική περιγραφή της Κίνησης Φορτισµένων Σωµατιδίων σε σταθ. Ηλεκτρικό & Μαγνητικό Πεδίο Αν ένα φορτισµένο σωµατίδιο µε φορτίο q βρεθεί µέσα σε Ηλεκτρικό Πεδίο ή σε Μαγνητικό Πεδίο

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική Ι 20 Οκτωβρίου 2011

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική Ι 20 Οκτωβρίου 2011 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική Ι 20 Οκτωβρίου 20 Τμήμα Π. Ιωάννου & Θ. Αποστολάτου Θέμα Α: (α) Να υπολογίσετε το βαρυτικό δυναμικό σε απόσταση r από το κέντρο ευθύγραμμης ράβδου

Διαβάστε περισσότερα

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

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Εργαστήριο Επεξεργασία Εικόνας & Βίντεο 1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή Νικόλαος Γιαννακέας Άρτα 2018 1 Εισαγωγή Το Matlab

Διαβάστε περισσότερα

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Β ΛΥΚΕΙΟΥ Καμπυλόγραμμες Κινήσεις Επιμέλεια: Αγκανάκης Α. Παναγιώτης, Φυσικός http://phyiccore.wordpre.com/ Βασικές Έννοιες Μέχρι στιγμής έχουμε μάθει να μελετάμε απλές κινήσεις,

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Εικόνα: Το Σέλας συμβαίνει όταν υψηλής ενέργειας, φορτισμένα σωματίδια από τον Ήλιο ταξιδεύουν στην άνω ατμόσφαιρα της Γης λόγω της ύπαρξης του μαγνητικού της πεδίου. Μαγνητισμός

Διαβάστε περισσότερα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Δομή Επανάληψης Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Δομή Επανάληψης Επανάληψη με αρίθμηση DO = ,

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΑ 3,4. Συστήµατα ενός Βαθµού ελευθερίας. k Για E 0, η (1) ισχύει για κάθε x. Άρα επιτρεπτή περιοχή είναι όλος ο άξονας

ΚΕΦΑΛΑΙΑ 3,4. Συστήµατα ενός Βαθµού ελευθερίας. k Για E 0, η (1) ισχύει για κάθε x. Άρα επιτρεπτή περιοχή είναι όλος ο άξονας ΚΕΦΑΛΑΙΑ,4. Συστήµατα ενός Βαθµού ελευθερίας. Να βρεθούν οι επιτρεπτές περιοχές της κίνησης στον άξονα ' O για την απωστική δύναµη F, > και για ενέργεια Ε. (α) Είναι V και οι επιτρεπτές περιοχές της κίνησης

Διαβάστε περισσότερα

GMR L = m. dx a + bx + cx. arcsin 2cx b b2 4ac. r 3. cos φ = eg. 2 = 1 c

GMR L = m. dx a + bx + cx. arcsin 2cx b b2 4ac. r 3. cos φ = eg. 2 = 1 c Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών, Τμήμα Φυσικής Εξετάσεις στη Μηχανική Ι, Τμήμα Κ. Τσίγκανου & Ν. Βλαχάκη, 9 Μαΐου 01 Διάρκεια εξέτασης 3 ώρες, Καλή επιτυχία bonus ερωτήματα Ονοματεπώνυμο:,

Διαβάστε περισσότερα

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα Εισαγωγή στη Fortran Μάθημα 1 ο Ελευθερία Λιούκα liouka.eleftheria@gmail.com Περιεχόμενα Ιστορία της Fortran Βασικές γνώσεις Fortran Επιτρεπτοί χαρακτήρες Μορφή προγράμματος Τύποι μεταβλητών Πράξεις και

Διαβάστε περισσότερα

ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ

ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 4// ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΑΠΑΝΤΗΣΕΙΣ ΓΡΑΠΤΗΣ ΕΞΕΤΑΣΗΣ ΣΤΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΤΗΣ: ΒΑΡΣΑΜΗΣ ΧΡΗΣΤΟΣ ΔΙΑΡΚΕΙΑ ΩΡΕΣ ΑΣΚΗΣΗ α) Για δεδομένη αρχική ταχύτητα υ, με ποια γωνία

Διαβάστε περισσότερα

M m l B r mglsin mlcos x ml 2 1) Να εισαχθεί το µοντέλο στο simulink ορίζοντας από πριν στο MATLAB τις µεταβλητές Μ,m,br

M m l B r mglsin mlcos x ml 2 1) Να εισαχθεί το µοντέλο στο simulink ορίζοντας από πριν στο MATLAB τις µεταβλητές Μ,m,br ΑΣΚΗΣΗ 1 Έστω ένα σύστηµα εκκρεµούς όπως φαίνεται στο ακόλουθο σχήµα: Πάνω στη µάζα Μ επιδρά µια οριζόντια δύναµη F l την οποία και θεωρούµε σαν είσοδο στο σύστηµα. Έξοδος του συστήµατος θεωρείται η απόσταση

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι 24 Σεπτεμβρίου 2018

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι 24 Σεπτεμβρίου 2018 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Μηχανική Ι 24 Σεπτεμβρίου 2018 Καλή σας επιτυχία. Σύνολο πόντων 130. Τμήμα Π. Ιωάννου & Θ. Αποστολάτου Πρόβλημα Α 1. Να γραφεί το διάνυσμα της έντασης του βαρυτικού πεδίου

Διαβάστε περισσότερα

Υπολογιστές Ι. Άδειες Χρήσης. Μεταβλητές και πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Υπολογιστές Ι. Άδειες Χρήσης. Μεταβλητές και πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης Υπολογιστές Ι Μεταβλητές και πράξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

Διαβάστε περισσότερα

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

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

Διαβάστε περισσότερα

dx cos x = ln 1 + sin x 1 sin x.

dx cos x = ln 1 + sin x 1 sin x. Μηχανική Ι Εργασία #5 Χειμερινό εξάμηνο 17-18 Ν. Βλαχάκης 1. Εστω πεδίο δύναμης F = g () cos y ˆ + λ g() sin y ŷ, όπου λ = σταθερά και g() = 1 e π/ B C (σε κατάλληλες μονάδες). (α) Υπολογίστε πόση ενέργεια

Διαβάστε περισσότερα

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

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

Μηχανική του στερεού σώματος

Μηχανική του στερεού σώματος Κεφάλαιο 1 Μηχανική του στερεού σώματος 1.1 Εισαγωγή 1. Το θεώρημα του Chales Η γενική κίνηση του στερεού σώματος μπορεί να μελετηθεί με τη βοήθεια του παρακάτω θεωρήματος το οποίο δίνουμε χωρίς απόδειξη

Διαβάστε περισσότερα

v = r r + r θ θ = ur + ωutθ r = r cos θi + r sin θj v = u 1 + ω 2 t 2

v = r r + r θ θ = ur + ωutθ r = r cos θi + r sin θj v = u 1 + ω 2 t 2 ΑΠΑΝΤΗΣΕΙΣ ΣΤΑ ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΦΥΣΙΚΉΣ Ι ΤΜΗΜΑ ΧΗΜΕΙΑΣ, 9 ΙΑΝΟΥΑΡΙΟΥ 019 ΚΏΣΤΑΣ ΒΕΛΛΙΔΗΣ, cvellid@phys.uoa.r, 10 77 6895 ΘΕΜΑ 1: Σώµα κινείται µε σταθερή ταχύτητα u κατά µήκος οριζόντιας ράβδου που περιστρέφεται

Διαβάστε περισσότερα

ΛΥΣΕΙΣ ΔΙΑΓΩΝΙΣΜΑΤΟΣ ΦΕΒΡΟΥΑΡΙΟΥ 2001. + mu 1 2m. + u2. = u 1 + u 2. = mu 1. u 2, u 2. = u2 u 1 + V2 = V1

ΛΥΣΕΙΣ ΔΙΑΓΩΝΙΣΜΑΤΟΣ ΦΕΒΡΟΥΑΡΙΟΥ 2001. + mu 1 2m. + u2. = u 1 + u 2. = mu 1. u 2, u 2. = u2 u 1 + V2 = V1 ΛΥΣΕΙΣ ΔΙΑΓΩΝΙΣΜΑΤΟΣ ΦΕΒΡΟΥΑΡΙΟΥ 00 ΘΕΜΑ : (α) Ταχύτητα ΚΜ: u KM = mu + mu m = u + u Εποµένως u = u u + u = u u, u = u u + u = u u (β) Διατήρηση ορµής στο ΚΜ: mu + mu = mv + mv u + u = V + V = 0 V = V

Διαβάστε περισσότερα

ΘΕΜΑΤΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΓΙΑ «ΜΑΘΗΜΑΤΙΚΑ ΙΙ» ΑΚΟΛΟΥΘΙΕΣ ΚΑΙ ΟΡΙΑ ΑΚΟΛΟΥΘΙΩΝ. lim. (β) n +

ΘΕΜΑΤΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΓΙΑ «ΜΑΘΗΜΑΤΙΚΑ ΙΙ» ΑΚΟΛΟΥΘΙΕΣ ΚΑΙ ΟΡΙΑ ΑΚΟΛΟΥΘΙΩΝ. lim. (β) n + ΘΕΜΑΤΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΓΙΑ «ΜΑΘΗΜΑΤΙΚΑ ΙΙ» ΑΚΟΛΟΥΘΙΕΣ ΚΑΙ ΟΡΙΑ ΑΚΟΛΟΥΘΙΩΝ ) Να υπολογιστούν τα όρια των κάτωθι ακολουθιών με : (α) + 5 + 7 + + (β) + 5 + + (γ) + + + (δ) ( 5 ) + + 4 + ( ) + 5 ) Να βρεθούν

Διαβάστε περισσότερα

ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΙΚΗ Ι - ΙΟΥΝΙΟΣ Θέματα και Λύσεις. Ox υπό την επίδραση του δυναμικού. x 01

ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΙΚΗ Ι - ΙΟΥΝΙΟΣ Θέματα και Λύσεις. Ox υπό την επίδραση του δυναμικού. x 01 ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΙΚΗ Ι - ΙΟΥΝΙΟΣ 1 Θέματα και Λύσεις ΘΕΜΑ 1 Υλικό σημείο κινείται στον άξονα x' Ox υπό την επίδραση του δυναμικού 3 ax x V ( x) a x, a 3 α) Βρείτε τα σημεία ισορροπίας και την ευστάθειά τους

Διαβάστε περισσότερα

ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΙΚΗ ΙΙ

ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΙΚΗ ΙΙ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΤΟΜΕΑΣ ΑΣΤΡΟΝΟΜΙΑΣ ΑΣΤΡΟΦΥΣΙΚΗΣ ΚΑΙ ΜΗΧΑΝΙΚΗΣ ΣΠΟΥΔ ΑΣΤΗΡΙΟ ΜΗΧΑΝΙΚΗΣ ΑΣΚΗΣΕΙΣ ΑΝΑΛΥΤΙΚΗΣ ΔΥΝΑΜΙΚΗΣ Μεθοδολογία Κλεομένης Γ. Τσιγάνης Λέκτορας ΑΠΘ Πρόχειρες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Χημείας Φυσική 1 1 Φεβρουαρίου 2017

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Χημείας Φυσική 1 1 Φεβρουαρίου 2017 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Χημείας Φυσική 1 1 Φεβρουαρίου 017 Πρόβλημα Α Ένα σημειακό σωματίδιο μάζας m βάλλεται υπό γωνία ϕ και με αρχική ταχύτητα μέτρου v 0 από το έδαφος Η κίνηση εκτελείται στο ομογενές

Διαβάστε περισσότερα

ΜΑΘΗΜΑΤΙΚΑ ΙΙ ΠΑΡΑΔΕΙΓΜΑΤΑ Διανύσματα - Διανυσματικές Συναρτήσεις

ΜΑΘΗΜΑΤΙΚΑ ΙΙ ΠΑΡΑΔΕΙΓΜΑΤΑ Διανύσματα - Διανυσματικές Συναρτήσεις ΜΑΘΗΜΑΤΙΚΑ ΙΙ ΠΑΡΑΔΕΙΓΜΑΤΑ Διανύσματα - Διανυσματικές Συναρτήσεις Επιμέλεια: Ι. Λυχναρόπουλος a) Να βρεθεί η ευθεία που διέρχεται από το σημείο P (5,,3) και είναι παράλληλη προς το διάνυσμα iˆ+ 4ˆj kˆ

Διαβάστε περισσότερα

Το μεσαίο πλήκτρο ενεργοποιεί τα Osnaps μόνο αν η μεταβλητή MBUTTONPAN έχει τιμή 1.

Το μεσαίο πλήκτρο ενεργοποιεί τα Osnaps μόνο αν η μεταβλητή MBUTTONPAN έχει τιμή 1. ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΣΗΜΕΙΑ ΕΛΞΗΣ Ο μηχανισμός OBJECT SNAP ή OSNAP (έλξη σε αντικείμενα) μας επιτρέπει να προσδιορίζουμε, όποτε χρειάζεται, σημεία σε χαρακτηριστικές θέσεις πάνω σε αντικείμενα του σχεδίου μας,

Διαβάστε περισσότερα

Ακτίνα καμπυλότητας - Ανάλυση επιτάχυνσης σε εφαπτομενική και κεντρομόλο συνιστώσα

Ακτίνα καμπυλότητας - Ανάλυση επιτάχυνσης σε εφαπτομενική και κεντρομόλο συνιστώσα Ακτίνα καμπυλότητας - Ανάλυση επιτάχυνσης σε εφαπτομενική και κεντρομόλο συνιστώσα Εξ ορισμού, ένας κύκλος έχει συγκεκριμένη και σταθερή καμπυλότητα σε όλα τα σημεία του ίση με 1/R όπου R η ακτίνα του.

Διαβάστε περισσότερα

ΕΡΓΑΣΙΑ 3 η. Παράδοση Οι ασκήσεις είναι βαθμολογικά ισοδύναμες

ΕΡΓΑΣΙΑ 3 η. Παράδοση Οι ασκήσεις είναι βαθμολογικά ισοδύναμες ΕΡΓΑΣΙΑ 3 η Παράδοση 9--9 Οι ασκήσεις είναι βαθμολογικά ισοδύναμες Άσκηση 1 A) Δυο τραίνα ταξιδεύουν στην ίδια σιδηροτροχιά το ένα πίσω από το άλλο. Το πρώτο τραίνο κινείται με ταχύτητα 1 m s. Το δεύτερο

Διαβάστε περισσότερα

Φυσική για Μηχανικούς

Φυσική για Μηχανικούς Φυσική για Μηχανικούς Εικόνα: Το Σέλας συμβαίνει όταν υψηλής ενέργειας, φορτισμένα σωματίδια από τον Ήλιο ταξιδεύουν στην άνω ατμόσφαιρα της Γης λόγω της ύπαρξης του μαγνητικού της πεδίου. Μαγνητισμός

Διαβάστε περισσότερα

Γενική Φυσική Ενότητα: Κινητική

Γενική Φυσική Ενότητα: Κινητική Γενική Φυσική Ενότητα: Κινητική Όνομα Καθηγητή: Γεώργιος Βούλγαρης Τμήμα: Μαθηματικό Σελίδα 2 1. Ασκήσεις κινητικής... 4 1.1 Άσκηση 1... 4 1.2 Άσκηση 2... 4 1.3 Άσκηση 3... 4 1.4 Άσκηση 4... 4 1.5 Άσκηση

Διαβάστε περισσότερα

y = u i t 1 2 gt2 y = m y = 0.2 m

y = u i t 1 2 gt2 y = m y = 0.2 m ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Τµήµα Επιστήµης Υπολογιστών HY-112: Φυσική Ι Χειµερινό Εξάµηνο 2018 ιδάσκων : Γ. Καφεντζής Πρώτη Σειρά Ασκήσεων - Λύσεις Ασκηση 1. (αʹ) Το χαρτονόµισµα ξεκινά από ηρεµία, u i = 0, και

Διαβάστε περισσότερα

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

ΕΙΔΙΚΗ ΘΕΩΡΙΑ ΤΗΣ ΣΧΕΤΙΚΟΤΗΤΑΣ

ΕΙΔΙΚΗ ΘΕΩΡΙΑ ΤΗΣ ΣΧΕΤΙΚΟΤΗΤΑΣ ΕΙΔΙΚΗ ΘΕΩΡΙΑ ΤΗΣ ΣΧΕΤΙΚΟΤΗΤΑΣ Διδάσκων: Θεόδωρος Ν. Τομαράς 1. Μετασχηματισμοί συντεταγμένων και συμμετρίες. 1α. Στροφές στο επίπεδο. Θεωρείστε δύο καρτεσιανά συστήματα συντεταγμένων στο επίπεδο, στραμμένα

Διαβάστε περισσότερα

) z ) r 3. sin cos θ,

) z ) r 3. sin cos θ, Μηχανική Ι Εργασία #5 Χειμερινό εξάμηνο 4-5 Ν. Βλαχάκης. Σώμα μάζας m κινείται στο πεδίο δύναμης της πρώτης άσκησης της τέταρτης εργασίας με λ, αλλά επιπλέον είναι υποχρεωμένο να κινείται μόνο στην ευθεία

Διαβάστε περισσότερα

Προσομoίωση Απόκρισης Συστήματος στο MATLAB

Προσομoίωση Απόκρισης Συστήματος στο MATLAB Δυναμική Μηχανών Ι Διδάσκων: Αντωνιάδης Ιωάννης Προσομoίωση Απόκρισης Συστήματος στο MATLAB Άδεια Χρήσης Το παρόν υλικό βασίζεται στην παρουσίαση Προσομoίωση Απόκρισης Συστήματος στο MATLAB του καθ. Ιωάννη

Διαβάστε περισσότερα

ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ

ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ ΑΤΕΙ ΠΕΙΡΑΙΑ/ ΣΤΕΦ 19//013 ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΤΗΣ: ΒΑΡΣΑΜΗΣ ΧΡΗΣΤΟΣ ΔΙΑΡΚΕΙΑ ΩΡΕΣ ΑΣΚΗΣΗ 1 υ (m/s) Σώμα μάζας m = 1Kg κινείται σε ευθύγραμμη τροχιά

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική I 2 Σεπτεμβρίου 2010

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική I 2 Σεπτεμβρίου 2010 ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Εξέταση στη Μηχανική I Σεπτεμβρίου 00 Απαντήστε και στα 0 ερωτήματα με σαφήνεια και απλότητα. Οι ολοκληρωμένες απαντήσεις εκτιμώνται ιδιαιτέρως. Καλή σας επιτυχία.. Ένας

Διαβάστε περισσότερα