| Diese Seite bietet Links zu jenen Algorithmen, die im Web von PS-Trainer demonstriert werden. Diese Sammlung ist subjektiv und erhebt keinerlei Ansprüche. |
Die Verwendung steht frei, insoferne nicht die Rechte anderer dabei verletzt werden,
erfolgt jedoch auf eigenes Risiko. Keine Garantie auf Sicherheit oder korrekte Programmierung ! |
Algorithmen |
|
|
Algorithmen sind "Rezepte" der Informatik: Eine Zusammenstellung
von Anweisungen, welche dem jeweiligen Zweck dienen. Einfache Beispiele kann man mit → Kalkulations-Programmen realisieren, für anspruchsvolle Aufgaben benötigt man jedoch → Programmiersprachen. |
Typische Algorithmen enthalten Rechnungen, Verzweigungen und Schleifen. Die angeführten Beispiele sind in unterschiedlichen Programmiersprachen erstellt, je nach dem 'historischen' Ursprung und einer sinnvollen Anwendung.. |
|
Im Internet und in Büchern findet man unzählige Algorithmen.
Nur die wenigsten davon sind allerdings unmittelbar praktisch verwendbar:
Bei der Umsetzung in eine Kalkulation oder in eine Programmiersprache,
spätestens bei ausgiebigen Tests versagen die meisten.
Einzig jene Funktionen, die fix im Liefer-Umfang von Software enthalten sind,
sind einigermaßen verlässlich. Nachfolgend eine Liste häufig gefundener Probleme. |
Für die in diesem Web vorgestellten Algorithmen wurde daher besondere Vorsicht
angewendet. Trotzdem kann es passieren, dass noch Fehler enthalten sind.
Hier gilt wie überall in diesem Web:
Die Anwendung aller Beispiele erfolgt auf eigenes Risiko !
|
Mathematische (physikalische, technische, ..) FormelnNur einfache Formeln lassen sich problemlos in Programme umsetzen. Integrale, komplexe Zahlen, Vektoren, .. erfordern spezielle Maßnahmen. Ein eigener Zweig (Numerische Mathematik) der Wissenschaft beschäftigt sich u.a. damit, symbolische Formeln mit realen Daten zu berechnen. Suchen sie nach numerischen Lösungen, Reihen-Entwicklungen, Polynomen, ...Werte-BereichViele Funktionen haben einen eingeschränkten Werte-Bereich, d.h. man darf sie nur mit bestimmten Argumenten verwenden. Wenn solche Funktionen in Algorithmen verwendet werden, dann ist der gesamte Algo anfällig für Fehler - Meist wird darauf nicht hingewiesen, nur in sehr seltenen Fällen werden diese Tatsachen korrekt berücksichtigt.• Bedingte Verzweigung: Ein guter Algo muss alle Sonderfälle erkennen, abfangen und getrennt behandeln. • Fehler: Manchmal ist es notwendig, einen Fehler mitzuteilen. Die meisten Algorithmen kümmern sich leider nicht darum und überlassen es z.B. dem Betriebssystem, mit einer Division durch 0 zurechtzukommen. Prüfen sie bei fremden und eigenen Algorithmen, ob Fehler auftreten können, und was dann passiert. Kulturelle Arroganz und Ignoranz• Geografie: Viele Algorithmen sind nur für die Nordhalbkugel der Erde ausgelegt, manche nur für westliche Länge von Greenwich. Suchen sie solche Algorithmen zum Vergleich auch in australischen oder neuseeländischen Webs.Zusätzlich gelten die 'trigonometrischen Warnungen': Vorsicht, wenn einzelne oder mehrere Argumente (Parameter) den Null-Meridian oder den Äquator überschreiten ! • USA Die USA verwenden auf vielen Gebieten andere als die international üblichen Normen. Selbst von den USA anerkannte Standards werden oft ignoriert. Nur wenige Firmen und BürgerInnen haben Kenntnisse von anderen Kulturen. Viele Daten, Formeln und Algorithmen verwenden ohne Warnung (!) die abweichenden US-Einheiten. Ein spezielles Problem ist der Software-Marktführer: In dessen Software werden Standards häufig ignoriert und torpediert. Sogar offensichtliche Fehler werden manchmal nicht ausgebessert, sondern zu einer Art von aufgezwungenem Standard deklariert. |
Trigonometrische Funktionen:Wenn solche Funktionen vorkommen, ist besondere Vorsicht geboten:• Einheiten: Für Menschen meist Grad, für Funktionen immer (!) das Bogenmaß (rad). • Richtungs-Angaben sind nicht einheitlich: Winkel werden (nur) in der Mathematik von der X-Achse entgegen dem Uhrzeiger angegeben. In allen praktischen Anwendungen (Astronomie, Kartografie, ..) werden Winkel von Nord (Y-Achse) in Richtung des Uhrzeigers angegeben. In der Informatik wird die Y-Achse oft umgedreht: Für Monitore und Grafik liegt der Ursprung in der linken oberen Ecke, Y-Werte nehmen nach unten (!) zu. • Fehler: Einige Funktionen ergeben bei bestimmten Winkeln Fehler. Die Winkel 0°, 90°, 180°, 270° und 360° muss man oft abfangen und getrennt behandeln. • Periode: In der Geometrie ist der Anstieg einer Geraden von 45° oder 225° äquivalent. Für praktische Anwendungen (z.B. Orientierung) besteht jedoch ein erheblicher Unterschied zwischen NO und SW, den man im Algorithmus abfangen und berücksichtigen muss. • 3D: Bei 3dimensionalen Systemen sind übliche Formeln aus Büchern und Internet nur selten brauchbar. Die meisten dieser Algorithmen haben einen eingeschränkten Anwendungs-Bereich. Beim Überschreiten der Grenzen (XY-Ebene, YZ-Ebene, Äquator-Ebene, ..) ergeben sich oft Fehler, im schlimmsten Fall unbemerkt falsche Werte. Dagegen hilft nur ausführliche Recherche, klug angelegte Tests, in manchen Fällen Drehung oder Spiegelung eines Systems, bis es wieder in den zulässigen Bereich fällt. • Fehlende Funktionen: In seltenen Fällen bietet ein System keine (XSLT) oder nicht alle (Basic-VBA) benötigten Winkelfunktionen: Man kann fehlende Funktionen → aus anderen berechnen oder mit → Iterationen komplett selbst berechnen. ♦ Details zu Trigonometrischen Funktionen Implementierung von Funktionen:Leider sind nicht alle in der Informatik verwendeten Funktionen normiert. Manchmal verhalten sich gleichnamige oder ähnliche Funktionen in verschiedenen Programmier-Sprachen teilweise unterschiedlich. Durch ungeprüfte Übernahme von Algorithmen in eine andere Umgebung entstehen Fehler, die sich oft über viele offenbar voneinander abgeschriebene Webseiten erstrecken.Deshalb werden u.a. die Beispiele dieses Webs nach Möglichkeit mit Zahlen-Beispielen demonstriert. Die Zahlen lassen sich leicht mit eigenen Programmen vergleichen. |
Ersatz für Konstanten und Formeln |
|
|
Die meisten Seiten des Kapitels
→ Algorithmen entstanden in leidvoller Erfahrung, auf der Suche nach
Funktionen, die von einer Software oder Programmiersprache
nicht unterstützt werden. Für die Angaben gibt es keine Garantie: Die Anwendung erfolgt auf eigenes Risiko. |
Im einfachsten Fall ist eine Funktion vorhanden, allerdings unter einem ungewöhnlichen Namen. Suchen sie daher nach alternativen englischen/deutschen Funktionsnamen und phantasievollen Abkürzungen. |
Konstanten
Kreiszahl
(Archimedes-Zahl, Ludolph-Zahl) Pi = π
Wenn ein Algorithmus davon abgeleitete Werte verwendet, wie z.B.
Pi/2, 3*Pi/2, sqrt(Pi), ...dann gibt man diese Werte als Konstanten vor und
vermeidet es, sie bei jeder Anwendung neu zu berechnen.
Pi = 4 * arctan(1) = 3.141592653589793238462643383... |
Euler-Zahl
e
e = exp(1) = 2.7182818284590452353602875... ♦ Details und Berechnung von Pi und e mit Reihen-Entwicklung. |
Logarithmus und ExponentialNatürlicher Logarithmus (ln, Basis=2), Dekadischer Logarithmus (log10, Basis=10) oder Logarithmus mit beliebiger Basis (log):
log10(x) = ln(x) / ln(10)
♦ Details und Berechnung mit
Reihen-Entwicklungln(10) = 2.30258509299405 logn(x) = ln(x) / ln(n) Trigonometrische FunktionenEine eigene Seite demonstriert die zahlreichen Stricke und Fallen bei der praktischen Anwendung der → Winkelfunktionen. Fehlende Funktionen kann man notfalls mit → Iterationen selbst berechnen. |
Spezielle Ganzzahlen-Funktionenwie z.B. zum Abschneiden oder Isolieren von Nachkomma-Stellen, zum Runden oder die Modulo-Funktion verhalten sich leider in verschiedenen Programmier-Sprachen durchaus unterschiedlich.Diese Funktionen werden oft verwendet, ihre Unterschiede sind wenig bekannt. Das kann zu hartnäckigen Problemen bei der Übernahme von Algorithmen in andere Programmiersprachen führen. Leider enthalten auch viele Algo-Beispiele im Internet solche Fehler - sie wurden offenbar zu wenig getestet. ♦ Details dazu: Spezielle Ganzzahlen-Funktionen. |
|
|
Algo-Sammlungen:Association for Computing Machinery (ACM) - Collected Algorithms (Calgo)GNU Scientific Library (GSL) Hope College - Collection of Algorithm Animations (CCAA) NetLib / Toms NIST - Dictionary of Algorithms Numerical Recipes - Home, Cornell, TU Harburg - Früher kostenfrei, heute kommerziell. Man findet im Internet ältere, freie Versionen University of NewYork - Stony Brook Algorithm Repository, NetLib / Toms, University of Western Australia CIIPS - Algorithm Animation |
Genetische Algorithmen: Sourceforge - GAUL US-Navy Center for Research and AI - Genetic Algorithms Archive Geometrie & Triangulierung GeomPack - Barry Joe, Univ. Alberta, NewYork Univ, GNU Triangulated Surface Library Daten:
Wikipedia:
Mathe-Konstanten,
Physik-Konstanten,NIST: Konstanten |