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?
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?
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
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?
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
...und ein auch nur halbwegs brauchbarer Ingenieur kann Pi ohne
Zahlendreher mindestens 15 Stellen aufsagen...
Mal probieren:
3,14159265358979323
Geht doch.
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?
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.
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.
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.
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.
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.
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.
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.
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...
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!
> 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(!).
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
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
Subtest()
2
DimxAsLong
3
DimyAsDouble
4
Forx=1To100
5
y=y+0.01
6
Debug.Printy
7
Nextx
8
EndSub
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. :)
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.
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
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
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.
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
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,!