Не для всех условий работает интеграл

не рабоатет для A=-2 B=6 n=3 summ2= должна быть 37.037 сверяю работу на https://math.semestr.ru/optim/simpson.php f(x)=x^3 Подскажите где проблема второй деть пытаюсь

public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("Введите координату А начала отрезка");
        double a = scan.nextDouble();
        System.out.println("Введите координату В конец отрезка");
        double b = scan.nextDouble();
        System.out.println("Введите введите число разбиений");
        double n = scan.nextDouble();
        table(a,b,n);
        integralSimpson(a,b,n);
    }

    public  static double f(double x){
        return x*x*x;
    }

    public  static void table(double a,double b,double n){

        double h = (b-a)/n;
        int count =0;
        for (double x=a;x<=b;x=x+h){
            System.out.println("x"+count+"="+x+"  y" + count + "=" + f(x));
            count=count+1;
        }

    }

    public static double integralSimpson(double a,double b,double n){

        double h = (b-a)/n;
        int count=0;
        double summ4 =0;
        double summ2 =0;

        for (double x=a;x<=b-(1*h);x=x+h){

            if(count%2!=0) {
                summ4 = summ4 + f(x);
            }
            count=count+1;
        }

        for (double x=a;x<=b-(2*h);x=x+h){

            if(count%2==0){
                summ2=summ2+f(x);
            }
            count=count+1;
        }

        



        double integralSimpson=(h/3*((f(a)+f(b))+4*summ4+2*summ2));
        System.out.println("");
        System.out.println("Интеграл методом Симпсона = "+integralSimpson);
        System.out.println(summ2);
        return integralSimpson;

    }

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

Автор решения: Aziz Umarov

так попробуйте

Совет - избегайте равенств при работе с вещественными числами.

public static double integralSimpson(double a, double b, double n) {

double h = (b - a) / n;

double summ4 = 0;
double summ2 = 0;


for (int count = 1; count < n; count++) {
  
  if (count % 2 != 0) {
    summ4 += f(a + count * h);
  } else {
    summ2 += f(a + count * h);
  }
}

double integralSimpson = h / 3 * (f(a) + f(b) + 4 * summ4 + 2 * summ2);
System.out.println("");
System.out.println("Интеграл методом Симпсона = " + integralSimpson);
System.out.println(summ2);
return integralSimpson;
}

Updated. Проверил на А= - 2 В=6 n=5 введите сюда описание изображения

и

table(-2, 6, 5); integralSimpson(-2, 6, 5);

вывод

Интеграл методом Симпсона = 250.33386666666672

86.91200000000002

→ Ссылка