Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine...

19
Einführung in das Arbeiten mit Mathematica 6.0 Autor: Harald Höller letzte Änderung: 17.10.07 Interaktive Nutzung von Mathematica 6 Grundlegendes zu Mathematica 6 Einleitende Bemerkungen Mit Hilfe von Mathematica lassen sich analytische, numerische und grafische Berechnungen anstellen. Mathematica bietet eine relativ simple und instruktive logische Syntax. Die meisten bekannten Funktionen haben in Mathematica eine syntaktisch ähnliche Entsprechung. Das Argument einer Funktion steht immer in eckigen Klammern (z.B. Sin[x]). Auch Operationen werden auf Argumente in eckigen Klammern angewandt; die Liste von Argumenten wird mit Beistrichen getrennt (z.B. Integrate[x,x]). Datei - Typen Der Standard - Dateityp ist das Notebook (.nb), in dem sich Berechnungen interaktiv anstellen lassen. Unter File -> Save As findet man noch einige Dateiformate (.html, .txt, .pdf), in die ein Notebook für reines Lesen exportiert werden kann. Dateien vom Format Notebook lassen sich nur über Mathematica bzw. eine MathReader öffnen. Leider ist die Abwärts- Kompatibilität gar nicht und die Aufwärts-Kompatibilität eingeschränkt gegeben. Das bedeutet unter Mathematica 6 erstelle Notebooks, lassen sich mit einer Mathematica 5 (oder früher) Installation gar nicht öffnen. Eingabe/Ausgabe Die Eingabe von Befehlen in Mathematica funktioniert über die Enter - Taste (nicht Return), die entweder beim Nummernblock zu finden ist, oder über Shift + Return gesetzt wird. Jede Eingabe/Ausgabe wird intern nummeriert. In[1]:= 1 Out[1]= 1 Auf In/Outputs lässt sich also Bezug nehmen. In[2]:= 1 + Out@1D Out[2]= 2 Bzw. auf den jeweils vorangegangenen Output über Out[%] In[3]:= Out@%D Out[3]= 2

Transcript of Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine...

Page 1: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Einführung in das Arbeiten mit Mathematica 6.0

Autor: Harald Höller

letzte Änderung: 17.10.07

Interaktive Nutzung von Mathematica 6

Grundlegendes zu Mathematica 6

� Einleitende Bemerkungen

Mit Hilfe von Mathematica lassen sich analytische, numerische und grafische Berechnungen anstellen. Mathematica bieteteine relativ simple und instruktive logische Syntax. Die meisten bekannten Funktionen haben in Mathematica einesyntaktisch ähnliche Entsprechung. Das Argument einer Funktion steht immer in eckigen Klammern (z.B. Sin[x]). AuchOperationen werden auf Argumente in eckigen Klammern angewandt; die Liste von Argumenten wird mit Beistrichengetrennt (z.B. Integrate[x,x]).

� Datei - Typen

Der Standard - Dateityp ist das Notebook (.nb), in dem sich Berechnungen interaktiv anstellen lassen. Unter File -> Save Asfindet man noch einige Dateiformate (.html, .txt, .pdf), in die ein Notebook für reines Lesen exportiert werden kann. Dateien vom Format Notebook lassen sich nur über Mathematica bzw. eine MathReader öffnen. Leider ist die Abwärts-Kompatibilität gar nicht und die Aufwärts-Kompatibilität eingeschränkt gegeben. Das bedeutet unter Mathematica 6 erstelleNotebooks, lassen sich mit einer Mathematica 5 (oder früher) Installation gar nicht öffnen.

� Eingabe/Ausgabe

Die Eingabe von Befehlen in Mathematica funktioniert über die Enter - Taste (nicht Return), die entweder beimNummernblock zu finden ist, oder über Shift + Return gesetzt wird. Jede Eingabe/Ausgabe wird intern nummeriert.

In[1]:= 1

Out[1]= 1

Auf In/Outputs lässt sich also Bezug nehmen.

In[2]:= 1 + Out@1D

Out[2]= 2

Bzw. auf den jeweils vorangegangenen Output über Out[%]

In[3]:= Out@%D

Out[3]= 2

� Hilfe

Page 2: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Hilfe

Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird. DurchEingabe von F1 gelangt man zum Documentation Center und kann nach Stichworten suchen. Das Ergebnis der Suchanfragewird nach Relevanz gelistet. Möchte man nur eine Kurzzusammenfassung eines Befehls, tippt man einfach ein Fragezeichen und den Befehl ein

In[4]:= ? Integrate

Integrate@ f , xD gives the indefinite integral à f d x.

Integrate@ f , 8x, xmin, xmax<D gives the definite integral àxmin

xmax

f d x.

Integrate@ f , 8x, xmin, xmax<, 8y, ymin, ymax<, ¼D gives the multiple integral àxmin

xmax

d x àymin

ymax

dy ¼f.

und erhält die wichtigsten Informationen aus der Hilfe. Mit ?xyz* bekommt man alle Einträge der Hilfe, die mit xyz

