You are on page 1of 11

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΣΧΟΛΗ ΝΑΥΠΗΓΩΝ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ

Σηµειώσεις για το πρόγραµµα Mathematica


Νίκος Θεµελής
Νοέµβριος 2008

Σκοπός του φυλλαδίου είναι να παρέχει βασικές γνώσεις για την χρήση του λογισµικού
Mathematica µε την βοήθεια απλών παραδειγµάτων. Ουσιαστικά πρόκειται για µια εισαγωγή σε
κάποιες από τις δυνατότητες που προσφέρει το λογισµικό σε περιοχές που ενδιαφέρουν ένα
µηχανικό. Πρέπει να σηµειωθεί ότι οι εντολές παρουσιάζονται στα παραδείγµατα στη σχετικά
πιο απλά µορφή τους, ωστόσο υπάρχουν διάφορες επιλογές για την καθεµία από αυτές που
σχετίζονται είτε µε την εµφάνιση των αποτελεσµάτων είτε µε τους υπολογισµούς και για αυτό ο
αναγνώστης ενθαρρύνεται να χρησιµοποιήσει το help του λογισµικού.
Το Mathematica είναι ένα µαθηµατικό πακέτο µε πολλές δυνατότητες σε σχεδόν όλους τους
τοµείς των µαθηµατικών (Άλγεβρα, Θεωρία συνόλων, Ανάλυση, διαφορικές εξισώσεις,
Στατιστική κ.α.). Η υπολογιστική µηχανή του Mathematica είναι ο πυρήνας (kernel), ενώ η
σύνδεση µεταξύ του χρήστη και του πυρήνα γίνεται µέσω του front end (περιβάλλον εργασίας)
και του Mathematica notebook.

Εισαγωγή στο Mathematica


Το Mathematica µπορεί να χρησιµοποιηθεί και ως απλή αριθµοµηχανή:

Παρδ. 1
2+ 3
5

Σηµειώνεται ότι µε έντονους χαρακτήρες δηλώνονται τα δεδοµένα που εισάγει ο χρήστης


(input), ενώ µε τα δεδοµένα εξόδου (output) µε κανονικούς χαρακτήρες. Οι εντολές δίνονται
πάντα µε το πρώτο γράµµα κεφαλαίο, ενώ χρησιµοποιούνται αγκύλες για το όρισµα
συναρτήσεων.
Εισαγωγή στο Mathematica
Παρδ. 5
= x^3 − 3 x + 2 ê. x → 4
= 54

= ?x

