Я строю свою собственную функцию для вычисления косинуса как ряда Тейлора.К сожалению, код не будет выполняться для чисел> 1. Я знаю много других примеров этой проблемы, но для моих собственных знаний Java я хотел бы знать, в чем проблема.
public class Cosinus {
public static double cos(double x) {
double sum = 0.0;
for (int i = 0; i <= Double.POSITIVE_INFINITY; i++) {
double summand = (Math.pow(x, 2 * i) / fak(2 * i)) * Math.pow((-1), i);
if (Math.abs(summand) >= 0.001) {
sum += summand;
} else {
break;
}
}
return sum;
}
private static double fak(int i) {
int ergebnis = 1;
for (int count = 1; count <= i; count++) {
ergebnis = count * ergebnis;
}
return ergebnis;
}
public static void main(String[] args) {
System.out.println(cos(10.0));
}
}