beginnen.

In[5]:= ? Integ*

System`

Integer

IntegerEx�

ponent IntegerPart IntegerQ

IntegerStr�

ing Integrate

IntegerDi�gits

IntegerLe�

ngthIntegerPa�

rtitions Integers Integral

� Der Kernel

Mathematica ' merkt' sich einmal definierte Größen, Aus- und Eingaben innerhalb des Notebooks. Wie oben beschriebenkann man auf frühere Ergebnisse zurückgreifen. Weist man einer Variable eine Größe zu, so behält die Variable dieseGröße, solange der Kernel läuft.

In[6]:= a = 100

b = 1000

c = 1 000 000

Out[6]= 100

Out[7]= 1000

Out[8]= 1 000 000

In[9]:= a + b + c

Out[9]= 1 001 100

Um diesen Speicher zu löschen, gibt es zwei Möglichkeiten. Der Befehl Clear[Argumente] löscht einzelne Definitionenbzw. unter Evaluation -> Quit Kernel -> Local kann man den Kernel gänzlich stoppen, und so auch Berechnungenabbrechen.

2 einfuehrung_expand_m6.nb

Page 3: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[10]:= ? Clear

Clear@symbol1, symbol2, ¼D clears values and definitions for the symboli.

Clear@ form1, form2, ¼D clears values and definitions

for all symbols whose names match any of the string patterns formi.

In[11]:= Clear@a, b, cD

In[12]:= a + b + c

Out[12]= a + b + c

Symbolisches Rechnen mit Mathematica - Basics

� Definitionen und Zuweisungen

Die einfachste Form einer Zuweisung der rechten Seite, nämlich über das Gleichheitszeichen haben wir schonkennengelernt.

In[13]:= ? =

lhs = rhs evaluates rhs and assigns the result to be

the value of lhs. From then on, lhs is replaced by rhs whenever it appears.

8l1, l2, ¼< = 8r1, r2, ¼< evaluates the ri, and assigns the results to be the values of the corresponding li.

In[14]:= d = 1

Out[14]= 1

Möchte man den Output unterdrücken, definiert man mit Doppelpunkt und Gleichheitszeichen

In[15]:= ? :=

lhs := rhs assigns rhs to be the delayed value of lhs. rhs is maintained in an

unevaluated form. When lhs appears, it is replaced by rhs, evaluated afresh each time.

In[16]:= f := 1

� Funktionen

Größen mit Argumenten, also solche der Form f[x] sind in Mathematica statische Gebilde. Möchte man, dass das Argumenteiner Größe eine Varible ist, muss man bei der Definition der Größe (bzw. der Funktion) Variable + Unterstrich setzen.

DONT :

In[17]:= h@xD := Sin@xD

In[18]:= h@1D

Out[18]= h@1D

DO :

In[19]:= g@x_D := Sin@xD

einfuehrung_expand_m6.nb 3

Page 4: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[20]:= g@1D

Out[20]= Sin@1D

Wie man sieht, versucht Mathematica nicht immer, numerische Werte auszugeben.

� Eingabe/Ausgabe II

Möchte man den numerischen Wert einer Ausgabe erzwingen, setzt man N[Argument].

In[21]:= N@g@1DD

Out[21]= 0.841471

bzw. lassen sich Befehle, die sich auf den ganzen Ausdruck beziehen auch hinten anhängen, indem man zwei Schrägstricheanfügt.

In[22]:= g@1D �� N

Out[22]= 0.841471

� Grundlegende Operationen (Skalare)

Die Addition haben wir oben schon kennengelernt, sie wird - wenig überraschend - mit dem Plus - Zeichen (+) gesetzt,Subtraktion über das Minus (-). Die Multiplikation kann über Stern (*) oder ein Leerzeichen gesetzt werden. DasLeerzeichen wird von Mathematica automatisch durch ein x ersetzt.

In[23]:= 2 *2

Out[23]= 4

In[24]:= 2 ´2

Out[24]= 4

Division von skalaren Größen funktioniert auch wie man es sich erwarten würde.

In[25]:= 2 �2

Out[25]= 1

Verschachtelte Ausdrücke können ebenfalls wie am Papier, mit runden Klammern eingegeben werden.

In[26]:= H1 + H4 - 3L *2L � H1 + 1L + 1

Out[26]=5

2

In[27]:= Clear@"Global`*"D

� Grundlegende Befehle - Eingabe/Ausgabe III

Bisher haben wir Mathematica als ' Taschenrechner' kennengelernt. Wirklich interessant werden Computeralgebrasysteme,wenn es um kompliziertere Berechnungen geht. Integrale, Differentialgleichungen oder algebraische Gleichungssystemelösen sind typische Anwendungsbeispiele.

� Bsp. : Differenzieren

Um die Syntax ein wenig kennenzulernen, betrachten wir die Differentiation von skalaren Funktionen.

4 einfuehrung_expand_m6.nb

Page 5: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[28]:= ? D

