我試圖在沒有使用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