K A P I T E L 1

Erste Schritte in Mathematica

Dieses Tutorium ist vorallem an Studenten gerichtet, die im Anfangsstadium ihres Studiums sind und noch keinerlei große Erfahrungen mit objektorientierten Mathematik-Programmen besitzen. Aber auch der "erfahrene" Student, ausgestattet mit rudimentären Mathematica-Kenntnissen kann in diesem Tutorium vielerlei nützliche Tipps und Tricks erlernen. Der Autor wünscht viel Spaß und Freude mit diesem Notebook.

Leipzig, Wintersemester 2012

Inhaltsverzeichnis:
1.0  Wolfram Mathematica einsetzen 
1.1  "Mit dem Raumschiff zum Bäcker" - das kann Mathematica wirklich
1.2  Mit Mathematica umgehen
1.3  Mathematica als "Taschenrechner"
1.4  Tipps und Tricks
1.5  Übung macht den Meister

© Tony Porsch

1.0 Wolfram Mathematica einsetzen

- Mathematica verfügbar in allen Rechnerpools der Fakultät Maschinen- und Energietechnik

- Studentenversionen verfügbar unter folgenden Link

1.1 "Mit dem Raumschiff zum Bäcker" - das kann Mathematica wirklich

Plot3D[Sin[x+y^2],{x,-3,3},{y,-2,2}]

{Plot3D[1/(x y),{x,-2,2},{y,-2,2}],Plot3D[1/(x y),{x,-2,2},{y,-2,2},Exclusions->{x y==0}]}

Graphics3D[Table[Cuboid[{i,j,k}],{i,0,2.2,1.1},
	{j,0,2.2,1.1},{k,0,2.2,1.1}],Boxed->False]

Animate[Plot[Sin[x+a],{x,0,10},PlotLabel->a],{a,0,Infinity},AnimationRunning->False]

sphere[θ_,ϕ_]:={Cos[θ]Sin[ϕ/2],Sin[θ]Sin[ϕ/2],Cos[ϕ/2]};
torus[θ_,ϕ_]:={-Sin[ϕ]/3,(2-Cos[ϕ]) Sin[θ]/3,(2-Cos[ϕ])Cos[θ]/3};
Animate[ParametricPlot3D[(1-λ)sphere[θ,ϕ]+λ torus[θ,ϕ],{θ,0,2π},{ϕ,0,2π},PlotRange->1,Mesh->True],{λ,0,1},AnimationDirection->ForwardBackward,SaveDefinitions->True,AnimationRunning->False]

Freie gedämpfte Schwingung eines Systems (Aus FEM IV, SS2012, Prof. Klöhn, HTWK-Leipzig)

w2[x_,t_]:=(1-((3 (x^2))/16000000)+((x^3)/32000000000)) (3.3863873061246585` (E^(-0.25224672194142167` t)) (0.7200168904397505` Cos[5.0386243244904625` t]+0.036045930130790126` Sin[5.0386243244904625` t])-1.808702745901685` (E^(-2.1986949694274687` t)) (1.3480689756817918` Cos[21.87673872609855` t]+0.1354860298137952` Sin[21.87673872609855` t]))+(x-((x^2)/2000)+((x^3)/16000000)) (0.00012084671885014782` (E^(-0.25224672194142167` t)) (0.7200168904397505` Cos[5.0386243244904625` t]+0.036045930130790126` Sin[5.0386243244904625` t])+0.007353472633891102` (E^(-2.1986949694274687` t)) (1.3480689756817918` Cos[21.87673872609855` t]+0.1354860298137952` Sin[21.87673872609855` t]));

w1[x_,t_]:=(((x^2)/3000000)-((x^3)/13500000000)) (3.3863873061246585` (E^(-0.25224672194142167` t)) (0.7200168904397505` Cos[5.0386243244904625` t]+0.036045930130790126` Sin[5.0386243244904625` t])-1.808702745901685` (E^(-2.1986949694274687` t)) (1.3480689756817918` Cos[21.87673872609855` t]+0.1354860298137952` Sin[21.87673872609855` t]))+(-((x^2)/3000)+((x^3)/9000000)) (0.00012084671885014782` (E^(-0.25224672194142167` t)) (0.7200168904397505` Cos[5.0386243244904625` t]+0.036045930130790126` Sin[5.0386243244904625` t])+0.007353472633891102` (E^(-2.1986949694274687` t)) (1.3480689756817918` Cos[21.87673872609855` t]+0.1354860298137952` Sin[21.87673872609855` t]));

