Die Integration von Mathematica in die bestehende IT-Struktur

Dipl.-Inform. Ralf Rosenberger, ADDITIVE GmbH

Wie kommen Sie vom Modell zum Produkt?

Einführung

Die Nützlichkeit des Computers wurde in den letzten Jahren vom 
reinen "Number Crunching" in den Bereich Algebra und Analysis stark 
erweitert. Insbesondere für die Bewertung und Modellierung von 
Derivaten ist Mathematica als "Rapid Prototyping" Werkzeug hilfreich.

\(TraditionalForm

    \`\(die\ grundlegenden\ mathematischen\ Operationen\ sind\ eingebaut; 

    \)\)

die Fähigkeit, Ableitungen und Stammfunktionen für 
einfache und komplexe Funktionen zu berechnen befreit Sie von der Handarbeit 
beim Berechnen der Greeks;

die Möglichkeit, symbolische mit numerischen Ergebnissen zu 
vergleichen;

die Visualisierung der Ergebnisse, und - hoffentlich - das grafische Erkennen 
möglicherweise vorhandener Fehler.

Zur Entwicklung einer fertigen Produktes sind weitere Schritte notwendig.

eine Oberfläche zu haben,  

    welche unabhängig vom Mathematica FrontEnd bedient 

      werden kann;

Testbenches aufzustellen und Vergleiche mit herkömmlichen 
Verfahren durchzuführen;

Zugriff auf die Daten zu haben und Ergebnisse 
zurückzuschreiben;

die Funktionen unabhängig vom Mathematica in eine Anwendung zu integrieren.

Anhand einer Fallstudie wird Schritt für Schritt aufgezeigt, 
wie Sie mit Mathematica von einem Modell zu einem fertigen Produkt gelangen.

Die Modellbildung mit Mathematica

Das Barrier Notebook zeigt, wie die im Artikel definierten Formeln in Mathematica 

          umgesetzt werden und wie Mathematica' s Fähigkeiten

           zur Visualisierung eingesetzt werden können, um Einblicke in das Verhalten der Modelle zu 

          gewinnen .

MathLink - die Schnittstelle zu externer Software

Aufruf von Mathematica aus externen Programmen, z.B. Excel, Datenbanken

Aufruf externer Programme aus Mathematica , z.B. MathCode C++

In Arbeit: dieMathLink to Java API  für technisches Web-Computing.

Mathematica Link für Excel

Microsoft Excel ersetzt das Mathematica FrontEnd. Alle Befehle 
können von Excel ausgeführt werden, Daten k
önnen übertragen werden.

Eingaben in Excel

Die Excel-Testbench für Barrier Optionen

Graphiken übertragen

Gemeinsamer Datenzugriff

Datenbankanbindung, z.B. Fame

FameLink für Mathematica ist Teil der ständig 
erweiterten Bibliothek von Programmverbindungen aus dem Angebot von Wolfram 
Research.  Diese Verbindungen verbessern die Vielseitigkeit von Mathematica indem Sie den Anwendern den Zugang zu Vorteilen von Third-Party Software 
ermöglichen.  FameLink stellt Mathematica Anwendern die Möglichkeit zur Interaktion mit Fame 
Datenbanken mittels einer Verbindung zum Fame host-level interface (HLI) zur 
Verfügung. FameLink erlaubt somit die Visualisierung und Verarbeitung von Fame Daten unter 
Verwendung der umfangreichen Werkzeuge Mathematica's.

Analog dazu kann Mathematica mittels MathLink mit beliebigen Datenbanken Daten austauschen. Fertige 
Lösungen existieren u.a. für Microsoft Access oder 
Informix Online.

MathCode C++

MathCode C++ ermöglicht es, die in der Mathematica Programmiersprache entwickelten Prototypen automatisch in schnell ausf
ührbaren C++ Quellcode zu übersetzen. Dabei werden 
die Vorteile Mathematica's mit den Vorteilen herkömmlicher Programmiersprachen 
kombiniert. Die Schlüsselfunktionen sind:

Automatisches Übersetzen von Mathematica Programmen in optimierten C++ Quellcode

Bis zu 5000-fache Beschleunigung der Berechnungen

Nahtloses Einfügen des compilierten Codes in C++, C und Fortran 
77

Optionales Erzeugen von eigenständigen C++ Programmen

Erweiterte Handhabung von Vektoren und Matrizen

Ein Beispiel: Gleichungssysteme nach dem Gauss-Eliminationsverfahren auflösen.

Speed-Up für die Barrier Optionen

Die Menge der Funktionen, die übersetzt werden 
können, enthält nicht die Erf Funktion. Deshalb 
ersetzen wir sie hier durch eine - grobe - sigmoide Näherung:

MyErf[x_] := 2*(1/(E^(-((4*x)/Sqrt[Pi])) + 1) - 1/2)

Plot[{Erf[x], MyErf[x]}, {x, -5, 5}, 

      PlotStyle -> {RGBColor[0, 0, 0], RGBColor[1, 0, 0]}];

Damit ergibt sich eine neue Funktion für die Normalverteilung, 
welche wir zur Modellierung der Barrier Optionen verwandt haben:

Norm[x_] := 1/2*(MyErf[x/Sqrt[2]] + 1); Norm[(z_)?NumberQ] =.

Jetzt können wir die Formel übersetzen und als externen C++ Code in Mathematica einbinden, um die Berechnungen zu beschleunigen.

Die Annäherung der Erf Funktion ist in kürze noch 
einfacher möglich. Die Umsetzung der InterpolatingFunction in 
MathCode C++ ist fast abgeschlossen. Sobald diese Funktionalität 
zur Verfügung steht genügt es, eine Tabelle mit 
Funktionswerten zu erzeugen, die den benötigten 
Definitionsbereich abdeckt, und diese Tabelle dann zu interpolieren:

func  =  

      Interpolation[ Table[ {x, Erf[x]},  {x, -5, 5, 0.001}]]

Das Ergebnis ist besser als die obige Näherung:

Plot[{Erf[x], MyErf[x],  func[x]}, {x, -5, 5}, 

      PlotStyle 

        -> {RGBColor[0, 0, 0], RGBColor[1, 0, 0],  RGBColor[0, 1, 0]}];

Darüberhinaus erzeugen viele numerische Funktionen in Mathematica, wie NDSolve etc., InterpolatingFunctions als Ergebnis. Somit k
önnen diese direkt in externen Code umgesetzt werden.

Das eigenständige Produkt

Dies ist die Header Information der übersetzten Funktion zur 
Berechnung von Delta:

double Global_TUpAndOutPutDelta ( double P_D_Treb, double P_D_Tp, 

    double P_D_Tk, double P_D_Th, double P_D_Tsd, double P_D_Tr, 

	double P_D_Tq,double P_D_Tt)

Diese Funktion kann nicht nur in Mathematica eingebunden werden, um die Berechnungen zu beschleunigen, sie kann von 
jedem beliebigen C / C++ Programm aus aufgerufen werden und ist ohne 
irgendwelche Mathematica DLL Dateien eigenständig lauffähig. Das Beispiel 
ist eine mit dem Microsoft Developer Studio erzeugte Mini-Anwendung, ein 
kleiner Taschenrechner, der Delta mittels unseres Modelles berechnet.

Fazit

Mathematica ist das ideale Werkzeug zum "Rapid Prototyping".

MathLink ermöglicht es, Mathematica in bestehende Anwendungen zu integrieren.

Mit MathCode C++ wird eigenständiger Quellcode erzeugt.

Die Kombination der Werkzeuge vereint deren Stärken!

Probieren Sie es aus!