Forum:  Numerik & Optimierung
Thema: Signifikante Stellen
Themen-Übersicht
ikarus90
Junior
Dabei seit: 26.09.2014
Mitteilungen: 6
Aus:
Themenstart: 2020-09-20 14:21

Hallo zusammen,

ich habe eine etwas blöde Frage vermute ich, deshalb verzeiht mir bitte;)

Ich habe einen Mathematica Code bei dem ich mehrere numerische Berechnungen durchführe. Sowohl die Größen, die ich dem Code als anfänglichen Input gebe, als auch mehrere Größen, die ich an mehreren Zwischenschritten nochmals einfüge haben unterschiedlich lange Nachkommastellen.
Ganz am Schluss meiner Berechnung bekomme ich eine Zahl heraus.

Wie finde ich heraus wie viele Nachkommastellen ich bei dieser Zahl behalten kann? Ist es durch die Input Größen bestimmt oder durch den Code selbst?

Cheers,
ikarus


Kitaktus
Senior
Dabei seit: 11.09.2008
Mitteilungen: 6598
Aus: Niedersachsen
Beitrag No.1, eingetragen 2020-09-20 16:08

Das hängt defacto sowohl von der Auflösung der Eingabegrößen als auch vom Algorithmus (also vom Code) ab. Darüber hinaus ist noch das intern verwendete Zahlenformat relevant und in vielen Fällen auch die Eingangsgrößen selbst.
Ein Beispiel:
Möchte man $(1+x)^2-1$ berechnen (mit $|x|<<1$), dann erhält man bei naiver Rechenweise (also so wie es da steht) einen Fehler in Größenodnung des Maschinen-Epsilons. Das ist grob gesagt der kleinste positive Wert $\varepsilon$, für den im gewählten Zahlenformat $1$ und $1+\varepsilon$ verschieden sind.
Rechnet man stattdessen $2x+x^2$, so erhält man einen Fehler in Größenordnung von $2x\varepsilon$. Für sehr kleine $x$ ist das erheblich besser als der erste Ansatz.

Die Berechnung der signifikanten Stellen ist nicht ganz trivial.
Typischerweise geht man dabei immer über den absoluten / relativen Fehler.
Für die Grundrechenarten gelten folgende (vereinfachten) Regeln:

Bei einer Addition oder Subtraktion addieren sich die absoluten Fehler.
Bei einer Multiplikation oder Division addieren sich die relativen Fehler.

Während man bei Addition und Subtraktion den absoluten Fehler bestimmen kann, wenn man nur die Auflösung (bzw. absoluten Fehler) der Eingangsgrößen kennt, benötigt man für den relativen Fehler zusätzlich die _Größe_ der Eingangsgrößen. Selbst wenn man weiß, dass $a$ und $b$ beide eine absolute Genauigkeit von $10^{-100}$ haben, kann man über die Genauigkeit von $a/b$ keine Aussage treffen. Die kann beliebig schlecht sein, wenn $b$ betragsmäßig sehr klein ist.

Wie sieht denn Dein Problem konkret aus?


ikarus90
Junior
Dabei seit: 26.09.2014
Mitteilungen: 6
Aus:
Beitrag No.2, vom Themenstarter, eingetragen 2020-09-21 12:43

Danke für die Antwort. Mein Problem, bzw. den Code im Detail zu erklären würde hier vrmtl. den Rahmen sprengen. Aber ich versuche es mal in Worte zu fassen:

Ich starte mit einer Gleichung, die von 5 Größen abhängt (W,V,g,Y,i). Ich benutze diese Gleichung um mit Hilfe von ContourPlot und einer anschließenden Interpolation W(V) zu finden. Ich mache diesen Schritt für unterschiedliche Werte für die anderen Variablen, zB. g=0.01, i=1000, Y=0.1.
In der Gleichung kommen aber auch Koeffizienten vor, die unterscheidlich lange Nachkommastellen haben, wie zb. 1.15*10^(-11) und 60.1.

Als nächstes benutze ich das so gewonnene W(V) um zwei andere Gleichungen gleichzusetzen und das V zu extrahieren, welches diese Gleichsetzung realisiert (beide Gleichungen haben wieder andere Koeffizienten).
Das so gewonnene V benutze ich um die finale Größe in die ich eigentlich interessiert bin auszurechnen (welche von V,W,g abhängt). Meine Frage ist jetzt wieviele Nachkommestellen ich bei der Endgröße behalten kann.


haribo
Senior
Dabei seit: 25.10.2012
Mitteilungen: 2584
Aus:
Beitrag No.3, eingetragen 2020-09-21 15:33

bei nur 5 grössen kannst du es doch einfach ausprobieren indem du nacheinander an jede ne 1 hängst und schaust welche das ergebnis am weitesten links verändert...

g=0.01, i=1000, Y=0.1
g=0.011, i=1000, Y=0.1
g=0.01, i=1001, Y=0.1  (fals i keine variable ist, natürlich weglassen)
g=0.01, i=1000, Y=0.11

bei g*i/Y wären die ergebnisse:

100,00
110,00
100,10
90,91


sowohl g als auch Y verändern die zweite stelle vor dem komma, also sind im ergebniss dann alle ziffern dahinter (auch die erste zahl vorm komma!) sicher nicht mehr significant

ansich müsste man dann schreiben: g*i/Y=100 (+/-10)

bei deinem beispiel dürfte die interpolation die genauigkeit beeinflussen,




Dieses Forumbeitrag kommt von Matroids Matheplanet
https://https://matheplanet.de

Die URL für dieses Forum-Thema ist:
https://https://matheplanet.de/default3.html?topic=249484=110
Druckdatum: 2020-11-24 13:02