Не для всех условий работает интеграл
не рабоатет для 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