Почему этот ряд Тейлора не дает результат для чисел> = 1 - PullRequest
0 голосов
/ 21 января 2019

Я строю свою собственную функцию для вычисления косинуса как ряда Тейлора.К сожалению, код не будет выполняться для чисел> 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));  
    }
}
...