ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΝΑΥΠΗΓΩΝ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΕΥΣΤΑΘΕΙΑ ΙΑΤΟΙΧΙΣΜΟΥ ΠΛΟΙΟΥ ΚΑΙ ΥΠΟΒΑΘΡΟ ΚΑΝΟΝΙΣΜΩΝ Σηµειώσεις για το πρόγραµµα Mathematica ρ. Νίκος Θεµελής Νοέµβριος 009 Σκοπός των σηµειώσεων είναι η παροχή βασικών γνώσεων για την χρήση του λογισµικού Mathematica µε την βοήθεια απλών παραδειγµάτων. Ουσιαστικά πρόκειται για µια εισαγωγή σε κάποιες από τις δυνατότητες που προσφέρει το λογισµικό σε περιοχές που ενδιαφέρουν ένα µηχανικό. Πρέπει να σηµειωθεί ότι οι εντολές παρουσιάζονται στα παραδείγµατα στην σχετικά πιο απλή µορφή τους, ωστόσο υπάρχουν διάφορες επιλογές για την καθεµία από αυτές που σχετίζονται είτε µε την εµφάνιση των αποτελεσµάτων είτε µε τους υπολογισµούς και για αυτό ο αναγνώστης ενθαρρύνεται να χρησιµοποιήσει την βοήθεια που προσφέρει το λογισµικό για περεταίρω εµβάθυνση. Το Mathematica είναι ένα προγραµµατιστικό πακέτο µε πολλές δυνατότητες σε σχεδόν όλους τους τοµείς των µαθηµατικών (Άλγεβρα, Θεωρία συνόλων, Ανάλυση, ιαφορικές Εξισώσεις, Στατιστική κτλ). Η υπολογιστική µηχανή του Mathematica είναι ο πυρήνας (kernel), ενώ η σύνδεση µεταξύ του χρήστη και του πυρήνα γίνεται µέσω του front end (περιβάλλον εργασίας) και του Mathematica notebook. Η Mathematica είναι µια συµβολική γλώσσα µε την οποία µπορούν να εκτελεστούν υπολογισµοί χωρίς να γίνουν αριθµητικές πράξεις. Εισαγωγή στο Mathematica Το Mathematica µπορεί να χρησιµοποιηθεί και ως απλή αριθµοµηχανή: + Παρδ. Σηµειώνεται ότι µε έντονους χαρακτήρες δηλώνονται τα δεδοµένα που εισάγει ο χρήστης (input), ενώ µε τα δεδοµένα εξόδου (output) µε κανονικούς χαρακτήρες. Οι εντολές δίνονται
πάντα µε το πρώτο γράµµα κεφαλαίο, ενώ χρησιµοποιούνται αγκύλες για το όρισµα συναρτήσεων. Το Mathematica υπολογίζει ακριβώς την έκφραση, που δίνεται, ενώ µπορεί να δώσει µια προσέγγιση µε όση ακρίβεια δεκαδικών ψηφίων απαιτείται. Sqrt@D Παρδ. N@%D N@Sqrt@D, 0D.6.606 Στο παρακάτω παράδειγµα ορίζονται µεταβλητές, όπου µπορούµε ανά πάσα στιγµή να δούµε το όρισµα τους ή και να τις διαγράψουµε. Παρδ. a ; b ; c a ê b d Sqrt@x^ yd?d Clear@dD x y Global`d d x y Ορισµός συνάρτησης Παρδ. f@x_d : x ^ ê; x 0 f@x_d : x ^ ê; x < 0 f@d f@ D 9 Πολλές φορές θέλουµε να υπολογίσουµε µια έκφραση χωρίς να καθορίσουµε γενικότερα µια τιµή σε µια µεταβλητή της. - -
Παρδ. x^ x + ê. x?x Global`x Μπορούµε επίσης να αναπτύξουµε σε όρους ή να απλοποιήσουµε εκφράσεις µε τις εντολές Expand[expr] και Simplify[expr] αντίστοιχα. Παρδ. 6 Expand@Hx + yl ^D x + x y + xy + y Factor@%D Hx + yl Together@x + êhx L + x^ êhx L ^D 6 + x x + 60 x x + x H + xl H + xl Υπολογισµός αθροισµάτων και γινοµένων Παρδ. 7 Sum@i^, 8i,,0<D 6 Product@ i, 8i,,6,0.<D 7.986 0 7 ηµιουργία λιστών και πινάκων. Παρδ.8 "Ex.8" f@x_d : x ^ + x + Array@f, 0, 0D 8,, 7,,,,, 7, 7, 9< m Table@ k, 8k,,7,<D m@@dd 8, 6, 0, < - -
Table@i ê j, 8i,,<, 8j,,<D êê MatrixForm Εισαγωγή στο Mathematica Γραφικές παραστάσεις σε -διαστάσεις Παρδ. 9 Plot@x^, 8x,, <D 8 6 - - - : Needs@"PlotLegends`"D Plot@8x, x, x Sin@xD<, 8x, 6 π, 6 π<, PlotStyle 8Dashing@80.0<D, Dashing@80.0<D<, PlotLegend 8x, x, Sin@xD<D 0 ] x -x - -0-0 - -0 - sinhxl - -
x@t_d : Cos@tD Cos@00 td Sin@tD; y@t_d : Sin@tD Sin@00 td ParametricPlot@8x@tD, y@td<, 8t, 0, π<, AspectRatio 0.D ] -.0-0. 0..0 - - - ContourPlot@x^ + y^ 6 x y, 8x,, <, 8y, 6, 6<D 6 0 - - -6 - - 0 DensityPlot@x^ + y^, 8x, 0, 0<, 8y, 0, 0<D - -
Γραφικές παραστάσεις σε -διαστάσεις Ο αριθµός των σηµείων που χρησιµοποιούνται επηρεάζει σε κάποιες περιπτώσεις την ποιότητα της γραφ. παράστασης. Παρδ. 0 g@x_, y_d : x ^ y ^ Exp@ Hx ^+ y ^LD PlotD@g@x, yd, 8x,, <, 8y,, <D PlotD@g@x, yd, 8x,, <, 8y,, <, PlotPoints 00D - 6 -
Επίλυση εξισώσεων Αλγεβρικές εξισώσεις Η γενική µορφή της εντολής είναι: Solve[equations, variables] Παρδ. Solve@ x 7, xd ::x 9 >> s Solve@ x 7, xd; sol s@@,, DD 9 Οι εξισώσεις στο Mathematica παριστάνονται από διπλό ίσον, δηλαδή Στο παρακάτω παράδειγµα επιλύεται ένα σύστηµα αλγεβρικών εξισώσεων και στην συνέχεια οι λύσεις χρησιµοποιούνται για τον υπολογισµό µιας έκφρασης. Παρδ. sol Solve@8x^ + y, x + y <, 8x, y<d x^ + y^ ê. sol 88y, x <, 8y, x << :, 90 > Άθροισµα ριζών µια εξίσωσης sol Solve@x^ 6 x^ + 6 x^ x 0, xd sol@@,, DD sol@@,, DD Sum@sol@@k,, DD, 8k,, <D ::x >, :x + >, :x 7 >, :x + 7 >> + 6 Αριθµητική επίλυση αλγεβρικών εξισώσεων, χρησιµοποιώντας την εντολή NSolve: Παρδ. NSolve@x^ + x^ + x^ + x^ + x + 0, xd 88x.86<, 8x 0.09.068 <, 8x 0.09 +.068 <, 8x 0.69 0.888 <, 8x 0.69 + 0.888 << - 7 -
Μη αλγεβρικές εξισώσεις Στην περίπτωση µη αλγεβρικών εξισώσεων, χρησιµοποιείται η εντολή FindRoot, όπου µια αρχική τιµή εκκίνησης πρέπει να δηλωθεί. Επειδή µπορεί να υπάρχουν περισσότερες από µία λύσεις είναι χρήσιµες οι αντίστοιχες γραφικές παραστάσεις έτσι ώστε να υπάρχει µια καλύτερη εικόνα του προβλήµατος. Επίλυση της εξίσωσης sin x x Παρδ. Plot@8Sin@xD, x^ <, 8x, π, π<d FindRoot@Sin@xD x^, 8x, <D FindRoot@Sin@xD x^, 8x, <D 8 6 - - - 8x.096< 8x 0.667< Στην περίπτωση που υπάρχουν µιγαδικές λύσεις, θα πρέπει σαν αρχική τιµή να δοθεί αντίστοιχα ένας µιγαδικός αριθµός. Παρδ. 6 FindRoot@x^ + x + 0, 8x, 0<D FindRoot::jsing : Encountered a singular Jacobian at the point 8x< 8-0.<. Try perturbing the initial pointhsl. à 8x 0.< FindRoot@x^ + x + 0, 8x, I<D 8x 0. + 0.8660 < - 8 -
Υπολογισµός ορίου, παραγώγου, ελάχιστης τιµής και ολοκληρώµατος Παρδ. 7 Limit@H xl^tan@x π ê D, x D Limit@Abs@xDêx, x 0, Direction D Limit@Abs@xDêx, x 0, Direction D êπ Παράγωγοι διαφόρων τάξεων Παρδ. 8 f@x_d : x ^ x ^ + x ^; D@f@xD, xd D@f@xD, 8x, <D f'@d 0 x 6x + x + 7 x 9 Μερικές παράγωγοι συνάρτησεων πολλών µεταβλητών Παρδ. 9 p@x_, y_d : Exp@y D Sin@xD D@p@x, yd, x, yd D@p@x, yd, 8x, <D y Cos@xD y Sin@xD Τοπικό ελάχιστο και µέγιστο µιας συνάρτησης Σε αυτήν την περίπτωση χρειάζεται µια αρχική τιµή κοντά στο σηµείο που θέλουµε να υπολογίσουµε το τοπικό ελάχιστο/µέγιστο. - 9 -
Παρδ. 0 c@x_d : x + Sin@ xd Plot@c@xD, 8x,, <D FindMinimum@c@xD, 8x,.<D FindMinimum@c@xD, 8x, 0.<D FindMaximum@c@xD, 8x, 0.<D 0 - - - - -0 8.67, 8x.966<< 8.86, 8x 0.698<< 8.86, 8x 0.698<< Υπολογισµοί ολοκληρωµάτων (αναλυτικά και αριθµητικά) Παρδ. IntegrateB x^ x^, xf x^ x^ x H + xl x I x + x M x In[8]: F@n_D : Sin@xD^n x Table@8n, F@nD êê Together<, 8n, 0, 0<D êê TableForm Out[9]//TableForm 0 x Cos@xD Hx Sin@ xdl H 9 Cos@xD + Cos@ xdl H x 8 Sin@ xd + Sin@ xdl H 0 Cos@xD + Cos@ xd Cos@ xdl 0 6 H60 x Sin@ xd + 9Sin@ xd Sin@6 xdl 9 Cos@xD+ Cos@xD 9 Cos@xD+Cos@7xD 7 0 80 x 67 Sin@xD+68 Sin@xD Sin@6xD+Sin@8xD 8 07 9 690 Cos@xD+880 Cos@xD 68 Cos@xD+0 Cos@7xD Cos@9xD 9 80 60 0 x 00 Sin@xD+600 Sin@xD 0 Sin@6xD+ Sin@8xD Sin@0 xd 0 0 0-0 -
Παρδ. Integrate@ Exp@ Hx ^ + y^ld, 8x,, <, 8y,, <D NIntegrate@ Exp@ Hx ^ + y^ld, 8x,, <, 8y,, <D π HErf@D Erf@DL HErf@D Erf@DL 0.00077899 Στο παρακάτω παράδειγµα θα υπολογιστεί η επιφάνεια που περικλείεται ανάµεσα σε µια παραβολή και σε µια ευθεία. Παρδ. h@x_d : x ^ x + ; h@x_d : x + ; Plot@8h@xD, h@xd<, 8x,, <D points Solve@h@xD h@xd, xd a points@@,, DD; b points@@,, DD; b h@xd h@xd y x a Integrate@, 8x, a, b<, 8y, h@xd, h@xd<d - ::x J N>, :x J + N>> 6 6 - -
Επίλυση κανονικών διαφορικών εξισώσεων Αναλυτική επίλυση Η µορφή της εντολής για την επίλυση µιας διαφορικής εξίσωσης µιας συνάρτησης y µε ανεξάρτητη µεταβλητή x είναι: DSolve[equation, y[x],x] Παρδ. DSolve@y''@xD y'@xd + y@xd 0, y@xd, xd ::y@xd xê C@D CosB x F + xê C@D SinB x F>> Αν ορίσουµε και αρχικές συνθήκες και στην συνέχεια χαράξουµε την γραφική παράσταση: Παρδ. sol DSolve@8y'@xD x + y@xd, y@0d <, y@xd, xd Plot@y@xDê. sol, 8x,, <D 88y@xD + x x<< 0 0 0 - - - Στο ακόλουθο παράδειγµα παράγονται γραφικές παραστάσεις της λύσης για διάφορες αρχικές συνοριακές συνθήκες. - -
Παρδ. 6 Εισαγωγή στο Mathematica s DSolve@y'@xD Cos@xD y@xd, y@xd, xd; sol s@@,, DD toplot Table@sol ê. C@D i, 8i,, <D; Plot@Evaluate@toplotD, 8x, 0, π<, PlotRange AllD Sin@xD C@D 0 6 8 0 - -0 Αριθµητική επίλυση κανονικών διαφορικών εξισώσεων: Η γενική µορφή της αντίστοιχης εντολής είναι: NDSolve[equations, y, {x,xmin,xmax}] Παρδ. 7 eq y''@td Hy'@tDL^ + y@td 0; sol NDSolve@8eq, y@0d, y'@0d 0<, y@td, 8t, 0,0<D Plot@Evaluate@y@tD ê. sold, 8t, 0, 0<D 88y@tD InterpolatingFunction@880., 0.<<, <>D@tD<<.0 0.8 0.6 0. 0. 0 0 0 0 0 - -
In[7]: sol7 sol@@,, DD Table@8t, sol7<, 8t, 0, 0, <D êê TableForm Out[7] InterpolatingFunction@880., 0.<<, <>D@tD Out[8]//TableForm 0. 0.78 0.0078708 0.60 0.007606 0.0 6 0.99780 7 0. 8 0.06 9 0.6777 0 0.088 Παρδ. 8 a ; b 0.; c ; eqa x'@td y@td; eqb y'@td H0 b y@td c x@tdl ê a; sol6 NDSolve@8eqA, eqb, x@0d 0, y@0d 0<, 8x, y<, 8t, 0,00<D ParametricPlot@8x@tD, y@td< ê. sol6, 8t, 0, 00<, PlotRange All, AxesLabel 8"x@tD", "x'@td"<d 88x InterpolatingFunction@880., 00.<<, <>D, y InterpolatingFunction@880., 00.<<, <>D<< x'@td 6 8 x@td - - Παρεµβολή µιας καµπύλης σε ζεύγη σηµείων Σε αυτό το παράδειγµα θα υπολογιστούν οι συντελεστές ενός πολυωνύµου που παρεµβάλει µια λίστα σηµείων. Η µέθοδος που χρησιµοποιείται είναι των ελαχίστων τετραγώνων. - -
Παρδ. 9 Εισαγωγή στο Mathematica "Ex.9" A ReadList@"c:êGZ.dat", Number, RecordLists TrueD; g ListPlot@A, PlotLabel "Points", PlotStyle Hue@0.0DD GZ Fit@A, 8ϕ, ϕ^, ϕ^, ϕ^7, ϕ^9, ϕ^<, ϕd g Plot@GZ, 8ϕ, 0, 68 ê 7.<, PlotLabel "Fitted Curve"D g Show@g, g, PlotLabel "Points and Fitted curve"d Ex.9 0.8 Points 0.6 0. 0. 0. 0. 0.6 0.8.0..9868 ϕ 0.078967 ϕ.7 ϕ +.8 ϕ 7 6.908 ϕ 9 +.98 ϕ 0.8 Fitted Curve 0.6 0. 0. 0. 0. 0.6 0.8.0. 0.8 Points and Fitted curve 0.6 0. 0. 0. 0. 0.6 0.8.0. - -
«υναµικός» υπολογισµός παραδείγµατα Μια δυνατότητα του Mathematica 6.0 είναι ο «δυναµικός» υπολογισµός διάφορων εκφράσεων (π.χ. ολοκλήρωµα ή µια γραφική παράσταση) όταν µεταβάλλεται µια παράµετρος του προβλήµατος. Το πλεονέκτηµα είναι ότι αλλάζοντας την παράµετρο από το παράθυρο ελέγχου γίνεται απευθείας ο υπολογισµός της έκφρασης. Παρδ. 0 Manipulate@Integrate@ êhx^ n + L, xd, 8n,,, <D n ArcTanB x F n ArcTanB +ê x F + LogA + ê xe LogA + ê x ê x E 6 ê Παρδ. Manipulate@Plot@ x a x^, 8x,., <D, 8a,, <D a - 0 0 - - -0-0 - 6 -
a 0.6.0 0. - - -0. -.0 Παρδ. ManipulateBPlotBx ax, 8x,, <F, 8a,, <F a - 0 8 6 - - - 7 -
a 0.6..0 0. - - Παρδ. Manipulate@DSolve@ y'@xd + Hy@xDL^ b 0, y@xd, xd, 8b,,6,<D b 99y@xD xê C@D b ::y@xd x C@D >, :y@xd x C@D >> b ::y@xd ê Hx >, C@DL ê :y@xd ê Hx >, C@DL ê :y@xd ê ê >, :y@xd >> Hx C@DLê Hx C@DLê - 8 -