D@ f , xD gives the partial derivative ¶f � ¶x.

D@ f , 8x, n<D gives the multiple derivative ¶nf � ¶x

n.

D@ f , x, y, ¼D differentiates f successively with respect to x, y, ¼.

D@ f , 88x1, x2, ¼<<D for a scalar f gives the vector derivative H¶f � ¶x1, ¶f � ¶x2, ¼L.Berechnen wir das Differential einer nicht näher definierten Funktion F[x], so erhalten wir als Output F'[x]. Wie im Hilfe-Eintrag beschrieben werden die abzuleitende Funktion und die Variable nach der wir ableiten wollen, durch einen Beistrichgetrennt.

In[29]:= D@F@xD, xD

Out[29]= F¢@xD

Definieren wir eine Funktion G (auch statisch), d.h. weisen wir der Größe eine rechte Seite zu, so erhalten wir als Output dasErgebnis der partiellen Ableitung.

In[30]:= G@x_, y_D := x *y

In[31]:= D@G@x, yD, xD

Out[31]= y

Zweite partielle Ableitung nach x

In[32]:= D@G@x, yD, 8x, 2<D

Out[32]= 0

Aufeinanderfolge von Ableitungen nach einer Liste von Variablen

In[33]:= D@G@x, yD, x, yD

Out[33]= 1

� Simplify

In[34]:= ? Simplify

Simplify@exprD performs a sequence of algebraic

and other transformations on expr, and returns the simplest form it finds.

Simplify@expr, assumD does simplification using assumptions.

In[35]:= ? FullSimplify

FullSimplify@exprD tries a wide range of transformations on expr

involving elementary and special functions, and returns the simplest form it finds.

FullSimplify@expr, assumD does simplification using assumptions.

einfuehrung_expand_m6.nb 5

Page 6: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Lineare Algebra - Darstellung und Operationen von Vektoren, Matrizen und Tensoren

Indizierte Größen als Listen von Einträgen

� Darstellung von Vektoren, Matrizen, Tensoren

Vektoren und Tensoren werden in Mathematica zunächst als Listen von Einträgen dargestellt. Alle Operationen auf dieseGrößen werden - sofern man nichts Anderes definiert - in einem euklidischen n-Raum gebildet (kartesiche Koordinaten).

In[36]:= vec = 8a, b, c, d<Out[36]= 8a, b, c, d<

Größe mit einem Index - in Mathematica eine Liste von Zahlen.

In[37]:= ? Dimensions

Dimensions@exprD gives a list of the dimensions of expr.

Dimensions@expr, nD gives a list of the dimensions of expr down to level n.

In[38]:= Dimensions@vecD

Out[38]= 84<

In[39]:= tensor :=

888a, b, c<, 8a, b, c<, 8a, b, c<, 8a, b, c<<, 88a, b, c<, 8a, b, c<, 8a, b, c<, 8a, b, c<<<

In[40]:= Dimensions@tensorD

Out[40]= 82, 4, 3<

Größe mit drei Indices (Anzahl der Indices entspricht dem Rang des Tensors) - Zahlenlisten der Länge 2, 4, 3. Hinweis:gerade bei verschachtelten Ausdrücken wie dem oberen 'Tensor' ist es sinnvoll, bei der Eingabe nachdem eine Klammergeöffnet wurde, diese auch gleich wider zu schließen; d.h. [] eintippen und die Klammer befüllen.

� Bsp. : Einheitsmatrix

In[41]:= ? IdentityMatrix

IdentityMatrix@nD gives the n�n identity matrix.

In[42]:= M := IdentityMatrix@10D

In[43]:= Dimensions@MD

Out[43]= 810, 10<

Die Einheitsmatrix ist eine Größe mit zwei Indices.

� Listen automatisch befüllen

Oft ist es auch wünschenswert, sich Listen automatisch generieren zu lassen.

6 einfuehrung_expand_m6.nb

Page 7: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[44]:= ? Table

Table@expr, 8imax<D generates a list of imax copies of expr.

Table@expr, 8i, imax<D generates a list of the values of expr when i runs from 1 to imax.

Table@expr, 8i, imin, imax<D starts with i = imin.

Table@expr, 8i, imin, imax, di<D uses steps di.

Table@expr, 8i, 8i1, i2, ¼<<D uses the successive values i1, i2, ¼.

Table@expr, 8i, imin, imax<, 8 j, jmin, jmax<, ¼D gives a nested list. The list associated with i is outermost.

In[45]:= H = Table@1 � Hi + j - 1L, 8i, 1, 10<, 8j, 1, 10<D �� MatrixForm

Out[45]//MatrixForm=

1 1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

19

In[46]:= ? Subscript

Subscript@x, yD is an object that formats as xy.

Subscript@x, y1, y2, ¼D formats as xy1,y2,¼.

In[47]:= Table@Subscript@m, i, jD, 8i, 3<, 8j, 3<D �� MatrixForm

Out[47]//MatrixForm=

