Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#29

AW: tan() von Single, Double, etc.

  Alt 21. Nov 2017, 11:16
Was mich da einbischen wundert ist das du direkt auf 0.0 vergleichst, z.B.
  if x=0.0 then begin Ich versuche so etwas eigentlich immer das mit Epsilon abzufangen, speziell dann wenn die Eingaben aus anderen Rechen-Ergebnissen kommen.
Wann ist das Epsilon nötig, und wann nicht ?
Vielleicht bin ich wieder zu übervorsichtig und kann etwas einsparen
MM ist diese epsilon Sache meist falsch bzw unnötig. Für kleine x ist tan(x) ~ x und 0 ist nun mal das einzige Vielfache von 45 nahe 0, also kein Problem.

Zu Epsilon bzw zur Math-Funktion iszero. Ebenson wie tan(x) ~ x gilt zB sinh(x) ~ x und arcsinh(x) ~ x, aber was liefert Delphi: Für Delphi 6 ist wenigsten der sinh-Wert korrekt
Code:
sinh(1e-20) = 1e-20
arcsinh(1e-20) = 0
Ab Delphi 7 siehts dann so aus
Code:
sinh(1e-20) = 0
arcsinh(1e-20) = 0
Ich benutzte diese epsilons, wenn ich zB vergleichen will ob kleine Änderungen vorliegen, d.h. ob x+delta ~ x ist, und dann als Test in der Form if abs(delta)<= epsilon*abs(x) .

Edit: Sinnvoll sind die Epsilons sind auch bei irrationalen Nullstellen von Funktionen, zB eben beim Tangens die Nullstellen pi/2 + n*Pi des Cosinus.

Geändert von gammatester (21. Nov 2017 um 11:24 Uhr)
  Mit Zitat antworten Zitat