(Subscript[T, D1spez])=1.2470041230579305;

w[x_,t_]=If[x< 3000,w1[x,t],Evaluate[w2[x,t] /.x->x-3000]];

Animate[Plot[Evaluate[w[x,t]],{x,0,7000},PlotRange->{Automatic,{-5,5}}],{t,0,6(Subscript[T, D1spez])}]

1.2 Mit Mathematica umgehen

Grundlegende Befehle

Mit "Shift + Enter" lässt sich jede Eingabe in Mathematica ausführen.

4+3

Die Ausgabe einer Zeile kann mit ";" unterdrückt werden.

2+1;

Das Gleicheitszeichen wird in Mathematica als Doppelgleichheitszeichen verwendet.

glg1=5+x==0

Das "normale" Gleichheitszeichen ist für Zuweisungen reserviert.

a1=b+z;

a1

Das Komma in einer Gleitkommazahl wird als Punkt geschrieben.

1,3

Hinweis:

Mathematica zeigt über ein kleines, gelbes Kästchen, dass hier etwas an der Syntax nicht stimmt. Ein Klick auf das Kästchen gibt weitere Informationen zum Problem und bietet Lösungsmöglichkeiten an.

1.3

Ausdrücke in Gleichungen werden über /. eingesetzt:

glg1

glg1/.x->j+z

Eingabehilfen

Mathematische Operatoren lassen sich über die Basic Math Palettes einfügen. (Menüleiste: Palettes -> Basic Math Palettes)

(Sqrt[16])

(∑_(n=1)^5)2n

ABER : Die Eingabe über diese Symbol-Paletten kosten dem Anwender auf Dauer viel Zeit. Daher gibt es die Möglichkeit, mathematische Operatoren über Tastenkürzel einzufügen. Es lohnt sich, einige Tastenkürzel im Hinterkopf zu behalten.

Hochgestellt (Exponenten): Control  + ^

(10^3)

Hinweis:
Aus vielen Office-Anwendungen kennt man die Tastenkombination AltGr + 2, die ein "Quadrat" erzeugt. In Mathematica funktioniert diese Art des "Quadrat-schreibens" nicht! Deutlich wird dies mithilfe des Befehls //FullForm:

a²//FullForm

Aber man wollte ja eigentlich dies hier:

(a^2)//FullForm

Tiefgestellt: Control  + _

(Subscript[x, 1])

Bruchstrich : Shift + Control + /

((23+3)/3)

Wurzelzeichen : Control  + 2

(Sqrt[23])

Griechische Buchstaben: Esc "name" Esc

Esc Alpha Esc

α

Δ

Klammern:

Runde Klammern werden ausschließlich in algebraischen Ausdrücken verwendet.

((((a+b))^2)+z)3

Eckige Klammern verwendt man bei Mathematica eigenen Funktionen.

N[π,10]

Geschweifte Klammern haben immer etwas mit Listen oder Matrizen zu tun.

{{4,2,3},{4,1,1},{9,5,3}}//MatrixForm

Doppelte Eckige Klammern greifen auf Elemente von Listen zu.

%[[1,3]]

Hinweis : Eine ausführliche Widmung zu Matrizen und Vektoren erfolgt an anderer Stelle.

Hilfe-Dokumentation

Eine ausführliche Dokumentation findet sich unter Help -> Documentation

Direkt im notebook kann über "?" auf Hilfen zugegriffen werden.

?N

Strukturierung von Notebooks

Das Stylesheet "default" besitzt definierte Stylevorgaben für Überschriften, Aufzählungen etc. Der jeweilige Style kann über Shift + Alt + 1...9 erzeugt werden.

Title

Subtitle

Subsubtitle

Section

Subsection

Subsubsection

Textfarben, Ausrichtung uvm. kann im Menü über "Format" editiert werden.

1.3 Mathematica als "Taschenrechner"

Grundrechenaufgaben

Addition und Subtraktion:

2+9-8

Multiplikation und Division:

4*5/2

4 5

3a+2a+5b/2c

Konstanten und Trigonometrische Funktionen

Konstanten:

N[π,20]

N[E,20]

Trigonometrische Funktionen

Sin[0°]

Sin[(π/6)]

ArcSin[0.5]*(180/π)

Differentiation und Integration

Differentiation

D[(1/((Sqrt[2x])+1)),x]

Integration:

(∫_(-∞)^0)((ArcTan[x])/((x^2)+1))\[DifferentialD]x