m1,1 m1,2 m1,3m2,1 m2,2 m2,3m3,1 m3,2 m3,3

Lineare Gleichungssysteme und Systeme von Gleichungen lösen

� Lösen linearer Gleichungssysteme

Eines der wichtigsten Einsatzgebiete von Computeralgebrasystemen und numerischen Codes ist es, Gleichungssysteme zulösen. Ob man die aus den Kirchhoff'schen Regeln abgeleiteten Gleichungen für Spannung und Stromstärke in einemkomplizierten Schaltkreis berechnen oder die Lösung eines Systems aus Differentialgleichungen bestimmen möchte; imGrunde reduziert sich das Problem mathematisch auf das Invertieren von Matrizen. Je größer diese Systeme werden (also jemehr Gleichungen zu lösen sind), desto weniger gut handhabbar werden sie. Aber auch an den Computer sind hier Grenzen gesetzt, was wir am Beispiel der oben definierten Matrix H kurz beleuchtenwollen.

einfuehrung_expand_m6.nb 7

Page 8: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[48]:= ? LinearSolve

LinearSolve@m, bD finds an x which solves the matrix equation m.x == b.

LinearSolve@mD generates a LinearSolveFunction@¼D which can be applied repeatedly to different b.

Dieser Befehl löst also ein Gleichungssystem der Form m.x=b. Aus der Theorie der linearen Algebra weiß man, dass dasGleichungssystem nicht lösbar ist, wenn die Determinante von m verschwindet, weil die Matrix nicht invertierbar ist.

� Bsp. : Hilbert - Matrix

Wir betrachten einen beliebigen Vektor b

In[49]:= b := 81, 1, 1, 1, 1, 1, 1, 1, 1, 1<

und wollen das Gleichungssystem H.x=b auflösen, d.h. den Lösungsvektor x bestimmen.

In[50]:= LinearSolve@H, bD

Out[50]= LinearSolveB

1 1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

19

, 81, 1, 1, 1, 1, 1, 1, 1, 1, 1<F

Mathematica spuckt uns die Eingabe wieder aus.

In[51]:= ? Det

Det@mD gives the determinant of the square matrix m.

In[52]:= Det@HD

Out[52]= DetB

1 1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

19

F

8 einfuehrung_expand_m6.nb

Page 9: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[53]:= DetB

1 1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

3

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

4

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

5

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

6

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

7

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

8

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

9

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

10

1

11

1

12

1

13

1

14

1

15

1

16

1

17

1

18

1

19

F

Out[53]=1

46 206 893 947 914 691 316 295 628 839 036 278 726 983 680 000 000 000

Auch hier erhalten wir zunächst keine Antwort auf die Frage nach der Determinante von H; wir fragen noch einmal.

Die Determinante ist fast Null. Die Elemente der Hilbert-Matrix 'verdünnen' sich nach rechts unten, d.h. je größer dieDimension der Matrix, desto schwieriger ihre Inversion.

In[54]:= ? HilbertMatrix

HilbertMatrix@nD gives the n´n Hilbert matrix with elements of the form 1 � Hi + j - 1L.HilbertMatrix@8m, n<D gives the m´n Hilbert matrix.

Die fünfdimensionale Hilbert - Matrix

In[55]:= HilbertMatrix@5D

Out[55]= ::1,1

2,1

3,1

4,1

5>, :

1

2,1

3,1

4,1

5,1

6>,

:1

3,1

4,1

5,1

6,1

7>, :

1

4,1

5,1

6,1

7,1

8>, :

1

5,1

6,1

7,1

8,1

9>>

und ein beliebiger Vektor c

In[56]:= c := 81, 2, 3, 4, 5<

führen zu einem numerischen Ergebnis. Mathematica kann das Gleichungssystem also lösen und die Lösung ist eindeutig.

In[57]:= LinearSolve@HilbertMatrix@5D, cD

Out[57]= 8125, -2880, 14 490, -24 640, 13 230<

In[58]:= Det@HilbertMatrix@5DD

Out[58]=1

266 716 800 000

� Weiteres Beispiel :

In[59]:= A = 881, 2, 3, 1, 2<, 84, 5, 6, 4, 4<, 80, 8, 9, 1, 2<, 81, 1, 1, 0, 0<, 80, 0, 9, 0, 1<<

Out[59]= 881, 2, 3, 1, 2<, 84, 5, 6, 4, 4<, 80, 8, 9, 1, 2<, 81, 1, 1, 0, 0<, 80, 0, 9, 0, 1<<

In[60]:= d = 83, 6, 17, 5, 5<

Out[60]= 83, 6, 17, 5, 5<

einfuehrung_expand_m6.nb 9

Page 10: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[61]:= x = LinearSolve@A, dD

Out[61]= :16

7,472

231,155

231, -

764

231, -

80

77>

In[62]:= Det@AD

Out[62]= 231

Probe :

In[63]:= A.x

Out[63]= 83, 6, 17, 5, 5<