Global`x

Μπορούµε επίσης να αναπτύξουµε σε όρους ή να απλοποιήσουµε εκφράσεις µε τις εντολές


Expand[expr] και Simplify[expr] αντίστοιχα.

Παρδ. 6
Expand@Hx + yL ^3D
x3 + 3 x2 y + 3 x y2 + y3

Factor@%D
Hx + yL3

Together@x + 1 ê Hx − 1L + x^3 ê Hx − 4L ^3D


−64 + 112 x − 124 x2 + 60 x3 − 12 x4 + x5
H− 4 + xL3 H−1 + xL

Simplify@x^2 − 2 x + 1D
H−1 + xL2

Υπολογισµός αθροισµάτων και γινοµένων

Παρδ. 7
Sum @i^2 − 2, 8i, 1, 10<D
365

Product@2 i, 8i, 2, 6, 0.5<D


7.98336 × 107

Επαναληπτικές (loops) και λογικές διαδικασίες

Παρδ. 8
Do@If@i > 0, Print@"Pos"D, Print@"Neg"DD, 8i, − 2, 2<D
Neg
Neg
Neg
Pos
Pos

-3-
Εισαγωγή στο Mathematica

Γραφικές παραστάσεις σε 3-διαστάσεις


Ο αριθµός των σηµείων που χρησιµοποιούνται επηρεάζει σε κάποιες περιπτώσεις την ποιότητα
της γραφ. παράστασης.

Παρδ. 11
= g@x_, y_D := x ^2 y ^2 Exp@− Hx ^ 2 + y ^2LD
Plot3D@g@x, yD, 8x, − 3, 3<, 8y, − 3, 3<D
Plot3D@g@x, yD, 8x, − 3, 3<, 8y, − 3, 3<, PlotPoints → 100D

Επίλυση εξισώσεων
Αλγεβρικές εξισώσεις
Η γενική µορφή της εντολής είναι: Solve[equations, variables]

-5-
Εισαγωγή στο Mathematica
Παρδ. 15
= Plot@8Sin@xD, x^2 − 1<, 8x, − π, π<D
FindRoot@Sin@xD x^2 − 1, 8x, 1<D
FindRoot@Sin@xD x^2 − 1, 8x, − 1<D

= 4

-3 -2 -1 1 2 3

= 8x → 1.40962<

= 8x → −0.636733<

Στην περίπτωση που υπάρχουν µιγαδικές λύσεις, θα πρέπει σαν αρχική τιµή να δοθεί αντίστοιχα
ένας µιγαδικός αριθµός.

Παρδ. 16
= FindRoot@x^2 + x + 1 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^2 + x + 1 0, 8x, I<D


= 8x → −0.5 + 0.866025 <

Υπολογισµός ορίου, παραγώγου, ελάχιστης τιµής και ολοκληρώµατος

Παρδ. 17
= Limit@H2 − xL ^Tan@x ∗ π ê 2D, x → 1D
2êπ
=

Παράγωγοι διαφόρων τάξεων


Παρδ. 18
= f@x_D := 3 x ^4 − 2 x ^ 3 + 5 x ^2;
D@f@xD, xD
D@f@xD, 8x, 3<D
= 10 x − 6 x2 + 12 x3

= −12 + 72 x

-7-
Εισαγωγή στο Mathematica

Παρδ. 22
= Integrate@ Exp@−Hx ^2 + y^2LD, 8x, 1, 4<, 8y, 2, 5<D
NIntegrate@ Exp@−Hx ^2 + y^2LD, 8x, 1, 4<, 8y, 2, 5<D

π HErf@1D − Erf@4DL HErf@2D − Erf@5DL


1
=
4

= 0.000577899

Στο παρακάτω παράδειγµα θα υπολογιστεί η επιφάνεια που περικλείεται ανάµεσα σε µια


παραβολή και σε µια ευθεία.

Παρδ. 23
= h1@x_D := x ^2 − 2 x + 2;
h2@x_D := x + 1;
Plot@8h1@xD, h2@xD<, 8x, − 1, 3<D
points = Solve@h1@xD h2@xD, xD;
a = points@@1, 1, 2DD
b = points@@2, 1, 2DD
h2@xD
‡ ‡
b
y x
a h1@xD
Integrate@Integrate@1, 8y, h1@xD, h2@xD<D, 8x, a, b<D
5

=
2

-1 1 2 3

J3 − 5N
1
=
2

J3 + 5N
1
=
2

5 5
=
6

5 5
=
6
Επίλυση κανονικών διαφορικών εξισώσεων
Αναλυτική επίλυση

-9-
Εισαγωγή στο Mathematica

Αριθµητική επίλυση κανονικών διαφορικών εξισώσεων: Η γενική µορφή της αντίστοιχης


εντολής είναι: NDSolve[equations, y, {x,xmin,xmax}]

Παρδ. 27
eq3 = y''@tD − 3 Hy'@tDL ^ 2 + 2 y@tD 0;
sol5 = NDSolve@8eq3, y@0D 1, y'@0D 0<, y, 8t, 0, 50<D
Sol = sol5@@1, 1, 2DD
Sol@2D
Max@Table@Sol@tD, 8t, 0, 20, 0.1<DD
Plot@y@tD ê. sol5, 8t, 0, 20<D
Plot@Sol@tD, 8t, 0, 20<D
Table@8t, Sol@tD<, 8t, 0, 10, 1<D êê TableForm
88y → InterpolatingFunction@880., 50.<<, <>D<<

InterpolatingFunction@880., 50.<<, <>D

−0.00787018

1.

1.0

0.8

0.6

0.4

0.2

5 10 15 20

1.0

0.8

0.6

0.4

0.2

5 10 15 20

ableForm=
0 1.
1 0.473481
2 −0.00787018
3 −0.165505
4 0.00761064
5 0.50315
6 0.997803
7 0.444322
8 −0.0226331
9 −0.164777
10 0.0238138

- 11 -
Εισαγωγή στο Mathematica
Παρδ. 29
"Van der Pol Equation for various valus of µ"
vanderpol@ µ_D := NDSolveA9x @tD + µ Ix@tD2 − 1M x @tD + x@tD 0, x@0D 1, x @0D 0=, x@tD, 8t, 0, 15<E;
Remove@solgraphD;
solgraph@ µ_D := Module@8numsol<, numsol = vanderpol@ µ D;
Plot@x@tD ê. numsol, 8t, 0, 15<, PlotRange → 8− 3, 3<, DisplayFunction → IdentityDD;
muvals = : , , , , , 1, , 2, 3, 5, 7, 9>;
1 1 1 1 1 3
32 16 8 4 2 2
graphs = solgraph ê@ muvals;
toshow = Partition@graphs, 3D;
Show @GraphicsGrid@toshow DD
Van der Pol Equation for various valus of µ

3 3 3
2 2 2
1 1 1

2 4 6 8 10 12 14 2 4 6 8 10 12 14 2 4 6 8 10 12 14
-1 -1 -1

-2 -2 -2
-3 -3 -3

3 3 3
2 2 2
1 1 1

2 4 6 8 10 12 14 2 4 6 8 10 12 14 2 4 6 8 10 12 14
-1 -1 -1
-2 -2 -2

-3 -3 -3

3 3 3
2 2 2
1 1 1

2 4 6 8 10 12 14 2 4 6 8 10 12 14 2 4 6 8 10 12 14
-1 -1 -1
-2 -2 -2

-3 -3 -3

3 3 3
2 2 2
1 1 1

2 4 6 8 10 12 14 2 4 6 8 10 12 14 2 4 6 8 10 12 14
-1 -1 -1

-2 -2 -2
-3 -3 -3

Παρεµβολή µιας καµπύλης σε ζεύγη σηµείων


Σε αυτό το παράδειγµα θα υπολογιστούν οι συντελεστές ενός πολυωνύµου που παρεµβάλει µια
λίστα σηµείων. Η µέθοδος που χρησιµοποιείται είναι των ελαχίστων τετραγώνων.

- 13 -
Εισαγωγή στο Mathematica

Βασικές πράξεις πινάκων

Παρδ. 31
m = 880, −2, 2<, 8−1, 1, − 3<, 82, − 4, 1<<;
MatrixForm @ m D
t = Transpose@ m D
Inverse@ m D êê MatrixForm
0 −2 2
−1 1 −3
2 −4 1

880, −1, 2<, 8−2, 1, − 4<, 82, − 3, 1<<

− 11 − 32
14 7 7
− 5 −2 −1
14 7 7
1 −2 −1
7 7 7

Παρδ. 32
ma = 883, −4, 5<, 89, 0, − 3<, 85, 2, 1<<;
mb = 8810, −6, −9<, 86, −5, −7<, 8− 10, 9, 12<<;
ma + mb êê MatrixForm
mb − 4 ma êê MatrixForm
Det@ maD
13 − 10 − 4
15 − 5 − 10
− 5 11 13

− 2 10 − 29
− 30 − 5 5
− 30 1 8

204

Παρδ. 33
a = 88−3, 2<, 82, −3<<
CharacteristicPolynomial@a, λD êê Factor
Eigenvalues@aD
Eigenvectors@aD
Eigensystem @aD
88−3, 2<, 82, −3<<

H1 + λL H5 + λL

8−5, − 1<

88−1, 1<, 81, 1<<

88−5, − 1<, 88− 1, 1<, 81, 1<<<

- 15 -
Εισαγωγή στο Mathematica
Παρδ. 35

Στο παρακάτω παράδειγµα ταξινοµείται το σηµείο ισορροπίας ( 0, 0 ) του γραµµικού συστήµατος

 x ' = 5x + 3 y
 .
 y ' = −4 x − 3 y

Υπολογισµός ιδιοτιµών και ιδιοδιανυσµάτων

Clear@a, x, yD
a = J 5 3 N;
−4 −3
Eigensystem @aD
883, −1<, 88−3, 2<, 8−1, 2<<<

Αφού οι ιδιοτιµές είναι πραγµατικές και έχουν αντίθετο πρόσηµο το σηµείο ισορροπίας είναι
saddle.
Αναλυτική επίλυση του συστήµατος
sol = DSolve@8x'@tD 5 x@tD + 3 y@tD, y'@tD − 4 x@tD − 3 y@tD<, 8x@tD, y@tD<, tD;
sol1 = sol@@1, 1, 2DD
sol2 = sol@@1, 2, 2DD

I− 1 + 3 4 t M C@1D + I− 1 + 4 tM C@2D
1 −t 3 −t
2 4

I−1 + 4 t M C@1D − I−3 + 4 t M C@2D


−t 1 −t

2

∆ιάγραµµα ροής και τροχιές από διαφορετικές αρχικές συνθήκες

toplot = Flatten@Table@8sol1, sol2< ê. 8C@1D −> i, C@2D −> j<, 8i, − 0.5, 0.5, 0.25<,
8j, −0.5, 0.5, 0.25<D, 1D;
graphs = ParametricPlot@ Evaluate@toplotD, 8t, − 3, 3<, PlotRange → 88− 1, 1<, 8− 1, 1<<,
AspectRatio → 1, PlotStyle → GrayLevel@0DD;
p = Plot@8−2 x, − 2 x ê 3<, 8x, −1, 1<,
PlotStyle → 88 Red, Dashing@80.02<D, Thickness@0.01D<,
8 Red, Dashing@80.02<D, Thickness@0.01D<<D;
pvf = H Needs@"VectorFieldPlots`"D;
VectorFieldPlots`VectorFieldPlot@85 x + 3 y, − 4 x − 3 y<, 8x, − 1, 1<, 8y, − 1, 1<,
ScaleFunction → H0.05 &L, Axes → Automatic, PlotPoints → 20DL;
Show @ pvf, p, graphs, PlotRange → 88− 1, 1<, 8− 1, 1<<, AspectRatio → 1, AxesOrigin → 80, 0<,
Axes → AutomaticD

- 17 -
Εισαγωγή στο Mathematica

Γραµµικοποιηµένο σύστηµα γύρω από τα σηµεία ισορροπίας και ταξινόµησή τους


"Linearized system about each equilibrium point"
jac ê. 8x → 1, y → 1< êê Eigenvalues
jac ê. 8x → −1, y → 1< êê Eigenvalues
8−1 + , − 1 − <

:−1 − 3 , −1 + 3>

Για το πρώτο σηµείο οι ιδιοτιµές είναι µιγαδικές µε αρνητικό πραγµατικό µέρος, οπότε το (1,1)
είναι ευσταθές (stable spiral).
Για το δεύτερο σηµείο (-1,1) οι ιδιοτιµές είναι πραγµατικές και έχουν αντίθετο πρόσηµα άρα
είναι saddle.

∆ιάγραµµα ροής και τροχιές από διαφορετικές αρχικές συνθήκες


pvf = H Needs@"VectorFieldPlots`"D;
VectorFieldPlots`VectorFieldPlot@8f@x, yD, g@x, yD<, 8x, − 3 ê 2, 3 ê 2<, 8y, − 1, 2<,
ScaleFunction → H1 &L, Axes → Automatic, AxesOrigin → 80, 0<, PlotPoints → 20DL;
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, 15<D; ParametricPlot@8x@tD, y@tD< ê. numsol, 8t, 0, 15<, PlotStyle → RedDD
initcond1 = Table@8−3 ê 2, i<, 8i, − 1, 2, 3 ê 24<D;
initcond2 = Table@8i, 2<, 8i, − 3 ê 2, 3 ê 2, 3 ê 14<D;
initconds = initcond1 ‹ initcond2;
totgraph = Map@graph, initcondsD;
Show @ pvf, totgraph, PlotRange → 88− 3 ê 2, 3 ê 2<, 8− 1, 2<<, AspectRatio → 1, Axes → Automatic,
AxesOrigin → 80, 0<D
2.0

1.5

1.0

0.5

-1.5 -1.0 -0.5 0.5 1.0 1.5

-0.5

-1.0

- 19 -
Εισαγωγή στο Mathematica

0.6

1.0

0.5
=

-2 -1 1 2

- 0.5

- 1.0

Παρδ. 39

ManipulateBPlotBx2 − , 8x, −2, 2<F, 8a, − 2, 2<F


a x4
=
4

-2

12

10

8
=

-2 -1 1 2

- 21 -

You might also like