/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static double f (double x) {
return Math.
sin(x
*x
+2*x
); }
{
Scanner in
= new Scanner
(System.
in);
double a = in.nextDouble();//Нижний и верхний пределы интегрирования (a, b), погрешность (eps).
double b = in.nextDouble();
double eps = in.nextDouble();
double I=eps+1, I1=0;//I-предыдущее вычисленное значение интеграла, I1-новое, с большим N.
for (int N
=2; (N
<=4)||(Math.
abs(I1
-I
)>eps
); N
*=2){ double h, sum2=0, sum4=0, sum=0;
h=(b-a)/(2*N);//Шаг интегрирования.
for (int i=1; i<=2*N-1; i+=2){
sum4+=f(a+h*i);//Значения с нечётными индексами, которые нужно умножить на 4.
sum2+=f(a+h*(i+1));//Значения с чётными индексами, которые нужно умножить на 2.
}
sum=f(a)+4*sum4+2*sum2-f(b);//Отнимаем значение f(b) так как ранее прибавили его дважды.
I=I1;
I1=(h/3)*sum;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgZG91YmxlIGYgKGRvdWJsZSB4KSB7CgkJCXJldHVybiBNYXRoLnNpbih4KngrMip4KTsJCgl9CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJU2Nhbm5lciBpbiA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJCgkJZG91YmxlIGEgPSBpbi5uZXh0RG91YmxlKCk7Ly/QndC40LbQvdC40Lkg0Lgg0LLQtdGA0YXQvdC40Lkg0L/RgNC10LTQtdC70Ysg0LjQvdGC0LXQs9GA0LjRgNC+0LLQsNC90LjRjyAoYSwgYiksINC/0L7Qs9GA0LXRiNC90L7RgdGC0YwgKGVwcykuCgkJZG91YmxlIGIgPSBpbi5uZXh0RG91YmxlKCk7CgkJZG91YmxlIGVwcyA9IGluLm5leHREb3VibGUoKTsKCQkKCQlkb3VibGUgST1lcHMrMSwgSTE9MDsvL0kt0L/RgNC10LTRi9C00YPRidC10LUg0LLRi9GH0LjRgdC70LXQvdC90L7QtSDQt9C90LDRh9C10L3QuNC1INC40L3RgtC10LPRgNCw0LvQsCwgSTEt0L3QvtCy0L7QtSwg0YEg0LHQvtC70YzRiNC40LwgTi4KCQkJCgkJZm9yIChpbnQgTj0yOyAoTjw9NCl8fChNYXRoLmFicyhJMS1JKT5lcHMpOyBOKj0yKXsKCQkJZG91YmxlIGgsIHN1bTI9MCwgc3VtND0wLCBzdW09MDsKCQkJaD0oYi1hKS8oMipOKTsvL9Co0LDQsyDQuNC90YLQtdCz0YDQuNGA0L7QstCw0L3QuNGPLgoJCQlmb3IgKGludCBpPTE7IGk8PTIqTi0xOyBpKz0yKXsgICAKCQkJCXN1bTQrPWYoYStoKmkpOy8v0JfQvdCw0YfQtdC90LjRjyDRgSDQvdC10YfRkdGC0L3Ri9C80Lgg0LjQvdC00LXQutGB0LDQvNC4LCDQutC+0YLQvtGA0YvQtSDQvdGD0LbQvdC+INGD0LzQvdC+0LbQuNGC0Ywg0L3QsCA0LgoJCQkJc3VtMis9ZihhK2gqKGkrMSkpOy8v0JfQvdCw0YfQtdC90LjRjyDRgSDRh9GR0YLQvdGL0LzQuCDQuNC90LTQtdC60YHQsNC80LgsINC60L7RgtC+0YDRi9C1INC90YPQttC90L4g0YPQvNC90L7QttC40YLRjCDQvdCwIDIuCgkJCX0KCQkJc3VtPWYoYSkrNCpzdW00KzIqc3VtMi1mKGIpOy8v0J7RgtC90LjQvNCw0LXQvCDQt9C90LDRh9C10L3QuNC1IGYoYikg0YLQsNC6INC60LDQuiDRgNCw0L3QtdC1INC/0YDQuNCx0LDQstC40LvQuCDQtdCz0L4g0LTQstCw0LbQtNGLLiAKCQkJST1JMTsKCQkJSTE9KGgvMykqc3VtOwoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oSTEpOwoJfQp9