Программа для решения нелинейного уравнения

Задача: написать программу, которая будет решать нелинейное уравнение методом бисекции. Известно, что корень уравнения находится на промежутке от [0; 10] и он только один. Точность по Х дожна быть не меньше, чем 0.001. В решении использовать рекурсию и указанный выше метод бисекции.

Вопрос: Ниже программа, которая решает уравнение, указанное в методе func. В ее работе я понимаю все шаги кроме

if (end - start <= 0.001) return start;

Исходный код:

    public static double func(double x){
        return Math.cos(Math.pow(x, 5)) + Math.pow(x, 4) - 345.3 * x - 23;
    }

    // решить уравнение
    public static double  solve(double start, double end){
        if(end - start <= 0.001){
            return start;
        }

        double x = start + (end - start) / 2;

        if(func(start) * func(x) > 0){
            return solve(x, end);
        } else {
            return solve(start, x);
        }
    }

    public static void main(String[] args) {
        System.out.println(solve(0, 10)); 
    }

Заранее, спасибо


Ответы (1 шт):

Автор решения: afjord

Данная строка и обеспечивает точность в 0.001. Как я понял, end и start - промежуток в котором лежит корень уравнения, и если между ними менее 0.001, то останавливается расчёт,т.к. он отвечает заданному условию.

→ Ссылка