5

我正在尝试在 C# 应用程序中实现反三角函数。显然,我不是在谈论简单的逆正弦、cos 和 tan,因为这些都是由 Math 类提供的。我正在寻找的是 sec、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)向我展示一些示例代码?

4

2 回答 2

11

你肯定在开玩笑:

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

:-P

于 2010-01-06T17:40:33.310 回答
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 函数,然后比较各种实现以确保您得到所有​​值的所需内容。

于 2015-03-27T01:47:10.793 回答