Integrate[((ArcTan[x])/((x^2)+1)), {x, -Infinity, 0}]

Vektoren und Matrizen

Vektoren und Matrizen werden mithilfe von geschweiften Klammern angegeben.

Vektoren:

vec1={x,y,z}

vec2={h,i,j}

Addition:

vec1+vec2

Skalarprodukt:

vec1.vec2

Hinweis:
Die reine Multiplikation von Vektoren mithilfe von "*" stellt keine in der Vektorrechnung übliche Operation dar!

Matrizen:

mat={{a,b,c},{d,e,f},{g,h,i}}

Bei großen Matrizen verliert man bei Darstellung in "Standardform" schnell den Überblick. Der Befehl "//MatrixForm" löst dieses Manko auf.

mat//MatrixForm

Allerdings lässt sich mit Matrizen, dargestellt in der MatrixForm, nicht weiterrechnen. (Mathematica sieht darin einen Konflikt.) Es empfielt sich deshalb, "MatrixForm" wirklich nur zur Darstellung zu verwenden.

Eine Todsünde wäre deshalb:

A={{j,k,l},{m,n,o},{p,q,r}}//MatrixForm

Denn offensichtlich kann Mathematica damit nichts anfangen.

A.A

Zum Erfolg führt nur diese Variante:

MatrixForm[A={{j,k,l},{m,n,o},{p,q,r}}]

A.A//MatrixForm

Hinweis:
An dieser Stelle sei auch erwähnt, dass Matrizen und auch Vektoren, die über die Basic Math Palettes eingegeben werden, ebenfalls in der "unbrauchbaren" MatrixForm verwendet werden. Wer also Matrizen und Vektoren immer "funktionsfähig" einsetzen möchte, sollte diese ausschließlich über die geschweiften Klammern eingeben.

Matrizenmultiplikation :

A.A//MatrixForm

Matrizentransposition:

Transpose[A]//MatrixForm

Inverse:

Inverse[A]//MatrixForm

Determinante:

Det[{{x,y,0,1},{-y,x,-1,0},{0,1,x,-y},{-1,0,y,x}}]

Eigenwerte und Eigenvektoren:

Eigensystem[{{0,1,0,0},{0,0,1,0},{0,0,0,1},{48,-28,-8,7}}]//MatrixForm

Hinweis:
Leser, die mit dem Begriff des Eigenwertproblems nichts anfangen können, sei an Herz gelegt, das Beispiel "Kraft proportional zu Verzerrung", anzusehen.

Beispiel: Kraft proportional zur Verschiebung (Quelle: TM II, Prof. Klöhn, HTWK-Leipzig)

Aufgabenstellung: Kraft proportional zur Verschiebung

Gegeben ist das dargestelle Fachwerk mit den eingetragenen Kräften und Verschiebungen (Freiheitsgraden)

Berechnen Sie die Winkel, den die Resultierende (Subscript[F, R]) mit

(Subscript[F, R ])=(Sqrt[((((Subscript[F, H])))^2) + ((Subscript[F, V])) ])

einehmen müssen, damit die hervorgerufenen Verschiebung  genau in Richtund der Kraft liegt! 

Hinweis: Es entsteht ein Eigenwertproblem. 

Verwenden Sie zur besseren Übersicht der Ergebnisse die Spezialisierung der Steifigkeiten wie folgt:

regelspez={(Subscript[EA, 1])->5(Subscript[EA, 0]), (Subscript[EA, 2])-> 4 (Subscript[EA, 0])};

Lösung: Kraft proportional zur Verschiebung

Wir ermitteln zunächst die jeweiligen Stabkräfte, die sich die sich bei Vorgabe der Verschiebungen (Subscript[u, H]) oder (Subscript[u, V]) einstellen. Die folgenden Skizzen machen diese Zusammenhänge deutlich:
	o für (Subscript[u, H])

mit dem Detail

o für (Subscript[u, V])

mit dem Detail

Wir erhalten die kinemaischen Beziehungen
	o für die Verlängerung des Stabes 1

(Subscript[u, 1]) = (4/5) (Subscript[u, H]) + (3/5) (Subscript[u, V]);
(Subscript[u, 2])= (Subscript[u, H]);

Wir halten zunächst noch die Längen der Stabe fest:

(Subscript[l, 1])= 5 a;
(Subscript[l, 2])= 4 a;

Für jeden Stab gilt das Werkstoffgesetz bei konstanter Normalkraft

Do[(Subscript[n, i]) = ((Subscript[EA, i])/(Subscript[l, i]))(Subscript[u, i]),{i,2}]

