Forum: PC Hard- und Software Genauigkeit des Sinus in Excel


von H. S. (Gast)


Lesenswert?

Verwendet ihr manchmal Excel? Für Ingenieure und Informatiker ist das 
Programm bekanntlich verpönt, aber für einfache grafische Darstellung 
von Berechnungen ist es mitunter recht brauchbar.

Ich habe nun aber festgestellt, dass der Sinus nicht sonderlich genau zu 
sein scheint: Schon nach einigen Perioden ist man bei Vielfachen von 180 
Grad nicht mehr genau auf 0, da scheint sich was zu verschieben.

Ist das bekannt?

von Hans (Gast)


Lesenswert?

naja so einfach bekommst du in excel auch keine schönen grafiken... soll 
aber jetzt nicht das thema sein.

ich nehme stark an, dass das ein generelles genauigkeits problem von den 
verwendeten floating point operationen ist...

https://support.microsoft.com/de-de/help/78113/floating-point-arithmetic-may-give-inaccurate-results-in-excel

wie viel bist du von 0 entfernt? wenns irgendwo um 10e-5, 10e-6 ists 
definitiv so..

von Peter II (Gast)


Lesenswert?

H. S. schrieb:
> Ich habe nun aber festgestellt, dass der Sinus nicht sonderlich genau zu
> sein scheint: Schon nach einigen Perioden ist man bei Vielfachen von 180
> Grad nicht mehr genau auf 0, da scheint sich was zu verschieben.

die Frage ist doch wie du das berechnest?

von Helmut S. (helmuts)


Lesenswert?

Also nach 10 Perioden ist der Fehler von sin() bei -2.4503E-15. Da kann 
man nicht meckern. Die scheinen mit 64bit(double precision) zu rechnen.

EXCEL
=SIN(3600/180*4*ATAN(1))
-2.4503E-15


Gnu-Octave
>> sin(3600/180*4*atan(1))
ans =  -2.4492e-015

von H. S. (Gast)


Lesenswert?

Den Vergleich verstehe Ich nicht. Ich rechne =SIN(5*3,1415962) = 2E-5.

von Possetitjel (Gast)


Lesenswert?

H. S. schrieb:

> Den Vergleich verstehe Ich nicht.
> Ich rechne =SIN(5*3,1415962) = 2E-5.

Das ist nicht Dein Ernst?!

Excel ist schuld, weil Du einen falschen Wert für Pi
verwendest?

von Helmut S. (helmuts)


Lesenswert?

H. S. schrieb:
> Den Vergleich verstehe Ich nicht. Ich rechne =SIN(5*3,1415962) = 2E-5.

4*atan(1) = pi

Gnu-Octave
>> 4*atan(1)
ans =  3.14159265358979


Ich sehe gerade in EXCEL gibt es ein fertiges PI().

=SIN(3600/180*PI())

-2.4503E-15

: Bearbeitet durch User
von fft (Gast)


Lesenswert?

...und ein auch nur halbwegs brauchbarer Ingenieur kann Pi ohne 
Zahlendreher mindestens 15 Stellen aufsagen...

Mal probieren:

3,14159265358979323

Geht doch.

von Christian K. (Gast)


Lesenswert?

Gibt in Excel auch ein PI()

SIN(5*PI()) ist bei mir 6.12574e-16

von H. S. (Gast)


Lesenswert?

Keine Ahnung wie das hier kommt. Richtig ist, dass Ich das PI mit zu 
wenigen Stellen eingetragen habe. Ich habe aber auch schon aufwändigeres 
mit der Funktion PI selber berechnen lassen. Kam trotzdem ein Offset 
rein.

Kann es sein, dass der mit Zwischenergebnissen rechnet?

von npn (Gast)


Lesenswert?

H. S. schrieb:
> Richtig ist, dass Ich das PI mit zu
> wenigen Stellen eingetragen habe.

...die auch noch falsch waren!
(3,1415962 statt 3,1415926)

von Helmut S. (helmuts)


Lesenswert?

H. S. schrieb:
> Keine Ahnung wie das hier kommt. Richtig ist, dass Ich das PI mit zu
> wenigen Stellen eingetragen habe. Ich habe aber auch schon aufwändigeres
> mit der Funktion PI selber berechnen lassen. Kam trotzdem ein Offset
> rein.
>
> Kann es sein, dass der mit Zwischenergebnissen rechnet?

Dann aber eher mit den Berechnungen davor siehe Beispiel.

=360*10-3600.1 +0.1

9.0955E-14

Aber auch da rechnet Gnu-Octave genau den gleichen Fehler.

von Jemand (Gast)


Lesenswert?

