ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΝΑΥΠΗΓΩΝ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Σηµειώσεις για το πρόγραµµα Mathematica Νίκος Θεµελής Νοέµβριος 008 Σκοπός του φυλλαδίου είναι να παρέχει βασικές γνώσεις για την χρήση του λογισµικού Mathematica µε την βοήθεια απλών παραδειγµάτων. Ουσιαστικά πρόκειται για µια εισαγωγή σε κάποιες από τις δυνατότητες που προσφέρει το λογισµικό σε περιοχές που ενδιαφέρουν ένα µηχανικό. Πρέπει να σηµειωθεί ότι οι εντολές παρουσιάζονται στα παραδείγµατα στη σχετικά πιο απλά µορφή τους, ωστόσο υπάρχουν διάφορες επιλογές για την καθεµία από αυτές που σχετίζονται είτε µε την εµφάνιση των αποτελεσµάτων είτε µε τους υπολογισµούς και για αυτό ο αναγνώστης ενθαρρύνεται να χρησιµοποιήσει το help του λογισµικού. Το Mathematica είναι ένα µαθηµατικό πακέτο µε πολλές δυνατότητες σε σχεδόν όλους τους τοµείς των µαθηµατικών (Άλγεβρα, Θεωρία συνόλων, Ανάλυση, διαφορικές εξισώσεις, Στατιστική κ.α.). Η υπολογιστική µηχανή του Mathematica είναι ο πυρήνας (kernel), ενώ η σύνδεση µεταξύ του χρήστη και του πυρήνα γίνεται µέσω του front end (περιβάλλον εργασίας) και του Mathematica notebook. Εισαγωγή στο Mathematica Το Mathematica µπορεί να χρησιµοποιηθεί και ως απλή αριθµοµηχανή: + Παρδ. 5 Σηµειώνεται ότι µε έντονους χαρακτήρες δηλώνονται τα δεδοµένα που εισάγει ο χρήστης (input), ενώ µε τα δεδοµένα εξόδου (output) µε κανονικούς χαρακτήρες. Οι εντολές δίνονται πάντα µε το πρώτο γράµµα κεφαλαίο, ενώ χρησιµοποιούνται αγκύλες για το όρισµα συναρτήσεων.
Το Mathematica υπολογίζει ακριβώς την έκφραση, που δίνεται, ενώ µπορεί να δώσει µια προσέγγιση µε όση ακρίβεια δεκαδικών ψηφίων απαιτείται. Sqrt@D Παρδ. N@%D N@Sqrt@D, 0D.464.464065 Στο παρακάτω παράδειγµα ορίζονται µεταβλητές, όπου µπορούµε ανά πάσα στιγµή να δούµε το όρισµα τους ή και να τις διαγράψουµε. Παρδ. a ; b 4; c a ê b d Sqrt@x^ yd?d Clear@dD x y Global`d d x y Ορισµός συνάρτησης Παρδ. 4 f@x_d : x ^ ê; x 0 f@x_d : x ^ ê; x < 0 f@d f@ D 4 9 Πολλές φορές θέλουµε να υπολογίσουµε µια έκφραση χωρίς να καθορίσουµε γενικότερα µια τιµή σε µια µεταβλητή της. - -
Παρδ. 5 x^ x + ê. x 4 54?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 4L ^D 64 + x 4 x + 60 x x 4 + x 5 H 4 + xl H + xl Simplify@x^ x + D H + xl Υπολογισµός αθροισµάτων και γινοµένων Παρδ. 7 Sum@i^, 8i,,0<D 65 Product@ i, 8i,,6,0.5<D 7.986 0 7 Επαναληπτικές (loops) και λογικές διαδικασίες Παρδ. 8 Do@If@i > 0, Print@"Pos"D, Print@"Neg"DD, 8i,, <D Neg Neg Neg Pos Pos - -
ηµιουργία λιστών και πινάκων. Παρδ. 9 m Table@ k, 8k,,7,<D m@@dd 8, 6, 0, 4< Table@i ê j, 8i,,4<, 8j,,5<D ::,, 4, 5 >, :,,, 5 >, :,, 4, 5 >, :, 4,,4 5 >> Γραφικές παραστάσεις σε -διαστάσεις Παρδ. 0 Plot@x^, 8x,, <D 8 6 4 - - - Plot@8x, x, x Sin@xD<, 8x, 6 π, 6 π<d 5 0 5-5 -0-5 5 0 5-5 -0-5 - 4 -
Γραφικές παραστάσεις σε -διαστάσεις Ο αριθµός των σηµείων που χρησιµοποιούνται επηρεάζει σε κάποιες περιπτώσεις την ποιότητα της γραφ. παράστασης. Παρδ. 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 Επίλυση εξισώσεων Αλγεβρικές εξισώσεις Η γενική µορφή της εντολής είναι: Solve[equations, variables] - 5 -
Παρδ. Solve@ x 7, xd ::x 9 >> s Solve@ x 7, xd; sol s@@,, DD 9 Οι εξισώσεις στο Mathematica παριστάνονται από διπλό ίσον, δηλαδή Στο παρακάτω παράδειγµα επιλύεται ένα σύστηµα αλγεβρικών εξισώσεων και στην συνέχεια οι λύσεις χρησιµοποιούνται για τον υπολογισµό µιας έκφρασης. Παρδ. sol Solve@8x^ + y 5, x + y <, 8x, y<d x^ + y^5 ê. sol 88y, x <, 8y 4, x << : 5, 90 > Επειδή είναι γνωστό ότι δεν υπάρχουν αναλυτικοί τύποι για τις λύσεις αλγεβρικών εξισώσεων 5 ου βαθµού και ανωτέρω, η επίλυσής τους µπορεί να γίνει αριθµητικά, χρησιµοποιώντας την εντολή NSolve Παρδ. 4 NSolve@ x^7 + x^4 x ^ x 0, xd 88x 0.764785<, 8x 0.6065 0.5858 <, 8x 0.6065 + 0.5858 <, 8x 0.<, 8x 0.48890.064 <, 8x 0.48890 +.064 <, 8x.<< Μη αλγεβρικές εξισώσεις Στην περίπτωση µη αλγεβρικών εξισώσεων, η εντολή FindRoot χρησιµοποιείται, όπου µια αρχική τιµή εκκίνησης χρειάζεται. Επειδή µπορεί να υπάρχουν περισσότερες από µία λύσεις είναι χρήσιµες οι αντίστοιχες γραφικές παραστάσεις ώστε να υπάρχει µια καλύτερη εικόνα του προβλήµατος. Επίλυση της εξίσωσης sin x x - 6 -
Παρδ. 5 Plot@8Sin@xD, x^ <, 8x, π, π<d FindRoot@Sin@xD x^, 8x, <D FindRoot@Sin@xD x^, 8x, <D 8 6 4 - - - 8x.4096< 8x 0.667< Στην περίπτωση που υπάρχουν µιγαδικές λύσεις, θα πρέπει σαν αρχική τιµή να δοθεί αντίστοιχα ένας µιγαδικός αριθµός. Παρδ. 6 FindRoot@x^ + x + 0, 8x, 0<D FindRoot::jsing : Encountered a singular Jacobian at the point 8x< 8-0.5<. Try perturbing the initial pointhsl. à 8x 0.5< FindRoot@x^ + x + 0, 8x, I<D 8x 0.5 + 0.86605 < Υπολογισµός ορίου, παραγώγου, ελάχιστης τιµής και ολοκληρώµατος Παρδ. 7 Limit@H xl ^Tan@x π ê D, x D êπ Παράγωγοι διαφόρων τάξεων Παρδ. 8 f@x_d : x ^4 x ^+ 5 x ^; D@f@xD, xd D@f@xD, 8x, <D 0 x 6x + x + 7 x - 7 -
Μερική παράγωγος συνάρτησης πολλών µεταβλητών Παρδ. 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 Υπολογισµός τοπικού ελαχίστου µιας συνάρτησης Σε αυτήν την περίπτωση χρειάζεται µια αρχική τιµή κοντά στο σηµείο που θέλουµε να υπολογίσουµε το τοπικό ελάχιστο, ενώ τα τοπικά µέγιστα υπολογίζονται µε την προσθήκη µείον στην εντολή. Παρδ. 0 c@x_d : x + Sin@ xd Plot@c@xD, 8x,, <D FindMinimum@c@xD, 8x,.<D FindMinimum@c@xD, 8x, 0.5<D FindMaximum@c@xD, 8x, 0.5<D 0 5 - - - -5-0 8.45674, 8x.966<< 8.8645, 8x 0.698<< 8.8645, 8x 0.698<< Υπολογισµός αόριστου και ορισµένου ολοκληρώµατος (αναλυτικά και αριθµητικά) Παρδ. IntegrateB x^ x^, xf x^ x^ x H + xl x I x + x M 5 x - 8 -
Παρδ. Integrate@ Exp@ Hx ^ + y^ld, 8x,,4<, 8y,,5<D NIntegrate@ Exp@ Hx ^ + y^ld, 8x,, 4<, 8y,, 5<D π HErf@D Erf@4DL HErf@D Erf@5DL 4 0.000577899 Στο παρακάτω παράδειγµα θα υπολογιστεί η επιφάνεια που περικλείεται ανάµεσα σε µια παραβολή και σε µια ευθεία. Παρδ. 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 y x a h@xd Integrate@Integrate@, 8y, h@xd, h@xd<d, 8x, a, b<d 5 4 - J 5 N J + 5 N 5 5 6 5 5 6 Επίλυση κανονικών διαφορικών εξισώσεων Αναλυτική επίλυση - 9 -
Η µορφή της εντολή για την επίλυση µιας διαφορικής εξίσωσης µιας συνάρτησης y µε ανεξάρτητη µεταβλητή x είναι: DSolve[equations, y[x],x] Παρδ. 4 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>> Αν ορίσουµε και αρχικές συνθήκες και στην συνέχεια χαράξουµε την γραφική παράσταση: Παρδ. 5 sol DSolve@8y'@xD x + y@xd, y@0d <, y@xd, xd Plot@y@xDê. sol, 8x,, <D 88y@xD + x x<< 5 0 5 0 5 0 5 - - - Στο ακόλουθο παράδειγµα παράγονται γραφικές παραστάσεις της λύσης για διάφορες αρχικές συνοριακές συνθήκες. Παρδ. 6 s DSolve@y'@xD Cos@xD y@xd, y@xd, xd; sol s@@,, DD toplot Table@sol ê. C@D i, 8i, 5, 5<D; Plot@Evaluate@toplotD, 8x, 0,4 π<, PlotRange AllD Sin@xD C@D 0 5 4 6 8 0-5 -0-0 -
Αριθµητική επίλυση κανονικών διαφορικών εξισώσεων: Η γενική µορφή της αντίστοιχης εντολής είναι: NDSolve[equations, y, {x,xmin,xmax}] Παρδ. 7 eq y''@td Hy'@tDL^+ y@td 0; sol5 NDSolve@8eq, y@0d, y'@0d 0<, y, 8t, 0,50<D Sol sol5@@,, DD Sol@D Max@Table@Sol@tD, 8t, 0, 0, 0.<DD Plot@y@tDê. sol5, 8t, 0, 0<D Plot@Sol@tD, 8t, 0, 0<D Table@8t, Sol@tD<, 8t, 0, 0, <D êê TableForm 88y InterpolatingFunction@880., 50.<<, <>D<< InterpolatingFunction@880., 50.<<, <>D 0.0078708..0 0.8 0.6 0.4 0. 5 0 5 0.0 0.8 0.6 0.4 0. 5 0 5 0 ableform 0. 0.4748 0.0078708 0.65505 4 0.0076064 5 0.505 6 0.99780 7 0.444 8 0.06 9 0.64777 0 0.088 - -
Παρδ. 8 Εισαγωγή στο Mathematica a ; b 0.5; 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,500<D ParametricPlot@8x@tD, y@td< ê. sol6, 8t, 0, 00<, PlotRange All, AxesLabel 8"x@tD", "x'@td"<d 88x InterpolatingFunction@880., 500.<<, <>D, y InterpolatingFunction@880., 500.<<, <>D<< x'@td 4 4 6 8 x@td - - - -
Παρδ. 9 "Van der Pol Equation for various valus of µ" vanderpol@µ_d : NDSolveA9x @td + µ Ix@tD M x @td + x@td 0, x@0d, x @0D 0, x@td, 8t, 0,5<E; Remove@solgraphD; solgraph@µ_d : Module@8numsol<, numsol vanderpol@µd; Plot@x@tDê. numsol, 8t, 0,5<, PlotRange 8, <, DisplayFunction IdentityDD; muvals :, 6, 8, 4,,,,,,5,7,9>; graphs solgraph ê@ muvals; toshow Partition@graphs, D; Show@GraphicsGrid@toshowDD Van der Pol Equation for various valus of µ - 4 6 8 0 4-4 6 8 0 4-4 6 8 0 4 - - - - - - - 4 6 8 0 4-4 6 8 0 4-4 6 8 0 4 - - - - - - - 4 6 8 0 4-4 6 8 0 4-4 6 8 0 4 - - - - - - - 4 6 8 0 4-4 6 8 0 4-4 6 8 0 4 - - - - - - Παρεµβολή µιας καµπύλης σε ζεύγη σηµείων Σε αυτό το παράδειγµα θα υπολογιστούν οι συντελεστές ενός πολυωνύµου που παρεµβάλει µια λίστα σηµείων. Η µέθοδος που χρησιµοποιείται είναι των ελαχίστων τετραγώνων. - -
Παρδ. 0 Εισαγωγή στο Mathematica A ReadList@"c:êGZ.dat", Number, RecordLists TrueD; g ListPlot@A, PlotLabel "Points", PlotStyle Hue@0.05DD GZ Fit@A, 8φ, φ^, φ^5, φ^7, φ^9<, φd g Plot@GZ, 8φ, 0, 66 ê 57.<, PlotLabel "Fitted Curve"D g4 Show@g, g, PlotLabel "Points and Fitted curve"d 0.8 Points 0.6 0.4 0. 0. 0.4 0.6 0.8.0.857 φ.47076 φ + 0.475 φ 5 +.0 φ 7 0.807594 φ 9 0.8 Fitted Curve 0.6 0.4 0. 0. 0.4 0.6 0.8.0 0.8 Points and Fitted curve 0.6 0.4 0. 0. 0.4 0.6 0.8.0-4 -
Βασικές πράξεις πινάκων Παρδ. m 880,, <, 8,, <, 8, 4, <<; MatrixForm@mD t Transpose@mD Inverse@mDêê MatrixForm 0 4 880,, <, 8,, 4<, 8,, << 4 5 7 4 7 7 7 7 7 7 Παρδ. ma 88, 4, 5<, 89, 0, <, 85,, <<; mb 880, 6, 9<, 86, 5, 7<, 8 0, 9, <<; ma + mb êê MatrixForm mb 4 ma êê MatrixForm Det@maD 0 4 5 5 0 5 0 9 0 5 5 0 8 04 Παρδ. a 88, <, 8, << CharacteristicPolynomial@a, λdêê Factor Eigenvalues@aD Eigenvectors@aD Eigensystem@aD 88, <, 8, << H + λlh5 + λl 8 5, < 88, <, 8, << 88 5, <, 88, <, 8, <<< - 5 -
ιαγράµµατα ροής, µη γραµµικά συστήµατα, γραµµικοποίηση και ταξινόµηση των σηµείων ισορροπίας. Παρδ. 4 Στο επόµενο παράδειγµα φαίνεται το διάγραµµα ροής και δύο τροχιές της λύσης από διαφορετικές αρχικές συνθήκες. Το σύστηµα είναι: x' x+ y y' 4x x y << "VectorFieldPlots`"; numsol NDSolve@8x'@tD x@td + y@td, y'@td 4 x@td x@td^ y@td, x@0d 0, y@0d 0<, 8x@tD, y@td<, 8t, 0, 0<D; numsol NDSolve@8x'@tD x@td + y@td, y'@td 4 x@td x@td^ y@td, x@0d, y@0d 0<, 8x@tD, y@td<, 8t, 0, 0<D; numsol NDSolve@8x'@tD x@td + y@td, y'@td 4 x@td x@td^ y@td, x@0d 8, y@0d 0<, 8x@tD, y@td<, 8t, 0, 0<D; parplot ParametricPlot@Evaluate@8x@tD, y@td< ê. 8numsol, numsol, numsol<d, 8t, 0, 0<, PlotStyle 8Red, Thickness@0.0D<, PlotRange All, AxesOrigin 80, 0<D; pvf HNeeds@"VectorFieldPlots`"D; VectorFieldPlots`VectorFieldPlot@8x + y, 4 x x ^ y<, 8x, 0, 5<, 8y, 0, <, ScaleFunction H &L, Axes Automatic, PlotPoints 0DL; Show@parPlot, pvfd 0-0 -5 5 0 5-0 -0-0 - 6 -
Παρδ. 5 Εισαγωγή στο Mathematica Στο παρακάτω παράδειγµα ταξινοµείται το σηµείο ισορροπίας ( 0,0) του γραµµικού συστήµατος x ' 5x+ y y' 4x y. Υπολογισµός ιδιοτιµών και ιδιοδιανυσµάτων Clear@a, x, yd a J 5 4 N; Eigensystem@aD 88, <, 88, <, 8, <<< Αφού οι ιδιοτιµές είναι πραγµατικές και έχουν αντίθετο πρόσηµο το σηµείο ισορροπίας είναι saddle. Αναλυτική επίλυση του συστήµατος sol DSolve@8x'@tD 5 x@td + y@td, y'@td 4 x@td y@td<, 8x@tD, y@td<, td; sol sol@@,, DD sol sol@@,, DD t I + 4t M C@D + 4 t I + 4t M C@D t I + 4t M C@D t I + 4t M C@D ιάγραµµα ροής και τροχιές από διαφορετικές αρχικές συνθήκες toplot Flatten@Table@8sol, sol<ê. 8C@D > i, C@D > j<, 8i, 0.5, 0.5, 0.5<, 8j, 0.5, 0.5, 0.5<D, D; graphs ParametricPlot@Evaluate@toplotD, 8t,, <, PlotRange 88, <, 8, <<, AspectRatio, PlotStyle GrayLevel@0DD; p Plot@8 x, x ê <, 8x,, <, PlotStyle 88Red, Dashing@80.0<D, Thickness@0.0D<, 8Red, Dashing@80.0<D, Thickness@0.0D<<D; pvf HNeeds@"VectorFieldPlots`"D; VectorFieldPlots`VectorFieldPlot@85 x + y, 4 x y<, 8x,, <, 8y,, <, ScaleFunction H0.05 &L, Axes Automatic, PlotPoints 0DL; Show@pvf, p, graphs, PlotRange 88, <, 8, <<, AspectRatio, AxesOrigin 80, 0<, Axes AutomaticD - 7 -
.0 0.5 -.0-0.5 0.5.0-0.5 -.0 Παρδ. 6 Ταξινόµηση των σηµείων ισορροπίας, γραφική παράσταση των λύσεων και διάγραµµα ροής του µη γραµµικού συστήµατος: Εύρεση σηµείων ισορροπίας x ' y y' x y f@x_, y_d : y g@x_, y_d : x ^ y ^ "Equilibrium points" Solve@8f@x, yd 0, g@x, yd 0<D 88y, x <, 8y, x << Υπολογισµός του Ιακωβιανού πίνακα "Jacobian Matrix" jac 88D@f@x, yd, xd, D@f@x, yd, yd<, 8D@g@x, yd, xd, D@g@x, yd, yd<<; MatrixForm@jacD K 0 x y O - 8 -
Γραµµικοποιηµένο σύστηµα γύρω από τα σηµεία ισορροπίας και ταξινόµησή τους "Linearized system about each equilibrium jac ê. 8x, y <êê Eigenvalues jac ê. 8x, y < êêeigenvalues point" 8 +, < :, + > Για το πρώτο σηµείο οι ιδιοτιµές είναι µιγαδικές µε αρνητικό πραγµατικό µέρος, οπότε το (,) είναι ευσταθές (stable spiral). Για το δεύτερο σηµείο (-,) οι ιδιοτιµές είναι πραγµατικές και έχουν αντίθετο πρόσηµα άρα είναι saddle. ιάγραµµα ροής και τροχιές από διαφορετικές αρχικές συνθήκες pvf HNeeds@"VectorFieldPlots`"D; VectorFieldPlots`VectorFieldPlot@8f@x, yd, g@x, yd<, 8x, ê, ê <, 8y,, <, ScaleFunction H &L, Axes Automatic, AxesOrigin 80, 0<, PlotPoints 0DL; graph@8x0_, y0_<d : Module@8numsol<, numsol NDSolve@8x'@tD f@x@td, y@tdd, y '@td g@x@td, y@tdd, x@0d x0, y@0d y0<, 8x@tD, y@td<, 8t, 0, 5<D; ParametricPlot@8x@tD, y@td< ê. numsol, 8t, 0, 5<, PlotStyle RedDD initcond Table@8 ê, i<, 8i,,, ê 4<D; initcond Table@8i, <, 8i, ê, ê, ê 4<D; initconds initcond initcond; totgraph Map@graph, initcondsd; Show@pvf, totgraph, PlotRange 88 ê, ê <, 8, <<, AspectRatio, Axes Automatic, AxesOrigin 80, 0<D.0.5.0 0.5 -.5 -.0-0.5 0.5.0.5-0.5 -.0-9 -
«υναµικός» υπολογισµός παραδείγµατα Μια δυνατότητα του Mathematica 6.0 είναι ο «δυναµικός» υπολογισµός διάφορων εκφράσεων (π.χ. ολοκλήρωµα ή µια γραφική παράσταση) όταν µεταβάλλεται µια παράµετρος του προβλήµατος. Το πλεονέκτηµα είναι ότι αλλάζοντας την παράµετρο από το παράθυρο ελέγχου γίνεται απευθείας ο υπολογισµός της έκφρασης. Παρδ. 7 Manipulate@Integrate@ êhx^n + L, xd, 8n,,4,<D n ArcTanB x F n ArcTanB +ê x F + LogA + ê xe LogA + ê x ê x E 6 ê Παρδ. 8 Manipulate@Plot@ x a x^, 8x,., <D, 8a,, <D a - 0 0 - - -0-0 - 0 -
a 0.6.0 0.5 - - -0.5 -.0 Παρδ. 9 ManipulateBPlotBx ax4, 8x,, <F, 8a,, <F 4 a - 0 8 6 4 - - - -
a 0.6.5.0 0.5 - - Παρδ. 40 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 5 ::y@xd ê4 Hx >, C@DL ê4 :y@xd ê4 Hx >, C@DL ê4 :y@xd ê4 ê4 >, :y@xd >> Hx C@DLê4 Hx C@DLê4 - -