(Subscript[F, V])=.

Dann können wir das Gleichgewicht für die horizontale und vertikale Richtung formulieren.Wir erhalten jeweils für die linken Seiten der Gleichungen

lhs[1]= - ((4 )/5)(Subscript[n, 1]) -(Subscript[n, 2]) + (Subscript[F, H])  //Simplify
lhs[2]= - ((3 )/5)(Subscript[n, 1]) + (Subscript[F, V ]) //Simplify

Die Aufgabenstellung fordert nun, daß F proportional zu u ist, mithin also seine Komponenten proportional zu den Komponenten von u sind, was wir mit Hilfe des Proportionalitätsfaktors ausdrücken

(Subscript[F, H]) = λ (Subscript[u, H]);
(Subscript[F, V]) =  λ (Subscript[u, V]);

und schauen uns die Ausdrücke für die linken Seiten  an, die sich nun als jene eines homogenen linearen Gleichungssystems  für (Subscript[u, V ]) und (Subscript[u, H]) ergeben haben

lhs[1] 
lhs[2]

Damit wir die Struktur der Gleichungen besser erkennen, schauen wir uns die Koeffizientenmatrix an, fassen zuvor aber die Größen (Subscript[u, H]) und (Subscript[u, V]) in einem Vektor zusammen
und multiplizieren die linken Seiten des homogenen Gleichungssystems noch mit -1

uv={(Subscript[u, H]), (Subscript[u, V])};
A=Table[Coefficient[-lhs[i], uv[[j]]],{i,2},{j,2}]

Dies  ist die von λ abhängige Matrix des Eigenwertproblems, das wir nur noch auf die Form
K- λ I bringen müssen

B=Coefficient[A,λ]

und erkennen, daß wir es in der Tat mit einem Standardeigenwertproblem zu tun haben. Die Matrix K lautet damit

K=A+ λ IdentityMatrix[2]

Wir lösen das Eigenwertproblem mit Mathematica's Eigensystem, wählen aber noch die oben gegebenen  Vereinfachungen

regelspez={(Subscript[EA, 1])->5(Subscript[EA, 0]), (Subscript[EA, 2])-> 4 (Subscript[EA, 0])};
eigsys=Eigensystem[K /.regelspez] //Simplify

Wir kontrollieren  das Ergebnis, schauen also nach, ob bei den gegebenen Lasten
	(Subscript[F, H]) = (Subscript[λ, i]) (Subscript[u, H])
	(Subscript[F, V]) = (Subscript[λ, i]) (Subscript[u, V])
tatsächlich Verschiebungen entstehen, die den sie verursachenden Kräften proportional sind. 
Wir erhlaten für die erste und zweite Lösung (den ersten und zweiten Eigenwert)

Table[(Subscript[F, i]) = eigsys[[1,i]] eigsys[[2,i]],{i,2}]

Daß an dieser Stelle keine Kraft herauskommt, liegt an der Normierung der Eigenvektoren, die ja den Verschiebungsvektor darstellen! Damit das Ergebnis auch  bezüglich der  Einheiten eine Kraft ist, wollen wir sie nur mit a multiplizeren.

Do[(Subscript[F, i])= a (Subscript[F, i]),{i,2}]

Wir können damit den Winkel angeben: Die H- und V-Komponente der Kraft sind (Subscript[F, i])[[1]] bzw. (Subscript[F, i])[[2]] entsprechend. Es gibt offensichtlich zwei Winkel, unter denen das Geforderte möglich ist, nämlich

ϕ=Table[ArcTan[(((Subscript[F, i])[[2]])/((Subscript[F, i])[[1]]))],{i,2}]

%*180/π//N

Unter welchem Winkel die Kräfte angreifen und wie die entstehenden Verschiebungen aussehen, zeigt die folgende Skizze
	o für den ersten Eigenwert und die erste Eigenrichtung

o für den zweiten Eigenwert und die zweite Eigenrichtung

Gleichungssysteme lösen

Mithilfe von Mathematica lassen sich "spielend" umfangreiche Gleichungssysteme lösen. An dieser Stelle soll gezeigt werden, wie dies ausgeführt wird.

glg1=3a+32+12b==-44;

Solve[glg1,a]

Dies geht natürlich auch für quadratische Gleichungen.

glg2=a (x^2)+b x +c==d;

Solve[glg2,x]

Abschließend ein zu lösendes Gleichungssystem.