H. S. schrieb:
> Keine Ahnung wie das hier kommt. Richtig ist, dass Ich das PI mit
> zu
> wenigen Stellen eingetragen habe. Ich habe aber auch schon aufwändigeres
> mit der Funktion PI selber berechnen lassen. Kam trotzdem ein Offset
> rein.
>
> Kann es sein, dass der mit Zwischenergebnissen rechnet?

Bei Rechnungen mit Gleitkommazahlen exakte Ergebnisse zu erwarten sollte 
man sich tunlichst abgewöhnen, es liegt in der Natur der Dinge, dass das 
nicht klappt.

von H. S. (Gast)


Lesenswert?

Das ist schon klar, wobei manchmal schon auch exakte Berechnungen 
gebraucht werden. Normalerweise rechne Ich das mit einer Varianzrechnung 
durch.

Warum es bei manchen Berechnungen trotzdem klemmt, muss Ich nochmal 
schauen. Ich mache sicher nicht überall Tippfehler.

von fft (Gast)


Lesenswert?

H. S. schrieb:
> Warum es bei manchen Berechnungen trotzdem klemmt, muss Ich nochmal
> schauen. Ich mache sicher nicht überall Tippfehler.

Wie schon oben gesagt: es liegt in der Natur der Dinge. Float bietet 
einen großen Dynamikumfang aber nur begrenzte Genauigkeit. Auch bei 
double precision ist das nicht viel anders. Wenn du wirklich exakt 
rechnen möchtest, so musst du auf eine besser geeignete Darstellung 
wechseln. z.B. 128-bit fixed point mit passender Skalierung.

von Peter M. (r2d3)


Lesenswert?

H. S. schrieb:
> Verwendet ihr manchmal Excel? Für Ingenieure und Informatiker ist das
> Programm bekanntlich verpönt, aber für einfache grafische Darstellung
> von Berechnungen ist es mitunter recht brauchbar.

Ich bin kein Ingenieur und ich finde Excel toll, auch für mehr als 
"einfache grafische Darstellung von Berechnungen".
So, so, Excel ist also nur "recht brauchbar"?

H. S. schrieb:
> Ich habe nun aber festgestellt, dass der Sinus nicht sonderlich genau zu
> sein scheint: Schon nach einigen Perioden ist man bei Vielfachen von 180
> Grad nicht mehr genau auf 0, da scheint sich was zu verschieben.
>
> Ist das bekannt?

Das ist vollkommen normal. Das Schlüsselwort heißt Numerik und das 
Problem ist vermutlich der Excel-Benutzer! :)

H. S. schrieb:
> Den Vergleich verstehe Ich nicht. Ich rechne =SIN(5*3,1415962) = 2E-5.

Zum einen solltest Du besser =SIN(5*Pi()) rechnen um mehr gültige 
Stellen von Pi zu verwenden.

Der "Offset", wie Du ihn nennst, wird natürlich mit größerem 
Koeffizienten viel größer, weil der Fehlerterm wächst.
Bin kein Mathematiker, versuche das mal zu zeigen:

Die Pi()-Funktion in Excel weicht von der echten Zahl pi ab.
=> pi<> Pi()

Selbst wenn sin(pi)=0 ist, ist in Excel sin(pi())<>0!

Die Excel-Funktion Pi() ist nichts anderes als die Zahl Pi zuzüglich 
eines Fehlers e:

Pi()=pi+e

Dann ist sin( x*pi() ) = sin( x*(pi+e) )

Daran kann man erkennen: Für betragsmäßig große x wird das Argument um 
den Fehlerterm x*e verfälscht und dieser Fehler pflanzt sich in das 
Ergebnis der Sinusfunktion fort.

Beispiel:
Berechne in Excel sin(Pi()) und sin(1e6*Pi()). Mathematisch ist es 
dasselbe, numerisch aber eben nicht.

Heilung ist möglich!

Wenn Du Argumente im Gradmaß vorliegen hast, die Du in das Bogenmaß 
wandelst, solltest Du das Argument vorher in den Wertebereich von -360 
bis +360 normieren:

statt sin(winkel/180*Pi()) zu rechnen, rechne
sin(rest(winkel,360)/180*Pi())

Bei Argumenten im Bogenmaß gewinnt man meiner Meinung nach nichts, weil 
man für das Normieren des Arguments ja nur durch das Stummel-Pi() aus 
der Excel-Funktion dividieren kann, nicht aber durch die lange "echte" 
Zahl pi.

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Falls du Ingenieur bist, ist das Problem wohl eher, dass dazu kein 
Zahlenverständnis mehr notwendig scheint.

Eine Abschätzung der Genauigkeit und eine eigenständige Prüfung bei 
Tippfehlern(!)  könnte man von Ingenieuren erwarten.