Das lineare Gleichungssystem hat eine eindeutige Lösung, die Determinante ist ungleich Null

In[64]:= Clear@"Global`*"D

� Ein System von Gleichungen lösen

Nicht immer hat man sein Gleichungssystem in Matrixform aufgeschrieben bzw. hat es mit nichtlinearen Systemen ausGleichungen zu tun.

In[65]:= ? Solve

Solve@eqns, varsD attempts to solve an equation or set of equations for the variables vars.

Solve@eqns, vars, elimsD attempts to solve the equations for vars, eliminating the variables elims.

Im Hilfeeintrag zum Befehl Solve steht schon bezeichnend, dass 'versucht' wird, das System von Gleichungen zu lösen. Hierweiß man a priori nicht so genau, wie Mathematica das versucht; es gibt einige einbgebaute Algorithmen, die je nachProblemstellung 'ausprobiert' werden.

� Bsp. : System von drei Gleichungen (linear)

In[66]:= Solve@83 *a � b, 2 *a � c, c � 1<, 8a, b, c<D

Out[66]= ::a ®1

2, b ®

3

2, c ® 1>>

10 einfuehrung_expand_m6.nb

Page 11: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

� Bsp. : System von drei Gleichungen (nichtlinear)

In[67]:= Solve@83 *a^3 � b^2, 2 *a^2 � c^2, c^3 � 1<, 8a, b, c<D

Out[67]= ::b ® -3

23�4, c ® 1, a ®

1

2>, :b ® -

ä 3

23�4, c ® 1, a ® -

1

2>, :b ®

ä 3

23�4, c ® 1, a ® -

1

2>,

:b ®3

23�4, c ® 1, a ®

1

2>, :b ® - 3 -

1

4-

ä 3

4

3�4

, c ®1

2J-1 + ä 3 N, a ® -

1

4-

ä 3

4>,

:b ® 3 -1

4-

ä 3

4

3�4

, c ®1

2J-1 + ä 3 N, a ® -

1

4-

ä 3

4>,

:b ® - 3 -1

4+

ä 3

4

3�4

, c ®1

2J-1 - ä 3 N, a ® -

1

4+

ä 3

4>,

:b ® 3 -1

4+

ä 3

4

3�4

, c ®1

2J-1 - ä 3 N, a ® -

1

4+

ä 3

4>,

:b ® -1

3

2J-1 - ä 3 N

3�4, c ®

1

2J-1 + ä 3 N, a ® - -

1

4-

ä 3

4>,

:b ®1

3

2J-1 - ä 3 N

3�4, c ®

1

2J-1 + ä 3 N, a ® - -

1

4-

ä 3

4>,

:b ® -1

3

2J-1 + ä 3 N

3�4, c ®

1

2J-1 - ä 3 N, a ® - -

1

4+

ä 3

4>,

:b ®1

3

2J-1 + ä 3 N

3�4, c ®

1

2J-1 - ä 3 N, a ® - -

1

4+

ä 3

4>>

Mathematica wird immer alle gefundenen Lösungen auflisten, auch wenn sie teilweise 'unbrauchbar' sind, weil sieunphysikalisch oder aus anderen Gründen auszuschließen sind. Hier sind dann oft wieder Zettel und Bleistift nötig, um dieSpreu vom Weizen zu trennen.

Operationen zwischen Vektoren, Tensoren

� Skalaprodukt, Vektorprodukt, Addition

Das Skalarprodukt (innere Produkt) zweier Vektoren wird durch einen Punkt (.) gesetzt.

In[68]:= vec = 8a, b, c<

Out[68]= 8a, b, c<

In[69]:= vec.vec

Out[69]= a2 + b2 + c2

Mit dem Befehl * werden die Einträge paarweise Multipliziert.

einfuehrung_expand_m6.nb 11

Page 12: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[70]:= vec *vec

Out[70]= 9a2, b2, c2=

Die Addition funktioniert, wie man es erwarten würde.

In[71]:= vec + vec

Out[71]= 82 a, 2 b, 2 c<

Das Kreuzprodukt (Vektorprodukt) wird mit dem Befehl Cross gesetzt.

In[72]:= Cross@vec, vecD

Out[72]= 80, 0, 0<

Vektoren sind zu sich selbst parallel; das Vektorprodukt muss verschwinden.

In[73]:= Cross@81, 0, 0<, 80, 1, 0<D

Out[73]= 80, 0, 1<

Das Vektorprodukt zwischen Einheitsvektor in x - und in y - Richtung gibt den Einheitsvektor in z - Richtung

� Bemerkungen und Ausblick

Einige weitere in der linearen Algebra wichtige Anwendungsbereiche von Computeralgebrasystemen sind Bestimmung vonRang einer Matrix, Bestimmung von Eigenwerten, Eigenvektoren und Diagonalisierung von Matrizen. Um die Befehle kennenzulernen, betrachten wir ein konkretes Beispiel.

� Bsp. : Rang, Eigenwerte einer Matrix, Diagonalisierung

In[74]:= ? RandomReal

