Praktische Einführung und Programmierung
Stefan Bosse
Universität Koblenz - Praktische Informatik
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik ::
Mathematik ist Algorithmik!
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik ::
Mathematik ist Algorithmik!
Das Lösen von mathematischen Problemen ist Algorithmik
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik ::
Mathematik ist Algorithmik!
Das Lösen von mathematischen Problemen ist Algorithmik
Das Lösen von mathematischen Problemen mit Computer Algorithmen ist seinerseits ein Problem!
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Mathematik
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Künstliche Intelligenz
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik
Man spricht von numerischen Algorithmen wenn diese basierend auf mathematischen Prinzipien und optional auf naturwissenschaftlichen Modellen "natürliche" Daten verarbeiten, also i.A. gemessene Daten.
numalg
Beziehung der Numerik zu anderen Bereichen:
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik
Das Ziel der Numerik ist die Konstruktion ökonomischer (effizienter) und stabiler Algorithmen. Speziell gilt es, mögliche Fehlerquellen zu berücksichtigen. Diese ergeben sich durch Modellierungsfehler, durch Fehler in den Eingangsdaten, durch Fehler im Algorithmus, und durch Diskretisierungsfehler in der Numerik.
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik: Anwendungen und Probleme
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik: Anwendungen und Probleme
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik: Anwendungen und Probleme
Da sich viele konstruktive Verfahren aus der Theorie nicht zur praktischen Durchführung auf Computern eignen (Numerik), erfordert für schwierige Probleme die Entwicklung guter numerischer Verfahren umfangreiche Kenntnisse und große Erfahrung.
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik: Fehleranalyse
Wir haben bei numerischen Problemen folgende Randbedingungen zu berücksichtigen:
algomat
Beim Ausführen von Rechnungen gibt es verschiedene Fehlerquellen
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik: Fehleranalyse
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Numerik und Zahlensysteme
Mathematisch können wir zwei Basismengen von Zahlen unterscheiden:
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Computer Zahlensysteme
Maschinenzahlen werden durch Datenbits repräsentiert (kodiert).
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Computer Zahlensysteme
Die digitalen Zahlen (Kodierung) d kann man in dezimale mit der gewichteten Summe umrechnen (Binärzahlensystem mit Basis b=2):
a=(−1)sm−1∑i=0di⋅bi
algomat
Zahlenbereich hängt von der Anzahl Bits ab (m). Für das Vorzeichen kommt noch ein Bit hinzu (oder der Zahlenbereich verringert sich). Es gibt keinen Rundungsfehler!
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Arithmetik
Es gibt die grundlegenden numerischen arithmetischen Operationen:
Die Reihenfolge von arithmetischen Operationen kann in der Numerik von elementarer Bedeutung sein. Top oder Flop! Vor allem bei Integer Zahlenarithmetik
a=1; b=10; c=100;x1 = (a/b)*cx2 = (a*c)/bprint(x1,x2)Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Arithmetik
Das Experiment (Hinweis: JavaScript verarbeitet alle Zahlen als Gleitkommazahlen, daher ist Umwandlung in Integer erforderlich)
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Arithmetik
a=(−1)sm−1∑i=0di⋅b−i+e
Eigenschaften verschiedener Datenformate bei Gleitkommazahlen
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Rundungsfehler
oder richtig ausgedrückt Diskretisierungsfehler bezüglich des Zahlensystems und deren Kodierung (da niemand explizit rundet)
Rundungsfehler, Über- und Unterlauf und "Not a Number NaN" können bei arithmetischen Operationen auftreten.
Die Diskretisierung von Integer Zahlen ist ohne Genauigkeitsverlust möglich, nur die Wertemenge ist begrenzt
Die Diskretisierung von reellen Zahlen ist i.A. immer mit Genauigkeitsverlust und einer Einschränkung der Wertemenge verbunden (also schon hier Rundungsfehler möglich)
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Rundungsfehler
Arithmetische Operationen wie Division können bei ganzen Zahlen zu erheblichen Rundungsfehlern führen (bis zu 100%), Addition und Multiplikation führen keine weiteren Rundungsfehler ein, können aber zum Überlauf bei Integer Zahlen führen!
Arithmetische Operationen können bei Gleitkommazahlen (aber nicht reellen) zu Rundungsfehlern führen (bis zu 1%), und es kann zum Überlauf kommen!
Der Klassiker in der Numerik: Ein Quotient wird Null obwohl es mathematisch eine Zahl ≠ 0 ergeben müsste.
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Funktionen und Schleifen
Rekursion
function fac(n) { if (n<2) return 1 else return n*fac(n-1)}
Schleife
y=1for(i=2;i<=n;i++) { y=y*i}
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Algorithmus 1: Berechnung von e
numalg pp 6
Es gibt viele verschiedene Möglichkeiten, um die Eulersche Zahl e numerisch zu approximieren. Nachfolgend führen wir vier verschiedene Varianten ein.
e=limn→∞(1+xn)n
für x=1 berechnen.
⇒ Grenzwerte können nicht direkt prozedural (iterativ) algorithmisch gelöst werden (deklarative und symbolische Methodik erforderlich). Nur endliche Approximation möglich!
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Algorithmus 1: Berechnung von e
n=100e=pow(1+1/n,n)print(e)
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Algorithmus 1: Berechnung von e
ex=∞∑n=0xnn!
für x=1 zu berechnen.
e=0;N=100function fac(n) { return n<2?1:n*fac(n-1) } for(n=0;n<=N;n++) { e=e+1/fac(n)}print(e)
Was ändert sich algorithmisch und bei der Laufzeit im Vergelich zu Methode 1?
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Algorithmus 1: Berechnung von e
Stefan Bosse - Algorithmen und Datenstrukturen - Modul B Numerische Algorithmen und Mathematik :: Algorithmus 1: Berechnung von e
numalg