Und darum ist Excel ein hervorragender moderner Rechenschieber, der für 
99,9% der Aufgaben eines Ingenieurs super ist.

von Ei der Daus (Gast)


Lesenswert?

Wie hoch ist der Klirrfaktor?

von Max M. (jens2001)


Lesenswert?

Peter M. schrieb:
> Bei Argumenten im Bogenmaß gewinnt man meiner Meinung nach nichts, weil
> man für das Normieren des Arguments ja nur durch das Stummel-Pi() aus
> der Excel-Funktion dividieren kann,

Ich nehme aber an, dass Exel genau das intern macht!
Wenn Exel den Sin intern in einer Reihe entwickelt macht es einfach Sinn 
das Argument klein (Pi/2 reicht weil sin/cos symstrien haben) zu halten 
damit die Reihe in vernüftiger Zeit konvergiert.
Falls Exel eine Tabelle benutzt macht es keinen Sinn sie größer als 0 - 
Pi/2 vorzuhalten.
Mann versucht also ALS INGENIEUR von vorn herein Argumente größer +/-Pi 
zu vermeiden.
Z.b. in dem mann nich einfach blauäugig aus 35,64 Umdrehungen ein 
Bogenmass von 111,966488568 erzeugt und erwartet das Exel daraus einen 
korrekten Sin macht.

von c-hater (Gast)


Lesenswert?

H. S. schrieb:

> Verwendet ihr manchmal Excel?

Ziemlich oft sogar.

> Für Ingenieure und Informatiker ist das
> Programm bekanntlich verpönt

Nur Idioten tun das. Richtige Ingenieure und Informatiker kennen die 
Fähigkeiten und Grenzen ihrer Werkzeuge...

> Ich habe nun aber festgestellt, dass der Sinus nicht sonderlich genau zu
> sein scheint: Schon nach einigen Perioden ist man bei Vielfachen von 180
> Grad nicht mehr genau auf 0, da scheint sich was zu verschieben.
>
> Ist das bekannt?

Ja. Es ist wohldokumentiert, dass Excel mit Gleitkomma in 
"single"-Auflösung rechnet. Jeder, den es überrascht, dass da 
gelegentlich nicht ganz das Erwartete rauskommt, ist ein Idiot, nicht 
wert, sich "Ingenieur" oder "Informatiker" zu nennen.

Mehr noch: auch wenn Excel mit "double" oder noch mehr rechnen würde: 
Auch dann kann man nie davon ausgehen, das immer exakt das Erwartete 
rauskommt. Das liegt einfach daran, das keins dieser Formate mit einer 
UNENDLICHEN Stellenzahl rechnet, denn das würde unendlich lange 
dauern. Blöderweise ist aber der Zahlenraum der rationalen Zahlen 
unendlich fein geteilt, weswegen es VÖLLIG SELBSTVERSTÄNDLICH ist, 
dass Fehler auftreten MÜSSEN.

Kompetente Ingenieure und Informatiker wissen das nicht nur (weil sie es 
in "Numerik" gelernt haben), sondern können sogar proaktiv 
Gegenmaßnahmen treffen. Z.B.: zu entscheiden, dass ein konkretes Problem 
mit der Rechengenauigkeit von Excel nicht hinreichend zuverlässig lösbar 
ist...

Das funktioniert im Prinzip wie im Handwerk, wo z.B. der Schlosser auch 
kompetent entscheidet, dass er mit einer Schlüsselfeile keinen 800er 
T-Träger sinnvoll getrennt bekommt, sondern dass dafür wohl die große 
Flex oder der Schneidbrenner das besser geeignete Werkzeug wäre...

Kompetenz heißt: Viele Werkzeuge beherrschen und das richtige für das 
gegebene Problem wählen...

von Torsten K. (Firma: TOKA) (avantasia)


Angehängte Dateien:

Lesenswert?

Mal eine Zusammenfassung dessen was als Lösungen gepostet wurde in 
LibreOffice.

Have fun...

von mn (Gast)


Lesenswert?

H. S. schrieb:
> Für Ingenieure und Informatiker ist das
> Programm bekanntlich verpönt


Die erstellen Ihre Tabellen auch noch mit Papier und Bleistift - einfach 
Lächerlich!

von Elektrofan (Gast)


Lesenswert?

> Blöderweise ist aber der Zahlenraum der rationalen Zahlen
> unendlich fein geteilt, ...

Zu allem Überfluss gibt es dann auch noch irrationale Zahlen,
solche wie "e", √(2), oder gar Pi(!).

von Johnny B. (johnnyb)


Lesenswert?

Jemand schrieb:
> Bei Rechnungen mit Gleitkommazahlen exakte Ergebnisse zu erwarten sollte
> man sich tunlichst abgewöhnen

