2010-01-06 42 views
5

Tôi đang cố gắng thực hiện các hàm lượng giác ngược trong ứng dụng C#. Rõ ràng là tôi không nói về tội lỗi nghịch đảo đơn giản, cos và tan thấy khi tất cả đều được cung cấp bởi lớp Toán. Những gì tôi đang tìm kiếm là phần tử nghịch đảo cho giây, cosec và Cotan:Thực hiện các hàm lượng giác nghịch đảo trong C#

Func<double,double> secant = (d => (1/Math.Cos(d))); 
Func<double,double> cosecant = (d => (1/Math.Sin(d))); 
Func<double,double> cotangent = (d => (Math.Cos(d)/Math.Sin(d))); 

Bây giờ vấn đề của tôi là tôi muốn thực hiện các phần tử nghịch đảo của mỗi nhưng tôi dường như không thể tìm thấy một định nghĩa đơn giản của các inverses thích hợp - arcsec, arccsc và arccot ​​- mà tôi có thể biến thành mã C#.

Vì vậy, câu hỏi của tôi là bạn có thể (a) chỉ cho tôi theo hướng của một nguồn lực tốt hoặc (b) chỉ cho tôi một số mã ví dụ cho điều này?

+1

Bạn đã kiểm tra MathWorld cho các công thức cho các bản in mà bạn muốn? –

+1

Wikipedia, tất nhiên. –

+0

Tùy thuộc vào nhu cầu của bạn, bạn có thể không cần phải làm bất kỳ toán học nghiêm trọng nào để làm điều đó vì thế bạn không cần một 'định nghĩa'; bạn chỉ cần chuẩn bị một bảng tra cứu. –

Trả lời

11

Chắc chắn bạn đùa:

asec(x) = acos(1/x) 
acsc(x) = asin(1/x) 
acot(x) = atan(1/x) 

:-P

+1

+1, Khá nhiều: http://en.wikipedia.org/wiki/Inverse_trigonometric_functions – user7116

+0

Vâng nhưng nó không rõ ràng giữa các ngọn núi của các phương trình khác - http://en.wikipedia.org/wiki/Inverse_trigonometric_functions#Logarithmic_forms – RobV

+0

cũng nhớ thêm mã để tránh sự phân chia nổi tiếng bằng 0 – JosephDoggie

0

Đối với cotang nghịch đảo, sử dụng atan (1/x) sẽ không luôn luôn làm việc. Ví dụ, tôi cần phải làm một phương trình khá phức tạp:

y = 0,25 * arccot ​​((2.5x/100000) - 2,1) + 0,26

Khi thực hiện atan (1/x) giải pháp, nó kết quả trong thời gian nghỉ khi (2.5x/100000) - 2.1 bằng 0 và tất cả các giá trị bên trái của điểm đó dưới giá trị chính xác bởi pi/4.

Thay vào đó, việc thực hiện như vậy sẽ cung cấp câu trả lời chính xác cho tất cả các điểm cần thiết:

y = 0.25 * ((pi/2) - atan ((2.5x/100000) -2.1) + 0.26

Tôi sẽ đề nghị đi đến desmos.com/calculator hoặc một số tiện ích vẽ đồ thị khác và vẽ đồ thị hàm arccot ​​thực, sau đó so sánh các triển khai khác nhau để đảm bảo bạn đang nhận được những gì bạn muốn cho tất cả các giá trị.

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