vergiß nicht die undefinierten Stellen abzufangen.
der arccos von 0 ist 90° und nicht Error.
bin ich selber schon drauf reingefallen.
Ich benutze jetzt folgende Function :
Function Acos(X As Double) As Double
' Gibt den Arcuccosinus von x wieder -1< x > 1
Dim Wurzel As Double
Wurzel = Sqr(Abs(-X * X + 1))
' Die Absolutfunktion muß drin bleiben, da durch Rundungsfehler das Argument kleiner als 0 sein kann.
' Aus gleichem Grund ist auch die Variable Wurzel notwendig.
' Ein direkter Vergleich von x = 1 / x = -1 führt zum Fehler wenn x nahe an 1 liegt.
' Durch die Wurzelfunktion in Acos = Atn(-x / Wurzel) + 2 * Atn(1) wird der Nenner zu 0.
Select Case Wurzel
Case Is = 0
If X > 0 Then
Acos = 0
Else
Acos = -4* Atn(1)
End If
Case Else
Acos = Atn(-X / Wurzel) + 2 * Atn(1)
End Select
End Function
Gruß Andreas
------------------
[Diese Nachricht wurde von Rigobert am 28. Jul. 2004 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP