c++ - 切线,条件

标签 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.

感谢您的帮助。

最佳答案

相同的条件可用于确定 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 的任何位置,因为除以零。

关于c++ - 切线,条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091625/

相关文章:

javascript - 弹出模式不要跳动

mysql - 如果表 1 中的特定元素在表 2 中不存在,则从表 1 中选择

c++ - 仅适用一次的宏

c++ - 在 Linux Mint 上编译 Qt - OpenGL 功能测试失败

c++ - 如何将新函数添加到其实现在 C++ 中不可访问的类

algorithm - 如何计算圆周上的一个点?

c++ - 为什么当我从两个角度的和本身显示为 180 时减去 180 时得到错误答案?

c++ - STL 映射是否在插入时初始化基本类型?

c - 为什么我必须声明常量 Pi 值才能在 Math.h 中使用 Cos 函数?

mysql - 如果条件参数为空,则选择所有行