Υπολογιστική Φυσική Υ0338 Σχολή Θετικών Επιστηµών Τµήµα Φυσικής Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών 2019-2020 Κώστας Θεοφιλάτος
τι; Αριθµητική Ανάλυση Υπολογιστική Φυσική Επιστήµη Υπολογιστών Αριθµητική Εξοµοίωση
γιατί; τα περισσότερα προβλήµατα δεν αντιµετωπίζονται αναλυτικά!3
πως; διακριτοποίηση προσέγγιση όπως τα ορθογώνια προσεγγίζουν µε διακριτά και σταθερά βήµατα τη συνάρτηση και το άθροισµά τους προσεγγίζει το ολοκλήρωµά της!4
όπως διακριτοποίηση προσέγγιση οι νότες διακριτοποιούν την µουσική!5
όπως διακριτοποίηση προσέγγιση οι λέξεις διακριτοποιούν τις σκέψεις µας!6
στην ΥΦ κατανοώ µπορώ και προβλέπω τι θα γίνει µέσω υπολογιστικής εξοµοίωσης βρίσκω την λύση κατασκευάζω αλγόριθµο που βρίσκει τη λύση!7
ταχύτητα αλγορίθµου αξιοπιστία (θα βρει τη σωστή λύση;)!8
αλγόριθµοι µε ιστορία Secant ~17ος πχ Babylonian ~60 µχ Newton-Raphson ~17ος µχ!9
υπολογιστική ισχύς cloud FPGA γίνεται όλο και πιο φθηνή & προσβάσιµη, µας προσκαλεί να αλλάξουµε τον τρόπο υλοποίησης και επιλογής κατάλληλων αλγορίθµων clusters GPU!10
ποια γλώσσα; Matlab Python C/C++ Mathematica Fortran Perl https://en.wikipedia.org/wiki/ Category:Numerical_programming_languages https://en.wikipedia.org/wiki/ List_of_numerical-analysis_software >60 υπολογιστικά περιβάλλοντα εργασίας εν αντιθέσει µε την κατασκευή του Πύργου της Βαβέλ, οι διαφορετικές γλώσσες προγραµµατισµού δεν αποτελούν εµπόδιο στην κατανόηση του µαθήµατος!11
οποιαδήποτε γλώσσα 1) ασκήσεις σε Η/Υ: µπορείτε να χρησιµοποιήσετε όποια γλώσσα προγραµµατισµού θέλετε 2) εξεταστική: οποιαδήποτε γλώσσα προγραµµατισµού ή ψευδοκώδικα!12
C/C++ (+Python) µε ROOT https://root.cern.ch/ Ανοιχτό λογισµικό προϋποθέτει εγκατάσταση στον Η/Υ σας υποστηρίζει C/C++ και Python σε Linux, OSx, Windows προαιρετικό όχι προϋπόθεση για την ΥΦ0338!13
υπολογιστικό περιβάλλον τρέχει διαδραστικά στο cloud και όχι στον Η/Υ σας https://theofil.github.io/compphysics/ κλικ εδώ δε χρειάζεται καµία εγκατάσταση / εγγραφή προσπελάσιµο ανώνυµα (ακόµα και από κινητό), βασισµένο σε λογισµικό ανοιχτού κώδικα (Python3) προαιρετικό όχι προϋπόθεση για την ΥΦ0338!14
πατώντας shift+enter, εκτελείται ο κώδικας (διαδραστικά)
παράδειγµα στο binder γραφικά µε Python https://github.com/theofil/ CompPhysics/blob/master/ examples/simpleplot.ipynb!16
πραγµατικοί αριθµοί το πρώτο θύµα της διακριτοποίησης!17
αριθµοί µηχανής. = 101.01!18
ανακοινώσεις (03.10.19) 1) χρησιµοποιούµε µόνο το compphysicsekpa@gmail.com για οποιαδήποτε σε σχέση µε το µάθηµα/ασκήσεις 2) e-class θα βρίσκεται πάντα τα επικαιροποιηµένα αρχεία µε slides/ασκήσεις!19
ανακοινώσεις (03.10.19) 3) εάν ο κώδικας σας είναι σχολιασµένος, δε χρειάζεται να χαλάτε χρόνο για να γράφετε ωραία επεξηγηµατικά κείµενα, απλά συµπεριλάβετε το printout που παράγει παράδειγµα σωστής, συνοπτικής και πλήρους απάντησης εάν χρειάζεται να συµπεριλάβετε και γραφικά που τυχών παράγονται στο printout, τότε µπορείτε να τα στείλετε σε ξεχωριστά αρχεία pdf, jpg, png!20
ανακοινώσεις (03.10.19) 4) εάν ο κώδικας είναι σε ipynb, τότε σίγουρα δε χρειάζεται να στείλετε ξεχωριστά αρχεία αφού printout + graphics συµπεριλαµβάνονται στο αρχείο π.χ. https://colab.research.google.com/drive/1swb1pt2u7slpncszvrazfauendx9s0fq Σε διαφορετική περίπτωση να συµπεριλάβετε αρχεία που να δείχνουν το αποτέλεσµα της εκτέλεσης του κώδικα (printout + graphics)!21
επίλυση της f(x) = 0 Όταν η f(x) είναι µη-γραµµική, τα πράγµατα δυσκολεύουν διχοτόµηση (Bisection) εσφαλµένη θέση (Regula Falsi) διατέµνουσας (Secant) σταθερού σηµείου Newton-Raphson!22
επίλυση της f(x) = 0 Όταν η f(x) είναι µη-γραµµική, τα πράγµατα δυσκολεύουν διχοτόµηση (Bisection) εσφαλµένη θέση (Regula Falsi) διατέµνουσας (Secant) σταθερού σηµείου Newton-Raphson Υποθέτουν την ύπαρξη καλής αρχικής εκτίµησης από τον χρήστη την οποία θα (προσπαθήσουν) να βελτιώσουν επαναληπτικά.!23
επίλυση της f(x) = 0 Όταν η f(x) είναι µη-γραµµική, τα πράγµατα δυσκολεύουν διχοτόµηση (Bisection) εσφαλµένη θέση (Regula Falsi) διατέµνουσας (Secant) σταθερού σηµείου Newton-Raphson Παρενθετικές µέθοδοι [bracketing methods] a < ρίζα < b, συρρίκνωση του διαστήµατος b - a!24
επίλυση της f(x) = 0 Όταν η f(x) είναι µη-γραµµική, τα πράγµατα δυσκολεύουν διατέµνουσας (Secant) σταθερού σηµείου Newton-Raphson Fixed-point iterations [επαναλήψεις σταθερού σηµείου] xn+1 = g(xn) [αναδροµική σχέση ενός σηµείου] xn+1 = g(xn, xn-1, xn-2 ) [αναδροµική σχέση πολλών lim x n = n!1 σηµείων]!25
επίλυση της f(x) = 0 Συνήθως, δεν επισηµαίνεται όσο πρέπει ότι η γραφική µέθοδος είναι αναντικατάστατη, για µια καλή αρχή tan x = x 1 x 2 ποια είναι µια καλή αρχική εκτίµηση;!26
ανακοινώσεις (07.10.19) 1) ασκήσεις στο e-class: συµµέτοχη >80%!27
ανακοινώσεις (07.10.19) 2) έχουν αρχίσει να έρχονται λύσεις για το καινούριο πρόβληµα που αναρτήθηκε χθες!28
ανακοινώσεις (07.10.19) όσοι δεν έχουν λάβει απάντηση για τις ασκήσεις τους, υποµονή!29
επισηµάνσεις: Πρόβληµα 1 Η άσκηση φωτογραφίζει το ε σαν το ε-µηχανής, όµως δε το κατονοµάζει. Η ερµηνεία του ε ως machine epsilon δεν είναι απαραίτητη για την επίλυσή της για dx = n ε αφελής παράγωγος για dx = 2 n ε αφελής παράγωγος σχετικό σφάλµα σχετικό σφάλµα!30
14.10.2019
εφαρµογή φυσικής εύρεση ισοδυναµικών γραµµών ηλεκτρικού πεδίου
εφαρµογή φυσικής V(r) = kq/r εύρεση ισοδυναµικών γραµµών µε την λύση αλγεβρικής εξίσωσης, αντί σχεδιασµού του πιο απλού r(θ) = rcosθ i + rsinθ j for x in range(-5,5): find y, for which V(x, y) = Vref brute force - ωµή δύναµη!33
εφαρµογή φυσικής V(r) =Σ kq/r το όφελος του να συνδυάζουµε άπλες οδηγίες (λύσε την f(y) = 0) µε την ωµή δύναµη του Η/Υ, είναι η δυνατότητα γενίκευσης για προβλήµατα πιο δύσκολα, πχ 3 φορτία for x in range(-5,5): find y, for which V(x, y) = Vref ο αλγόριθµος επίλυσης δεν άλλαξε!34
εφαρµογή φυσικής το σηµαντικό είναι, ότι ο υπολογιστής "έµαθε να ζωγραφίζει το σωστό, χωρίς να έχει προγραµµατιστεί ρητά να το κάνει για τις συγκεκριµένες περιπτώσεις µέσω κάποιας r(θ) οδηγίας άρα µπορούµε να µάθουµε πίσω από αυτόν, τι γίνεται σε προβλήµατα που δε µπορούµε να λύσουµε µε χαρτί και µολύβι!35
εφαρµογή φυσικής ~80 γραµµές (python) σχόλια, βελτιώσεις ή bug reports στο email µου https://github.com/theofil/compphysics/blob/master/examples/ electrostatic_potential.ipynb!36
GitHub σποραδικά το github έχει πρόβληµα και δε µπορεί να δείξει (render) jupyter notebooks Tο πρόβληµα είναι παροδικό (on the server side) και λύνεται µόνο του µετά από ~µερικές ώρες. Σε περίπτωση που κάποιο αρχείο δεν ανοίγει, δοκιµάστε να κάνετε copy & paste to hyperlink στο: https://nbviewer.jupyter.org/ ή εναλλακτικά να ανοίξετε το jupiter notebook µέσα από το binder!37
υποστηρικτικές διαφάνειες
απόσταση διαδοχικών αριθµών Luis R. Izquierdo and J. Gary Polhill (2006)!39
IEEE 754 https://en.wikipedia.org/wiki/ieee_754!40
rounding, ceiling, floor https://en.wikipedia.org/wiki/ieee_754!41
αναλυτικές συναρτήσεις e x =1+x + x 2 + x2 sin x = x cos x =1 ln (1 + x) =x arctan x = x x 3 2! +... 3! + x5 5! +... x 2 2! + x4 4! +... x 2 2 + x3 3 x 3 3 + x5 5 +... for x < 1 +... for x < 1 (απειροσειρές που συγκλίνουν)!42
όταν το εκκρεµές σταµατά να είναι απλό [animation] https://en.wikipedia.org/wiki/ Pendulum_(mathematics)#Examples!43