Gibt es eine stabilere Implementierung für die Kotangens-Funktion als Return 1.0/tan (x) ;?Stabiler Cotangent
Antwort
cot(x) = cos(x)/sin(x)
sollte in der Nähe von π/2 numerisch stabiler sein als cot(x) = 1/tan(x)
. Sie können das effizient implementieren, indem Sie sincos
auf Plattformen verwenden, die es haben.
Eine andere Möglichkeit ist cot(x) = tan(M_PI_2 - x)
. Dies sollte schneller als die oben genannten sein (auch wenn sincos
verfügbar ist), aber es kann auch weniger genau sein, weil M_PI_2
natürlich nur eine Annäherung der transzendenten Zahl π/2 ist, so dass der Unterschied M_PI_2 - x
nicht vollständig sein wird Breite einer double
Mantisse - in der Tat, wenn Sie Pech haben, kann es nur ein paar sinnvolle Bits haben.
Ok. Ich denke, das ist das Beste, was ich tun kann. Auch ich habe von Sincos erfahren, was ich zugeben muss, dass ich noch nie zuvor getroffen hatte! –
Ich erinnere mich nur an eine trigonale Identität, mit der Sie viel besser machen und meine Antwort bearbeiten können. – zwol
+1. Verwenden Sie auf jeden Fall tan (pi/2 - x). –
Ich nehme an, Sie haben ein Problem mit 1/tan ist, dass es bei Pi/2 undefiniert ist, wenn die Funktion Null zurückgeben soll? – MerickOWA
Doing die Inversion ist zweifelhaft, wenn in der Nähe von Pi/2 Ja ... Ich fragte mich, ob es einen besseren Weg, dies zu tun wäre. –