我正在尝试在C#应用程序中实现反三角函数。显然,我不是在谈论简单的逆罪,cos和tan,因为这些都是由Math类提供的。我正在寻找的是秒,cosec和cotan的反转:
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)));
现在我的问题是我想要实现其中每个的反转但我似乎无法找到适当的反转的简单定义 - arcsec,arccsc和arccot - 我可以将其转换为C#代码。
所以我的问题是你能否(a)指出一个好资源的方向,或者(b)向我展示一些示例代码?
答案 0 :(得分:11)
当然你开玩笑:
asec(x) = acos(1 / x)
acsc(x) = asin(1 / x)
acot(x) = atan(1 / x)
: - P
答案 1 :(得分:0)
对于反余切,使用atan(1 / x)并不总是有效。例如,我需要做一个相当复杂的等式:
y = 0.25 * arccot((2.5x / 100000) - 2.1)+ 0.26
当实现atan(1 / x)解决方案时,当(2.5x / 100000) - 2.1为零时,它会导致中断,并且该点左侧的所有值都低于正确的值pi / 4
相反,使用这样的实现可以为所需的所有点提供确切的答案:
y = 0.25 *((pi / 2) - atan((2.5x / 100000)-2.1)+ 0.26
我建议你去desmos.com/calculator或其他一些图形工具并绘制实际的arccot函数,然后比较各种实现,以确保你得到你想要的所有值。