2010-09-17 5 views
17

Gibt es eine stabilere Implementierung für die Kotangens-Funktion als Return 1.0/tan (x) ;?Stabiler Cotangent

+0

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

+0

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. –

Antwort

36

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.

+0

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! –

+2

Ich erinnere mich nur an eine trigonale Identität, mit der Sie viel besser machen und meine Antwort bearbeiten können. – zwol

+4

+1. Verwenden Sie auf jeden Fall tan (pi/2 - x). –

Verwandte Themen