Algorithmen
Beispiel ein bestimmtes mathematisches Verfahren, durch die Bibliothek angeboten werden. Ein wichtiger Aspekt ist auch die technische Kompatibilität bzw. Integrationsfähigkeit in die eigene Anwendung. Für .NET-Anwendungen ist es optimal, wenn die Bibliothek ebenfalls unter Verwendung der .NET-Klassenbibliothek programmiert wurde. Es ist zwar möglich auf Bibliotheken der „alten“ Welt, über so genannten Unmanaged Code zuzugreifen; aber optimal ist das nicht. Für klassische Win32-Anwendungen wird das bekannte Konzept der Dynamic Link Library (DLL) verwendet. Eine fertige Bibliothek will der Entwickler in Form einer Blackbox nutzen, das heißt über eine definierte Schnittstelle sollen die Daten ausgetauscht werden. Die innere Funktionsweise ist dabei nachrangig. Wichtiger sind eine exakte und ausführliche Definition der Schnittstellen. Neben einer Beschreibung der Funktionen gehört eine Dokumentation der Parameter und Rückgabewerte dazu. Sie umfasst neben den Angaben zu den Datentypen auch mögliche Hinweise zu Wertebereichen. Das Wissen darüber ist wichtig, um keine unvorhersehbaren Ergebnisse und/oder Fehlermeldungen zu produzieren. Wird keine Überprüfung der Parameter von Seiten der Bibliothek durchgeführt, hat man als Entwickler sicherzustellen, dass nur zulässige Werte übergeben werden. Das ist insbesondere in den „Randbereichen“ der Wertebereiche der Parameter von Bedeutung. Ein Beispiel in der Dokumentation ist stets hilfreich. Zwei mathematisch orientierte Bibliotheken für .NET-Anwendungen sind IMSL C# [1] und ILNUMERICS [2]:
IMSL C#: Hauptanwendungsgebiet der Bibliothek sind Softwareentwicklungen, in denen Auswertungen von Daten mathematische und statistische Funktionen benötigen. Eine graphische 2-D-Darstellung der Ergebnisse eröffnet weitere Möglichkeiten. Anwendungsgebiete finden sich in der Forschung und in der Industrie. Integrierte Funktionen sind beispielsweise mathematische Methoden, finanzmathematische und statistische Berechnungen, Methoden zur Datenauswertung (Data Mining) und zur grafischen Visualisierung (Diagramme).
ILNumerics: Diese Bibliothek richtet sich an Programmierer, die numerische Algorithmen implementieren. Als Programmiersprache wird seitens des Herstellers C# empfohlen. Prinzipiell sind aber alle .NET-fähigen Sprachen geeignet. ILNUMERICS.NET wird kostenlos unter dem LGPL-, die grafischen Bibliotheken unter dem GPL-Lizenzmodell bereitgestellt. Auf der Webseite befindet sich eine Onlinedokumentation als Einstieg in die Benutzung.
Das Fazit daraus: Vor der (teilweise sehr mühsamen) Eigenentwicklung lohnt sich eine umfassende Suche im Netz, ob es nicht bereits eine fertige Bibliothek gibt. Vielleicht haben andere Personen ein ähnliches Problem bereits gelöst und das Rad muss nicht neu erfunden werden.
1.1Fehlerquellen
Immer dann, wenn statt einer exakten Lösungsmethode ein numerisches Verfahren eingesetzt wird, oder auch bei bloßer Verarbeitung von Kommazahlen, muss man über mögliche Fehlerquellen der Berechnung nachdenken. Unmittelbar entstehen dadurch Fehler, dass statt der exakten Werte (z. B. für die Kreiskonstante π) endliche Dezimalbrüche eingesetzt werden. In Frage kommen Datentypen wie Double oder Float . Folgendes kleines Beispiel verdeutlicht dieses: Für viele Berechnungen werden die trigonometrischen Funktionen wie Sinus oder Kosinus benötigt. Bekanntermaßen beträgt der exakte Wert der Sinusfunktion für die Zahl π (bzw. einem Winkel von 180°) Null , also Sin(π) = 0 . Diese offensichtliche Klarheit kann bei einer Berechnung mit dem Computer schon zu Problemen führen. Wird statt π eine (vermeintlich hinreichende) Näherung von zum Beispiel 3,14159 eingesetzt und aus dieser Zahl der Sinuswert errechnet, so ergibt sich eine Abweichung. Beinhaltet die Rechenvorschrift darüber hinaus eine Multiplikation, kommt es zu einer Vergrößerung des Fehlers. Soll auf der Basis des Ergebnisses eine Prüfung durchgeführt werden (Listing 1, oberer Teil), so wird der eigentliche Programmabschnitt nicht ausgeführt, weil die If -Abfrage kein positives Ergebnis liefert. Nur in Ausnahmefällen wird die Berechnung den exakten Wert ergeben.
if (Ergebnis == Sollwert)
{
// Code, wenn die Prüfung richtig war }
else
{
// alternativer Quellcode } // verbesserte Prüfung, unter Beachtung der Toleranzgrenze If (Math.Abs (Ergebnis - Sollwert) < Toleranzgrenze)
{
// Code wenn die Prüfung richtig war }
else
{
// alternativer Quellcode }
Listing 1
Somit
Weitere Kostenlose Bücher