相切,条件

时间:2010-11-03 20:58:54

标签: c++ trigonometry conditional-statements

如何绕过未定义函数tan(x)的角度,即x!= Pi / 2 + k * PI?

我试图使用条件:

(x != 0) && (2 * x / M_PI - (int)(2 * x / M_PI ) ) < epsilon,

但它代表一个条件

x!= Pi / 2 + k * PI / 2.

Thanx求助。

3 个答案:

答案 0 :(得分:4)

可以使用相同的条件来确定cos(x)的哪个值为零。感谢这个奇妙的事实,您可以简单地执行以下操作(伪代码):

SafeTan(x)
{
    if (cos(x) < epsilon) { /* handle the error */ }
    else { return tan(x); }
}

编辑:正如In silico指出的那样,这是三角函数的结果:

tan(x) = sin(x) / cos(x)

在这种形式中,您可以看到未定义的值将出现在cos(x)= 0的任何地方,因为除以零。

答案 1 :(得分:0)

如何尝试

(x - PI/2) % PI != 0

将查找导致tan(x)未定义的x值。

答案 2 :(得分:0)

不要使用切线?它比使用(正弦,余弦)对更有效,但通常你可以使用(正弦,余弦)对而不用担心不连续性。

你正在使用什么切线?