我试图在没有使用Math.sin(x)
的Java中实现正弦函数。所以我试图用泰勒系列来实现这一点。不幸的是,这段代码给出了错误的结果。在没有Math.sin功能的Java中实现Sine
如果你不知道泰勒级数是什么,看看:
下面的代码片段,我创建:
public static double sin(double a) {
double temp = 1;
int denominator = -1;
if(a == Double.NEGATIVE_INFINITY || !(a < Double.POSITIVE_INFINITY)) {
return Double.NaN;
}
if(a != 0) {
for (int i = 0; i <= a; i++) {
denominator += 2;
if(i % 2 == 0) {
temp = temp + (Math.pow(a, denominator)/Factorial.factorial(denominator));
} else {
temp = temp - (Math.pow(a, denominator)/Factorial.factorial(denominator));
}
}
}
return temp;
}
我不能发现我犯的错误。你做?
你期望什么样的结果,而你是怎么得到?你到目前为止做了哪些调试? –
为什么术语的数量取决于'a'的值?这与你提供的泰勒展开不一致。 – bradimus
问题出在'i <= a' – talex