Genauso ist es.
Daher benutzt man z.B. für Finanzanwendungen, welche genau sein müssen, 
den Datentypen "Decimal".

Hier eine schöne Abhandlung:
https://technet.microsoft.com/de-de/library/ms187912(v=sql.105).aspx

von Pif (Gast)


Lesenswert?

Jeder Computer hat zu wenig Speicher um Pi darstellen zu können.

von Thomas S. (doschi_)


Lesenswert?

für alle (hier) zu spät gekommenen:
die Stellen von PI wurde falsch von Hand eingetippt ...

von Peter M. (r2d3)


Lesenswert?

Hallo Torsten!

Torsten K. schrieb:
> Mal eine Zusammenfassung dessen was als Lösungen gepostet wurde in
> LibreOffice.
>
> Have fun...

Wenn Du die Effekte vergleichen willst, bietet es sich an, 
ausgezeichnete Werte zu nehmen, bei denen der Pi()-Term im Argument des 
Sinus nicht wegfällt.

Wir wissen: sin (180°)=0.
Berechne nun sin(180°) in Excel und addiere Vollkreise auf:
sin(180°+360°*n) (n ganzzahlig).
Da kann man schön sehen, wie der Fehler wächst.

Ich hätte da noch ein Beispiel für Dich, weiß nicht, ob das in Libre 
Office Basic so läuft:
1
Sub test()
2
    Dim x As Long
3
    Dim y As Double
4
    For x = 1 To 100
5
        y = y + 0.01
6
        Debug.Print y
7
    Next x
8
End Sub
Dimensionier' mal y als Single oder verlängere die Schleife!
Mit einer kleinen Code-Änderung, die auf die numerischen Effekte 
Rücksicht nimmt, zeigt y das gewünschte Verhalten.


Thomas S. schrieb:
> für alle (hier) zu spät gekommenen:
> die Stellen von PI wurde falsch von Hand eingetippt ...

Das geht komplett am Kern der Sache vorbei. :)

: Bearbeitet durch User
von Michael W. (Gast)


Lesenswert?

Mal davon abgesehen, dass sich der TO vertippt zu haben scheint, um 
Excel einen Fehler nachzuweisen ...

... und es auch irgendwo klar ist, dass das schlaueste Programm nicht 
beliebig genau rechnen kann ...

... macht es IMO doch irgendwie Sinn zu fragen, ob Excel für Ingenieure 
taugt und wofür.

Als Beispiel bringe Ich mal:

sin(2 - 3) = sin(2) * cos(3) - cos(2)*sin(3) = sin(-1)

Fehler im Bereich E-12. Das finde Ich doch schon mal gut.

von Waldo (Gast)


Lesenswert?

Also wenn ich rechne:

Sin((180+n*360)/2/pi())

Dann kommt etwas um 1e-16 für n=1 und 1e-14 für n=65.

Das ist vermutlich besser als ein 12bit Wert von einem
ADWandler bei dem 1-2 Bit flattern.

Waldo

von Waldo (Gast)


Lesenswert?

Quatsch:

Sin((180+360*n)/360*2*pi())

Waldo

von Peter M. (r2d3)


Lesenswert?

Waldo et alii,

ersetzt mal das n durch 10^n, dann sieht man den Zusammenhang zwischen 
Zehnerpotenz und Fehler besser.

von Waldo (Gast)


Lesenswert?

Für mich stellt sich eher die Frage, wann ich einen Winkel mit 10^16 
Grad verrechnen muß und genau den Nullpunkt treffen muss.
Wenn ich das in meiner Software brauche, dann muss ich womöglich anders 
programmieren.

Waldo

von Peter M. (r2d3)


Lesenswert?

Waldo schrieb:
> Für mich stellt sich eher die Frage, wann ich einen Winkel mit
> 10^16
> Grad verrechnen muß und genau den Nullpunkt treffen muss.
> Wenn ich das in meiner Software brauche, dann muss ich womöglich anders
> programmieren.
>
> Waldo

Es ging mir nur darum, das Fehlerwachstum aufzuzeigen.

von Waldo (Gast)


Lesenswert?

Ein Double hat eine Genauigkeit von 17 Stellen. Wenn ich 10^17 Grad 
haben will liegt die Genauigkeit bei 1 Grad. Der Fehler dürfte also bei 
180+/-1 Grad liegen.
Also:
Sin(1/360*2*pi())= 0,01745

Waldo

von H. S. (Gast)


Lesenswert?

Peter M. schrieb:
> Waldo et alii,
>
> ersetzt mal das n durch 10^n, dann sieht man den Zusammenhang zwischen
> Zehnerpotenz und Fehler besser.

Sowas meinte Ich z.B. ja,!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.