C++Guns – RoboBlog blogging the bot

27.11.2012

Numerische Stabilität

Filed under: Allgemein — Thomas @ 11:11

Wie betrachten die numerische Stabilität von [1]
Diese Formel ist für x nahe Null numerisch instabil! Es findet eine Auslöschung bei der Rechnung statt.
Rechnen wir es von Hand für durch:



Im letzten Schritt passiert die Auslöschung. Zwar sieht das Ergebnis 1.25e-11 gut aus. Diese Zahl lässt sich auch problemlos als Gleitkommazahl darstellen, aber die Anzahl der signifikaten Stellen hat sich drastisch reduziert. Von Anfangs 13 auf drei herunter! So etwas passiert immer bei der Subtraktion von recht gleich großen Zahlen (mit gleichem Vorzeichen).

Beispiel mit :

 3.1415926 
-3.1415925
=0.0000001

So etwas will man möglichst vermeiden. Es gilt also die Formel umzuschreiben. Multipliziert man sie im Zähler wie im Nenner mit , also in einer Form wo das störende - durch ein + ersetzt worden ist, und kürz:

Im Bild kann man die beiden Funktionen direkt vergleichen. In der numerisch instabilen Funktion (der roten) treten schnell eine Art "diskretisierungs" Fehler auf. Es fehlen eben die Nachkommastellen ;)

numerische stabilitaet

[1] Beispiel aus der Vorlesung CE - Computer Engineering der TU Darmstadt

22.11.2012

Temperatur heute morgen außen in der Sonne

Filed under: Allgemein — Thomas @ 13:11

Ich hatt nix besseres zu tun...
temp_22.11.12

Mit gnuplot gemacht

set xlabel "time"
set ylabel "C"
set xdata time
set format x "%H:%M"
set timefmt x "%H:%M"
plot "temp.dat" using 1:2 with linespoints title "temp"

Powered by WordPress