glg1=6x1+3x2+2x3+3x4-4x5==32;
glg2=3x1-4x2+1x3+7x4-2x5==5;
glg3=4x1+1x2-3x3+3x4-7x5==2;

Solve[{glg1,glg2,glg3},{x1,x2,x3,x4}]

Vereinfachung von Ausdrücken

Ein "Highlight" von Mathematica ist die Möglichkeit komplizierte mathemtische Ausdrücke mithilfe von Befehlen zu vereinfachen.

Simplify und FullSimplify als zunächst "mächtigste" Waffe zur Vereinfachung:

(Sqrt[((Sin[x])^2)+((Cos[x])^2)])

(Sqrt[((Sin[x])^2)+((Cos[x])^2)])//Simplify

Ausmultiplikation mit Expand bzw. PowerExpand:

(((a+b))^2)

(((a+b))^2)//Expand

Faktorisieren mit Factor:

(a^4)+4 (a^3) b+6 (a^2) (b^2)+4 a (b^3)+(b^4)+4 (a^3) c+12 (a^2) b c+12 a (b^2) c+4 (b^3) c+6 (a^2) (c^2)+12 a b (c^2)+6 (b^2) (c^2)+4 a (c^3)+4 b (c^3)+(c^4)//Factor

Hinweis:
Womöglich fragt sich der ein oder andere, warum Mathematica nicht gleich alle Ausdrücke vereinfacht. Der Grund liegt hierfür in der Tatsache, dass diese Vereinfachungen mitunter lange Rechenzeiten in Anspruch nehmen würden.

1.4 Tipps und Tricks

Arbeiten mit mehreren Notebooks

Es ist zu beachten, dass Mathematica nicht zwischen gleichzeitig geöffneten Notebooks unterscheidet. Vielmehr fasst Mathematica alle geöffneten Fenster als ein großes Ganzes auf. Vergibt man beispielsweise in Notebook 1 die Variabe a mit einem bestimmten Wert, so hat auch die Variable a in Notebook 2 den entsprechenden Inhalt. Diese Tatsache führt bei fortlaufenden Berechnungen schnell zu Problemen, so dass zu empfehlen ist, immer nur in einem Notebook zu arbeiten. (Oder entsprechende Disziplin bei der Vergabe von Variablen zu waren.)

Stellt man im normalen "Geschäftsbetrieb" in Mathemitca fest, dass Variablen bzw. Ausdrücke in der Hitze des Gefechts falsch belegt sind, hilft häufig das Löschen des Hintergrundspeichers von Mathematica über Evaluation -> Quit Kernel ->Local.

Mathematica schreibt "Y" statt "Z"

Verwendet man die vorgestellten Tastenkombinationen für mathematische Operatoren, so kommt es ab und an vor, dass die regionale Tastaturbelegung unbewusst von DE auf EN gestellt wird. Dies kann den Nutzer (inklusive den Autor dieses Tutoriums) mitunter zur Weißglut bringen. Abhilfe hilft hierbei die Tastenkombination "Alt + Shift", um wieder die DE Belegung zu erhalten.

Verwendung des letzten Outputs

Mithilfe des Prozentzeichens % lässt sich im Notebook der jeweils letzte Output weiterverwenden. Beziehungsweise mit %% der vorletzte Output.

Letzter Wert

%

Vorletzter Wert

Letzter Wert

%%

Wiederholung der letzten Input-Zeile

Durch Ctrl + L kann man, wie bereits die Überschrift verrät, die letzte Input-Zeile wiederholen.

Das ist die letzte Input-Zeile

Das ist die letzte Input-ZeileDas ist die letzte Input-ZeileDas ist die letzte Input-Zeile

1.5 Übung macht den Meister

Um den Umgang mit Mathematica wirklich zu erlernen, hilft nur "den Stier bei den Hörnern zu packen". Versuchen Sie sich einfach selbst und ziehen die vorgestellten Beispiele in einem eigenen Notebook nach.

Um das Kapitel 1 abzurunden und Ihnen ein Feedback zu geben, ob die vorgestellten Inhalte auch "angekommen" sind, finden Sie unter www.cae.carstenkloehn.de im Kurs "Tutorium Mathematica" einen kleinen Test (10 Fragen), der nahzu alle Fertigkeiten, die in diesem Kapitel Gehör gefunden haben, abverlangt und testet.

Sobald Sie diesen Test erfolgreich absolviert haben, sind Sie bereit für Kapitel 2.

Der Autor wünscht viel Erfolg und Spaß bei der weiteren Arbeit mit Wolfram Mathematica.