RandomReal@D gives a pseudorandom real number in the range 0 to 1.

RandomReal@8xmin, xmax<D gives a pseudorandom real number in the range xmin to xmax.

RandomReal@xmaxD gives a pseudorandom real number in the range 0 to xmax.

RandomReal@range, nD gives a list of n pseudorandom reals.

RandomReal@range, 8n1, n2, ¼<D gives an n1 �n2 �¼ array of pseudorandom reals.

RandomReal@dist, ¼D samples from the symbolic continuous distribution dist.

In[75]:= A = RandomReal@8-1, 1<, 85, 5<D

Out[75]= 88-0.169337, -0.685204, 0.102231, -0.947748, 0.713358<,80.54575, 0.151902, 0.6732, 0.366166, 0.0381229<,8-0.206992, 0.337439, -0.21688, 0.795893, -0.819972<,8-0.841506, 0.267082, -0.801049, 0.420996, 0.950138<,80.80867, 0.023677, -0.945861, -0.298547, -0.616122<<

In[76]:= ? MatrixRank

MatrixRank@mD gives the rank of the matrix m.

In[77]:= MatrixRank@AD

Out[77]= 5

12 einfuehrung_expand_m6.nb

Page 13: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[78]:= ? Eigenvalues

Eigenvalues@mD gives a list of the eigenvalues of the square matrix m.

Eigenvalues@8m, a<D gives the generalized eigenvalues of m with respect to a.

Eigenvalues@m, kD gives the first k eigenvalues of m.

Eigenvalues@8m, a<, kD gives the first k generalized eigenvalues.

In[79]:= Eigenvalues@AD

Out[79]= 8-1.73719, 0.848373 + 0.803623 ä, 0.848373 - 0.803623 ä,

-0.194499 + 0.365137 ä, -0.194499 - 0.365137 ä<

In[80]:= ? Eigenvectors

Eigenvectors@mD gives a list of the eigenvectors of the square matrix m.

Eigenvectors@8m, a<D gives the generalized eigenvectors of m with respect to a.

Eigenvectors@m, kD gives the first k eigenvectors of m.

Eigenvectors@8m, a<, kD gives the first k generalized eigenvectors.

In[81]:= Eigenvectors@AD

Out[81]= 880.50923, -0.0375405, -0.447797, 0.326422, -0.65742<,8-0.0862052 + 0.448868 ä, 0.0405575 - 0.132333 ä, -0.0299047 - 0.479841 ä,

0.537622 + 0. ä, 0.128863 + 0.484917 ä<, 8-0.0862052 - 0.448868 ä,

0.0405575 + 0.132333 ä, -0.0299047 + 0.479841 ä, 0.537622 + 0. ä, 0.128863 - 0.484917 ä<,8-0.203702 + 0.226309 ä, 0.76677 + 0. ä, 0.0554223 + 0.156072 ä, -0.516735 + 0.135628 ä,

-0.066607 + 0.0455767 ä<, 8-0.203702 - 0.226309 ä, 0.76677 + 0. ä,

0.0554223 - 0.156072 ä, -0.516735 - 0.135628 ä, -0.066607 - 0.0455767 ä<<

In[82]:= ? CharacteristicPolynomial

CharacteristicPolynomial@m, xD gives the characteristic polynomial for the matrix m.

CharacteristicPolynomial@8m, a<, xD gives the generalized characteristic polynomial with respect to a.

In[83]:= CP@x_D = CharacteristicPolynomial@A, xD

Out[83]= -0.406015 - 0.652015 x - 1.76373 x2 + 1.39513 x3 - 0.42944 x4 - x5

Die Eigenwerte der Matrix (bzw. der linearen Abbildung) sind die Nullstellen des Charakteristischen Polynoms.

Probe :

In[84]:= CP@Eigenvalues@ADD

Out[84]= 90., 0. + 4.44089 ´10-16ä, 0. - 4.44089 ´10-16

ä,

1.38778 ´10-17- 1.21431 ´10-17

ä, 1.38778 ´10-17+ 1.21431 ´10-17

ä=

Ist einigermaßen Null.

einfuehrung_expand_m6.nb 13

Page 14: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Analysis - Arbeiten mit Funktionen, Folgen & Reihen

Einleitende Bemerkungen

� Wichtige mathematische Größen

Eine der schönsten Formeln der Mathematik soll uns als Fallbeispiel für weitere Mathematica-Eigenheiten dienen.

DONT :

In[85]:= e^8i * pi<

Out[85]= 9ei pi=

DO :

In[86]:= E^8I *Pi<

Out[86]= 8-1<

In[87]:= ? E

E is the exponential constant e Hbase of natural logarithmsL, with numerical value > 2.71828.

In[88]:= ? I

I represents the imaginary unit -1 .

In[89]:= ? Pi

Pi is Π, with numerical value > 3.14159.

In[90]:= ? Infinity

Infinity or ¥ is a symbol that represents a positive infinite quantity.

� Naturkonstanten usw.

