Tag: 三角函数

java中的快速正弦和余弦函数

我知道Math.sin()和Math.cos()函数,但我想知道是否有一种方法可以创建(或使用已经存在的)更快的函数,因为我不关心精确定位准确性。 我正在寻求执行基本的sin或cos计算,并使其基本上尽可能快地执行。 简单地迭代西格玛几次比Math.sin()更快?

用法拉利方法找出四次方程的真根

我目前正试图用维基百科的法拉利方法解决一个四次方程式。 我想只检索真正的根,丢弃想象的根。 我的实现并没有为真正的根源带来好处。 我找不到公式中的错误。 我的CubicEquation按预期工作,我的双二次求解也是如此。 现在,我只是错过了法拉利的方法,但是我无法让它发挥作用! 这是我的class级: public class QuarticFunction { private final double a; private final double b; private final double c; private final double d; private final double e; public QuarticFunction(double a, double b, double c, double d, double e) { this.a = a; this.b = b; this.c = c; this.d = d; […]

找到两个轴承之间的角度

鉴于两个轴承,我如何找到它们之间的最小角度? 因此,例如,如果1个航向为340度而第二个航向为10度,则最小角度为30度。 我附上一张照片来表明我的意思。 我试过从另一个中减去一个,但由于圆圈的环绕效果而无效。 我也尝试过使用负度(180 – 359为-180到0),但是当试图计算正数和负数之间的角度时,它会搞砸。 我确信必须有一个更容易的方法,有很多if语句。 感谢您的帮助。 亚当 BTW。 这是一个导航问题,因此圆的半径是未知的。

在Java中使用“sincos”

在很多情况下,我不仅需要正弦,还需要相同参数的余弦。 对于C,在常见的unix m数学库中有sincos函数。 实际上,至少在i386上,这应该是单个汇编指令fsincos 。 sincos,sincosf,sincosl – 同时计算sin和cos 我想这些好处是存在的,因为在计算正弦和余弦时存在明显的重叠: sin(x)^2 + cos(x)^2 = 1 。 但是AFAIK尝试将其cos = Math.sqrt(1 – sin*sin)为cos = Math.sqrt(1 – sin*sin)并没有得到回报,因为sqrt函数的成本相似。 有没有办法在Java中获得相同的好处? 我想我要为double[]付出代价; 由于添加了垃圾收集,这可能使所有的努力都没有实际意义。 或者Hotspot编译器是否足够智能以识别我需要两者,并将其编译为sincos命令? 我可以测试它是否识别它,我可以帮助它识别这一点,例如确保Math.sin和Math.cos命令在我的代码中直接连续吗? 从Java语言的角度来看,这实际上是最有意义的:让编译器优化它以使用fsincos汇编调用。 从一些汇编文档中收集: Variations 8087 287 387 486 Pentium fsin – – 122-771 257-354 16-126 NP fsincos – – 194-809 292-365 17-137 NP Additional cycles required if […]

tan 45给了我0.9999

为什么tan 45 (弧度为0.7853981633974483)给我0.9999 ? 以下代码有什么问题? System.out.println(Math.tan(Math.toRadians(45.0)) ); 我不认为这里有任何错字。 那么这里的解决方案是什么?

Java BigDecimal三角法

我正在开发一个数学解析器,它能够像’5+b*sqrt(c^2)’一样评估字符串。 我正在使用ANTLR进行解析并取得良好进展。 现在我摔倒了Java类BigDecimal并且想:嘿,为什么不在这里考虑精度。 我的问题是Java API没有为java.lang.Math等BigDecimal提供三角函数方法。 你知道是否有像Apache Commons这样的好的数学库可以解决这个问题吗? 其他问题是如何实现幂方法,以便我可以用BigDecimal s计算4.9 ^ 1.4。 这可能吗? 关于数值计算的书籍请求也受到赞赏。