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