In[91]:= << PhysicalConstants`

In[92]:= SpeedOfLight

Out[92]=299 792 458 Meter

Second

In[93]:= FineStructureConstant

Out[93]= 0.00729735

In[94]:= AgeOfUniverse

Out[94]= 4.7 ´1017 Second

� Wichtige eingebaute Funktionen

14 einfuehrung_expand_m6.nb

Page 15: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Wichtige eingebaute Funktionen

Wie schon eingangs bemerkt sind die wichtigsten mathematischen Funktionen in Mathematica implementiert und werden mitgroßen Anfangsbuchstaben eingegeben. Einige Beispiele:

In[95]:= ? Sin

Sin@zD gives the sine of z.

In[96]:= ? Log

Log@zD gives the natural logarithm of z Hlogarithm to base eL.Log@b, zD gives the logarithm to base b.

In[97]:= ? Gamma

Gamma@zD is the Euler gamma function GHzL.Gamma@a, zD is the plica function GHa, zL.Gamma@a, z0, z1D is the generalized plica function GHa, z0L - GHa, z1L. It is also a unit of magnetic flux density.

In[98]:= ? DiracDelta

DiracDelta@xD represents the Dirac delta function ∆HxL.DiracDelta@x1, x2, ¼D represents the multidimensional Dirac delta function ∆Hx1, x2, ¼L.

� Folgen und Reihen

Folgen sind zunächst ja auch nichts anderes als Listen von Zahlen (bzw. Einträgen) und werden daher ähnlich wie schonkennengelernt gehandhabt. Betrachten wir daher gleich eine etwas interessantere Anwendung, nämlich den Grenzwert einerFolge.

In[99]:= Clear@"Global`*"D

Definiert man die Folge auch gleich als Funktion, lassen sich rekursive Ausdrücke berechnen.

In[100]:= a@n_D := a@nD = H1 � H1 + nL^HnLL

In[141]:= b@n_D := b@nD := b@n - 1D * b@n - 2Db@0D := 1

b@1D := 2

b@2D := 2

In[105]:= ? Limit

Limit@expr, x -> x0D finds the limiting value of expr when x approaches x0.

In[106]:= Limit@a@nD, n ® InfinityD

Out[106]= 0

In[145]:= Table@b@nD, 8n, 0, 10<D

Out[145]= 81, 2, 2, 4, 8, 32, 256, 8192, 2 097 152, 17 179 869 184, 36 028 797 018 963 968<

Reihen lassen sich ebenfalls sehr einfach evaluieren

einfuehrung_expand_m6.nb 15

Page 16: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[108]:= ? Sum

Sum@ f , 8i, imax<D evaluates the sum âi=1

imax

f.

Sum@ f , 8i, imin, imax<D starts with i = imin .

Sum@ f , 8i, imin, imax, di<D uses steps di.

Sum@expr, 8i, 8i1, i2, ¼<<D uses successive values i1, i2, ¼.

Sum@ f , 8i, imin, imax<, 8 j, jmin, jmax<, ¼D evaluates the multiple sum âi=imin

imax âj=jmin

jmax

¼ f.

In[109]:= Sum@x^n � Hn!^2L, 8n, 0, Infinity<D

Out[109]= BesselIB0, 2 x F

In[110]:= ? BesselI

BesselI@n, zD gives the modified Bessel function of the first kind InHzL.In[111]:= Sum@x^k �k!, 8k, 0, n<D

Out[111]=ãx H1 + nL Gamma@1 + n, xD

Gamma@2 + nD

und Potenzreihen von Funktionen generieren.

In[112]:= ? Series

Series@ f , 8x, x0, n<D generates a power series expansion for f about the point x = x0 to order Hx - x0Ln.

SeriesA f , 8x, x0, nx<, 9y, y0, ny=E successively finds series expansions with respect to x, then y.

In[113]:= Series@E^x, 8x, 0, 10<D

Out[113]= 1 + x +x2

2+x3

6+x4

24+

x5

120+

x6

720+

x7

5040+

x8

40 320+

x9

362 880+

x10

3 628 800+ O@xD11

Differenzieren und Integrieren

� Unbestimmtes und bestimmes Integral

Grundlegendes zum Differenzieren haben wir schon in der Sektion Eingabe/Ausgabe III kennengelernt. Analog werden dieBefehle beim Integrieren eingegeben.

In[114]:= Clear@"Global`*"D

16 einfuehrung_expand_m6.nb

Page 17: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[115]:= ? Integrate

Integrate@ f , xD gives the indefinite integral à f d x.

Integrate@ f , 8x, xmin, xmax<D gives the definite integral àxmin

xmax

f d x.

Integrate@ f , 8x, xmin, xmax<, 8y, ymin, ymax<, ¼D gives the multiple integral àxmin

xmax

d x àymin

ymax

dy ¼f.

� Bsp. : Unbestimmte Integrale

In[116]:= Integrate@Sin@xD, xD

Out[116]= -Cos@xD

