Digitalen Fehler abschätzen

01/05/2010 - 13:00 von Markus Gronotte | Report spam
Hallo zusammen,

In einer Simulationssoftware wird ein Durchschnittswert
aus 1000000 Werten vom Typ Extended* berechnet.

Dazu werden die 1000000 Werte addiert
und anschließend durch 1000000 geteilt.

Die Werte liegen alle relativ gleich verteilt
zwischen -1*10^22 und 1*10^22 (Gravitation in Newton).
Allerdings sind sie nicht zufàllig verteilt, sondern
bilden einen Verlauf einer Kurve nach.

Was ich mich jetzt frage ist:

Wie exakt ist der Durchschnittswert?
Wie errechnet man den digitalen Fehler bzw. wie groß ist der?

Das irritierende ist nàmlich:
Man kann auch statt 1000000 nur 10000 nehmen.
Die Fehlerschwankung scheint aber gleich zu bleiben.


Gruß,

Markus Gronotte


Extended:
3.6 x 10^-4951 .. 1.1 x 10^4932 (10 Byte groß)
Programmiersprache Delphi 7
 

Lesen sie die antworten

#1 Frank Buss
01/05/2010 - 13:27 | Warnen spam
Markus Gronotte wrote:

In einer Simulationssoftware wird ein Durchschnittswert
aus 1000000 Werten vom Typ Extended* berechnet.

Dazu werden die 1000000 Werte addiert
und anschließend durch 1000000 geteilt.

Die Werte liegen alle relativ gleich verteilt
zwischen -1*10^22 und 1*10^22 (Gravitation in Newton).
Allerdings sind sie nicht zufàllig verteilt, sondern
bilden einen Verlauf einer Kurve nach.

Was ich mich jetzt frage ist:

Wie exakt ist der Durchschnittswert?
Wie errechnet man den digitalen Fehler bzw. wie groß ist der?



Bei floating point Zahlen werden zur Addition die Exponenten auf dieselbe
Zahl gebracht und dann die Mantissen addiert. Man kann sich eine Zahl so
vorstellen: a*2^x, wobei a die Mantisse ist und x der Exponent. Um a*2^x +
b*2^y zu addieren, wird zunàchst der Exponent durch Multiplikation oder
Division eines Terms gleich gemacht, sodaß man dann z.B. (a+b*c)*2^x hat,
mit c=1/2^(y-x). Die Mantisse belegt bei deinem 10 Byte Format dann wohl
ca. 8 Bytes. Die Genauigkeit kann man somit abschàtzen, indem man die die
Größenordnungen zwischen den Zahlen betrachtet. Also qualitativ gesagt, bei
8 Bytes Mantisse wàren das ca. 19 signifikante Stellen im Dezimalsystem,
sodaß wenn deine zu addierenden Zahlen um 10 Größenordnungen abweichen, du
immer noch eine Genauigkeit von 9 Größenordnungen hàttest. Nimmt die Summe
Größenordnungen von 1*10^22 an (meinst du nicht eher 1*10^(-22) bei
Gravitationskràften?) und du addierst eine Zahl 1*10^2, dann wird sich die
Summe nicht àndern.

Frank Buss,
http://www.frank-buss.de, http://www.it4-systems.de

Ähnliche fragen