2010-09-17 39 views
17

Có triển khai ổn định hơn cho hàm cotang hơn là trả về 1.0/tan (x) ;?Cotangent ổn định

+0

Tôi cho rằng bạn đang gặp vấn đề với 1/tan là không xác định tại pi/2 khi hàm sẽ trả về 0? – MerickOWA

+0

Làm đảo ngược là tinh ranh khi gần pi/2 có ... Tôi đã tự hỏi nếu có một cách tốt hơn để làm điều này. –

Trả lời

36

cot(x) = cos(x)/sin(x) phải ổn định về số lượng gần với π/2 hơn cot(x) = 1/tan(x). Bạn có thể thực hiện điều đó một cách hiệu quả bằng cách sử dụng sincos trên các nền tảng có nó.

Khả năng khác là cot(x) = tan(M_PI_2 - x). Điều này sẽ nhanh hơn so với ở trên (ngay cả khi có sẵn sincos), nhưng cũng có thể kém chính xác hơn, bởi vì M_PI_2 tất nhiên chỉ xấp xỉ số siêu việt π/2, vì vậy sự khác biệt M_PI_2 - x sẽ không chính xác cho toàn bộ chiều rộng của double mantissa - trên thực tế, nếu bạn không may mắn, nó có thể chỉ có một vài bit có ý nghĩa.

+0

Ok. Tôi đoán đây là điều tốt nhất tôi có thể làm. Ngoài ra tôi đã học về sự chân thành, mà tôi phải thừa nhận tôi chưa bao giờ gặp trước đây! –

+2

Chỉ cần nhớ danh tính trig cho phép bạn làm tốt hơn và chỉnh sửa câu trả lời của tôi. – zwol

+4

+1. Chắc chắn sử dụng tan (pi/2 - x). –

Các vấn đề liên quan