In[117]:= Integrate@E^Hx^2L, xD

Out[117]=1

2Π Erfi@xD

In[118]:= ? Erfi

Erfi@zD gives the imaginary error function erfHizL � i.

� Bsp.: Bestimmte Integrale

In[119]:= Integrate@Sin@xD *Cos@xD, 8x, -Pi, Pi<D

Out[119]= 0

In[120]:= Integrate@E^H-xL, 8x, 0, Infinity<D

Out[120]= 1

Differentialgleichungen

� Lösen gewöhnlicher Differentialgleichungen

Das Lösen von Differentialgleichungen gehört zu einer großen Stärken von Computeralgebrasystemen. Während manhändisch bereits für relativ einfache gewöhnliche DG spezielle Lösungsansätze benötig (die man also kennen muss), ist auchhier die Syntax in Mathematica recht instruktiv.

In[121]:= Clear@"Global`*"D

� Bsp. : Lösen einer gewöhnlichen Differentialgleichung ohne Nebenbedingung

In[122]:= ? DSolve

DSolve@eqn, y, xD solves a differential equation for the function y, with independent variable x.

DSolve@8eqn1, eqn2, ¼<, 8y1, y2, ¼<, xD solves a list of differential equations.

DSolve@eqn, y, 8x1, x2, ¼<D solves a partial differential equation.

In[123]:= DSolve@y'@xD + y@xD � 0, y@xD, xD

Out[123]= 88y@xD ® ã-x C@1D<<

� Bsp. : Lösen einer GDG mit NB

einfuehrung_expand_m6.nb 17

Page 18: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

Bsp. : Lösen einer GDG mit NB

In[124]:= DSolve@8z'@xD + z@xD � 0, z@0D � 1<, z@xD, xD

Out[124]= 88z@xD ® ã-x<<

� Bsp. : Lösen eines Systems von Differentialgleichungen

Wirklich schwierig wird das Lösen von DG, wenn es sich um Systeme gekoppelter Gleichungen handelt, das heißtFunktionen und deren Ableitungen in mehrere Gleichungen vorkommen. Zur Illustration wieder ein sehr einfaches Beispiel:

In[125]:= eqn1 := s'@xD + t@xD � 0

eqn2 := t'@xD + s@xD � 0

In[127]:= DSolve@8eqn1, eqn2<, 8s@xD, t@xD<, xD

Out[127]= ::s@xD ®1

-x I1 + ã2 xM C@1D -

1

-x I-1 + ã2 xM C@2D,

t@xD ® -1

-x I-1 + ã2 xM C@1D +

1

-x I1 + ã2 xM C@2D>>

� Lösen partieller Differentialgleichungen

Physikalische Vorgänge werden oft über partielle Differentialgleichungen beschrieben - z.B. das Geschwindigkeitsfeld einesGases, die Änderung der Temperatur eines beheizten Wasserbehälters oder die Aufenthaltswahrscheinlichkeit einesElektrons im Wasserstoffatom.

In[128]:= Clear@"Global`*"D

� Bsp. : Lösen einer PDG in zwei Dimensionen (analystisch)

Wir definieren eine partielle Differentialgleichung mit Nebenbedingung

In[129]:= pde := D@f@x, yD, xD + D@f@x, yD, yD � 0

NB := f@x, 1D � x^3

und betrachten zunächst die 'analytische' Lösung der Gleichung mit Nebenbedingung und geben das Ergebnis grafisch aus.

In[131]:= DSolve@8pde, NB<, f@x, yD, x, yD

Out[131]= 99f@x, yD ® H1 + x - yL3==

18 einfuehrung_expand_m6.nb

Page 19: Mathematica 6.0 Grundlegendes zu Mathematica - univie.ac.at · Hilfe Mathematica bietet eine umfangreiche eingebaute Hilfe, die durch eine online-Dokumentation komplettiert wird.

In[132]:= Plot3D@f@x, yD �. %, 8x, 0, 10<, 8y, 0, 10<D

Out[132]=

0

5

10 0

5

10

-200

0

200

400

Probe :

In[133]:= DAH1 + x - yL3, xE + DAH1 + x - yL3, yE

Out[133]= 0

� Bsp. : Lösen einer PDG in zwei Dimensionen (numerisch)

In[134]:= NDSolve@8pde, NB<, f@x, yD, 8 x, 0, 10<, 8y, 0, 10<D

NDSolve::bcart :

Warning: An insufficient number of boundary conditions have been specified for the direction of independent

variable x. Artificial boundary effects may be present in the solution.

Out[134]= 88f@x, yD ® InterpolatingFunction@880., 10.<, 80., 10.<<, <>D@x, yD<<

In[135]:= Plot3D@Evaluate@f@x, yD �. %D, 8x, 0, 10<, 8y, 0, 10<, PlotRange ® AllD

Out[135]=

0

5

10 0

5

10

-500

0

500

1000

Das numerische Ergebnis unterscheidet sich also von analytischen.

einfuehrung_expand_m6.nb 19