Technical Computing  & Technical Publishing mit Mathematica 5

The way the wold calculates

maryam . karbalai@additive - net . de

Initialize

Off[General::spell];
Off[General::spell1];
Get["Developer`"];
Get["Experimental`"];

AppendTo[$Path, 
        DirectoryName[
          ToFileName["FileName" /. 
              NotebookInformation[SelectedNotebook[]]]]];

PrintSparse[
        m_] := 
Module[{xd, yd, 
          mat}, 
xd = 
          Max[Part[m,  All, 1, 1]]; 
yd = 
          Max[Part[m, All, 1, 2]]; 
mat = 
          Table[0, {xd}, {yd}]; 
Map[(Part[
                  mat, #[[1, 1]], #[[1, 2]]] = #[[2]]) &, 
          m]; 
mat // 
          MatrixForm
]

<< DWS`Chart`
start = 1;
data1 = 
        Table[{i, start = start + Random[Real, {- .6, 1}] start/10}, {i, 
            0, 100}];
start = 1;
data2 = 
      Table[{i, start = start + Random[Real, {- .7, 1}] start/10}, {i, 
          0, 100}]; 
    dates = Table[DaysPlus[{1997, 1, 1}, i], {i, 0, 100}];
\(\(lc\  = \ 
        LineChart[{data1, data2}, {dates, dates}, 
          Ticks -> {{{1997, 2, 10}, {1997, 3, 23}}, Automatic}, 
          Names -> {{"Chart 1", { .4,  .4}}, {"Chart 2", { .85,  .15}, 1}}, NameLines -> {True, True}];\)\)
\(\(bc\  = 
        BarChart[{21.9, 15.8, 13.2, 11.1, 8.6, 6.2, 4.3, 2.8, 1.5, 
            1.3,  .7,  .5, 1.5,  .2, 
            10.6}, {"USA", "Großbritannien", "Deutschland", "Japan", "Frankreich", "Schweiz", "Italien", "Niederlande", "Hongkong", "Singapur", "Australien", "Sonstige Länder", "Genußscheine", "Wandelanleihen", "Bar und Sonstiges"}, \ Orientation -> Horizontal, 
          BarSize ->  .6];\)\)

Norm[x_] := (1/2) (Erf[(x/(Sqrt[2]))] + 1); 
    Norm[z_?NumberQ] := 
      N[0.5 (Erf[(z/(Sqrt[2]))] + 1)];
<< RealTime3D`

Merkmale von Mathematica

Mathematica ermöglicht die vollständige Berechnung, Simulation,  Analyse und Darstellung von technischen Problemstellungen in einer einheitlichen, plattformunabhängigen Arbeitsumgebung und wird deshalb als System für "Technical Computing" bezeichnet.

Wall Street Journal (Gautam Naik): "...crunch mind-numbing technical computations with the ease of using a calculator."

Was ist Technical Computing?

Technical Computing ist, was technische Experten und wissenschaftlich Arbeitende von einer integrierten Software erwarten in Bezug auf numerischer Rechenleistung, symbolischen Algorithmen, Grafik, Dokumentationsfähigkeit, Programmierbarkeit,...
....und...
eine umfassende Struktur, die alle Aspekte konsistent zusammenfügt.

Typische Projekte und reale Problemstellungen - in der Lehre, Forschung und Entwicklung - beinhalten normalerweise nicht nur einen Bereich.

Effizientes Arbeiten durch Integration in EINE Software

InfoWorld (Jerry Pournelle): "Mathematica has the potential to change the world of science at least as much as word processing has changed the world of writing"

Technical Computing mit Mathematica

Mathematica ist ein System für technisches Computing, dies beeinhaltet:

 ◆	Technische Berechnung 
		Numerik, Symbolik, Visualisierung, Programmierung
 ◆	Modellbildung,  Simulation und Rapid Prototyping 
		extrem schnelle numerische Routinen (Packed Array Technologie)
		Integration von FORTRAN und C
		automatische Codegenerierung mit MathCode C++
 ◆	Unterstützung von Internettechnologien
		HTML, MathML
		XML
		JAVA Integration
		.Net Integration
 ◆	Technische Dokumentation
		 interaktive Dokumente, 
		 TeX
		 voll programmierbare Dokumente
		 AuthorTool	 
 ◆	Präsentation
		Stylesheets mit Formatvorlagen, Grafiklayout, optionale
		Rechtschreibeprüfung, Slide Show
		
All das vereinigt Mathematica in einer plattformunabhängigen Umgebung

Benutzerschnittstelle => Notebook

Das System Mathematica besteht aus 2 Teilen, dem sog. Front End (graphische Benutzeroberfläche) und dem Kernel (Kern). Das Front End schickt Anfragen an den Mathematica Kern, der die eigentlichen Berechnungen ausführt, d.h. die Anfragen beantwortet und diese zur Darstellung an die Benutzeroberfläche zurückgibt.

Die vom Mathematica Front End erzeugten interaktiven elektronischen Dokumente heißen Notebooks. Die Notebook-Schnittstelle ist Teil der graphischen Benutzeroberfläche von Mathematica.

Mathematica Notebooks sind vollständig interaktive Dokumente, die Text, Tabellen, Formelsatz, Graphik, Töne, Berechnungen , Simulationen und Animationen in einem Benutzerinterface kombinieren.

Die meisten Textverarbeitungs-Eigenschaften des Front Ends wie Schriftart, Schriftstil, Größe, Farbe, Hintergrund-Farbe etc. sind unter dem Format Menü zu finden. Formeln wie  ∫(1/((x^5) - 1)) dx lassen sich problemlos als sog. InlineInput in Textzeilen einbetten. Neben den Zeichen auf der Tastatur gibt es noch Hunderte von Sonderzeichen und Symbolen wie z.B. Ø . Bequem für die Eingabe von Sonderzeichen ist es, die Paletten wie  CompleteCharacters  oder ({{InternationalCharacters . nb}}) zu. benutzen.

Traditionelle mathematische Schreibweise vs Computersprache

\(Die\ traditionelle\ mathematische\ Schreibweise\ ist\ nicht\ so\ präzise, \ 
    wie\ das\ manchmal\ angenommen\ wird . \ 
        In\ den\ meisten\ Fällen\ \ bedeutet\)
zum Beispiel der Ausdruck (a^(-1)) dasselbe wie(1/a). Der Ausdruck (sin^(-1))(x) bedeutet jedoch nicht dasselbe wie (1/sin)(x)=(x/sin) ; sondern er verkörpert vielmehr den Arkussinus von (x).

Traditionell  - 
wie in gedruckten Büchern aber mathematisch nicht eindeutig

(∫_a^b) (sin^(-1))(
          x) \[DifferentialD]x

Standard - aus den Paletten (mathematisch eindeutig)

(∫_a^b) ArcSin[x] \[DifferentialD]x

Inputform - die wie es der Computer verarbeitet

Integrate[ArcSin[x], {x, a, b}]

Programmierbare Oberfläche => Notebooks=>Paletten

Generierung einer Palette

Input:Create Table/..3x3

({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}})

Einsatz der fertigen Palette • Aktivieren Cell Properties->Active

({{Neues Notebook, Physikal .  Konstante}, {Chem . Elemente, Farbpalette}, {<< RealTime3D`, << Default3D`}, {10 Sin[x + Sin[y]], Punktdichte}, {3  D Grafik, Gitternetz}})

Kompliziertes Konzept oder Einfach und konsistent

Da wir alle nicht tagtäglich mit einem System wie Mathematica arbeiten, muß es klare und unverrückbare Regeln geben, die es einfach machen, uns an die Syntax des Systems zu "erinnern". Da geht es Ihnen nicht anders als uns.
Mathematica bietet wohldefinierte Regeln
( )			normale mathematische Bedeutung
{ }			kennzeichnet eine Liste, z.B. {1,3,4,3a,5b}
[ ]			ist die Klammer für die Funktionsargumente , z.B. Plot[Sin[x],{x,-3,3}]
[[]]			zum Indizieren
GroßKlein		einfachste GroßKleinSchreibung (ParametricPlot3D) sichert das weltweite 
			Verständnis und bewahrt vor kryptischen Abkürzungen
ParametricPlot3D[] 
ListPlot[] 
FinRoot[]

Hilfe mit Platzhaltern:

?*3D

?? Plot3D

?Plot

Befehle vervollständigen mit [Strg+k]

Plot3D[Sin[x y], {x, 0, 4}, {y, 0, 4}, 
        PlotPoints -> 30];

Öffnen der Datei Rechenbeispiele

Die Mathematica Benutzerschnittstelle

Das System Mathematica besteht aus 2 Teilen, dem sog. Front End (graphische Benutzeroberfläche) und dem Kernel (Kern). Das Front End schickt Anfragen an den Mathematica Kern, der die eigentlichen Berechnungen ausführt, d.h. die Anfragen beantwortet und diese zur Darstellung an die Benutzeroberfläche zurückgibt.

Die vom Mathematica Front End erzeugten interaktiven elektronischen Dokumente heißen Notebooks. Die Notebook-Schnittstelle ist Teil der graphischen Benutzeroberfläche von Mathematica.

Mathematica Notebooks sind vollständig interaktive Dokumente, die Text, Tabellen, Formelsatz, Graphik, Töne, Berechnungen , Simulationen und Animationen und andere Elemente in Form von Zellen miteinander kombinieren.

Die meisten Textverarbeitungs-Eigenschaften des Front Ends wie Schriftart, Schriftstil, Größe, Farbe, Hintergrund-Farbe etc. sind unter dem Format Menü zu finden. Formeln wie  ∫(1/((x^5) - 1)) dx lassen sich problemlos als sog. InlineInput in Textzeilen einbetten. Neben den Zeichen auf der Tastatur gibt es noch Hunderte von Sonderzeichen und Symbolen wie z.B. Ø . Bequem für die Eingabe von Sonderzeichen ist es, die Paletten wie  CompleteCharacters  oder ({{InternationalCharacters . nb}}) zu. benutzen.

Generierung einer Palette

Input:Create Table/..3x3

({{\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}, {\[Placeholder], \[Placeholder], \[Placeholder]}})

Einsatz der fertigen Palette • Aktivieren Cell Properties->Active

({{Neues Notebook, Physikal .  Konstante}, {Chem . Elemente, Farbpalette}, {<< RealTime3D`, << Default3D`}, {10 Sin[x + Sin[y]], Punktdichte}, {3  D Grafik, Gitternetz}})

Dokumentation

Macht Mathematica noch einfacher und ist als multimediales Hilfesystem angelegt.

Komplettes Handbuch im Hilfesystem die mathematische "Bibel"

FrontEnd ist jetzt dokumentiert

Message (Mathematica Systemmeldungen) sind dokumentiert

Präsentationen erstellen

Export des Notebooks in TeX oder XML
Neu in Version 5.0: AuthorTool
Neu in Version5.0: SlideShow Umgebung

Fallstudien

NMinimize

We now tackle a coin problem. We are given 143267 coins in pennies, nickels, dimes, and quarters, of total value $1256329, and we are to determine how many coins might be of each type. There are several ways one might set up such a problem in NMinimize. We will try to minimize the sum of squares of differences between actual values and desired values of the two linear expressions implied by the information above. For our search space we will impose obvious range constraints on the various coin types.

?NMinimize

SeedRandom[11111];
Timing[
      Table[{min, sol} = 
          NMinimize[{(((pennies + 5 nickels + 10 dimes + 25 quarters - 1256329))^2) + (((pennies + nickels + dimes + quarters - 143267))^2), {pennies, nickels, dimes, quarters} ∈ Integers, 
              0 ≤ pennies ≤ 1256329, 
              0 ≤ nickels ≤ (1256329/5), 
              0 ≤ dimes ≤ (1256329/10), 
              0 ≤ quarters ≤ (1256329/25)}, {pennies, 
              nickels, dimes, quarters}, 
            MaxIterations -> 400], {2}]]

We obtained several solutions and "near" solutions. This type of problem is one of constraint satisfaction (as was the first example). An advantage in working with these is that we know from the proposed solution whether it is valid; those are exactly the cases for which we get a value of zero, with all constraints satisfied.

SpeedUp rechenintensiver Funktionen durch Compile[ ]

Juliamengen haben mit Mandelbrotmengen zu tun. Es sind viele Iterationen mit komplexen Zahlen zu berechnen.

Uncompilierte Version:

julia[x_, y_, lim_, cx_, cy_] := 
   Module[{z, ct = 0},
	z = x + I y;
	While[Abs[z] < 2.0 && ct <= lim,
		z = z^2 + (cx + I cy);
		++ct];
	ct];

Timing[
DensityPlot[-julia[x,y,100,0.27334,0.00742],
	{x,-1.5, 1.5}, {y, -1.5, 1.5},
	PlotPoints->250,Mesh->False];]

Compilierte Version:

Verwendet maschinengenaue Zahlen (gerundete) statt beliebig genauer. Genauigkeit ist vom System abhängig. Die Berechnungen können vom Prozessor schneller verarbeitet werden.

julia2 = Compile[{x, y, lim, cx, cy}, 
   Module[{z, ct = 0},
	z = x + I y;
	While[Abs[z] < 2.0 && ct <= lim,
		z = z^2 + (cx + I cy);
		++ct];
	ct]];

Timing[
DensityPlot[-julia2[x,y,100,0.27334,0.00742],
	{x,-1.5, 1.5}, {y, -1.5, 1.5},
	PlotPoints->250,Mesh->False];]

Datenanalyse

(data  =  
          Import["C:\\Dokumente und Einstellungen\\Administrator\\Eigene \
Dateien\\Post\\Mma\\ralf\\RAR\\abgas.dat"])  //  Dimensions

ListPlot[{#[[1]], #[[4]]} &  /@  data,  
        PlotJoined  ->  True];

zeit  =  data[[ All, 1]]/100 - 0.01

ListPlot[{#[[1]], #[[4]]} &  /@  data,  
        PlotJoined  ->  True];

{#,  Min[data[[ All, #]]],  
          Max[data[[ All, #]]],   Length[ data[[ All, #]]],  
          Apply[ Plus,  data[[ All, #]]], 
          Apply[ Plus,  data[[ All, #]]] / 
            Length[ data[[ All, #]]]} &  /@  Range[6]

MitteQ[ x_ ]  :=  
      259 * 1.1  <  x[[2]]  <  367 * 0.9

MitteQ[ data[[1]]]

neu  =  Select[data,  MitteQ];

p1  =  
        ListPlot[{#[[1]], #[[2]]} &  /@  neu,  
          PlotStyle  ->  {RGBColor[1, 0, 0],  PointSize[0.015]},  
          DisplayFunction -> Identity];
p2  =  
        ListPlot[{#[[1]], #[[2]]} &  /@  data,  
          PlotJoined  ->  True,  
          DisplayFunction -> Identity];
p3  =  
        Plot[ {259 * 1.1 ,  367 * 0.9},  {x,  0, 3},  
          PlotStyle  ->  {RGBColor[0, 0, 1],  Dashing[{0.01}]},  
          DisplayFunction -> Identity];

Show[ p1,  p2, p3,  
        PlotRange  ->  {Automatic,  {250,  375}},  
        DisplayFunction -> $DisplayFunction];

Export["c:\\temp\\neu.dat", neu]

Reports Schreiben

obj = NotebookCreate[WindowSize -> {700, 640}];

NotebookWrite[obj, 
        Cell["Ergebnisse:", "Title"]];

graph = Plot[Sin[x], {x, 0, 2  Pi}];

ps = 
        Cell[GraphicsData["PostScript", DisplayString[graph], 
            DisplayFunction -> $DisplayFunction]];
NotebookWrite[obj, ps, After];

NotebookClose[obj];

Neu in Mathematica 5.0

Öffnen der Datei Newin5.0

Offene Java Integration mit J/Link 2.0 und Java Runtime Engine

Öffnen der Datei JavaBeispiel

Vollständige XML Einbindung für Import,Export und 
symbolische Manipulation

XML-Beispiel

Unterstützung von XHTML Export inklusive Stylesheets

Öffnen der Datei Newin5  .0

Neue Funktionen zu symbolischen Berechnungen

Öffnen der Datei Newin5  .0

Neue Generation numerischer Lösungsalgorithmen zur Berechnung der Differenzialgleichungen

Öffnen der Datei Newin5  .0

Integration von Microsofts .Net

Öffnen der Datei Newin5  .0

webMathematica und gridMathematica

webMathematica

gridMathematica

MDTools

Die Idee der e-learning Software MDTools ist,den Professor oder Lehrer im Unterricht zu unterstützen,ihn aber nicht zu ersetzen.MDTools ist ein palettenorientiertes Werkzeug zum Lehren und Lernen.Das MDTools Notebook dient dazu,dass die Studenten mitschreiben.Der Dozent verfasst mit dem Arbeitsblatt Übungen oder kleine Lerneinheiten,bzw.gibt seine Beispiele ein.Die integrierten MDTools Paletten geben dem Studenten genügend Möglichkeiten,die Hausübungen am PC nachzurechnen oder kleine Mathematikprojekte zu realisieren und im Hörsaal vorzustellen.MDTools umfasst 8 Paletten:

\(MDTools\ umfasst\ 8 \( \(Paletten\)\(:\)\(
\)\)\)

Plot  ■ Algebra ■ Lineare Algebra ■ Differentiation ■ Integration ■ Data Fitting ■ Normalverteilung ■Student  t-Test  ■(Chi^2)Test

Mehr als eine Million Anwender weltweit
Die Welt von Mathematica

Es gibt hunderte Bücher in 15 Sprachen überMathematica.

Es gibt mehrere Magazine zu  Mathematica.

Es existiert eine wachsende Bibliothek von professionellen, auf Mathematica basierenden Anwendungen.

Funktionenvielfalt im Web

http: // functions . wolfram . 
              com/

Integrale lösen im Web

http: // integrals . wolfram . 
              com/

Wolfram Research's Resource Library Zusammenstellung von Mathematica-bezogenem Material.

http: // library . wolfram . com/

Die Wolfram Research Mathematica web siteenthält tausende Seiten zu Mathematica;sie wird ständig aktualisiert.

www . wolfram . com