C# 用c语言实现三角反函数#

C# 用c语言实现三角反函数#,c#,trigonometry,inverse,C#,Trigonometry,Inverse,我试图在C#应用程序中实现反三角函数。很明显,我不是在说简单的逆sin,cos和tan,因为它们都是由数学课提供的。我要找的是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 =

我试图在C#应用程序中实现反三角函数。很明显,我不是在说简单的逆sin,cos和tan,因为它们都是由数学课提供的。我要找的是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)));
Func正割=(d=>(1/Math.Cos(d));
Func余割=(d=>(1/Math.Sin(d));
Func余切=(d=>(Math.Cos(d)/Math.Sin(d));
现在我的问题是,我想实现每一个倒数,但我似乎找不到合适的倒数的简单定义——arcsec、arccsc和arccot——我可以把它们转换成C代码

所以我的问题是,你能不能(a)为我指出一个好资源的方向,或者(b)给我看一些这方面的示例代码?

你肯定是在开玩笑:

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

:-p

对于反余切,使用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函数,然后比较各种实现,以确保所有值都符合您的要求。

您是否查看了MathWorld中的公式以获得所需的反数?根据您的需要,您可能不需要执行任何操作我花了很长时间在维基百科上,Chris刚刚发布的公式并不明显,如果他们在allI那里,我会因为没有应用基本代数而感到有点愚蠢:-(+1,用于平衡一个好问题的反对票。是的,但这在堆积如山的其他方程中并不明显-还记得添加代码以避免众所周知的零除问题