Программисты, помогите найти ошибку!! ! Очень надо!!!
Написал прогу для нахождения интеграла по формуле Симпсона. Шаг 0.1, а=-5, b=3. Выдает не тот ответ, что надо. Функция на картинке. Язык-С++. Среда-DevCPP
Код:
#include
#include
#include
using namespace std;
double func(double x)
{
double r;
r = pow(x,3)+(6*pow(x,2))-(0.02*exp(x));
return r;
}
double simpson( double (*Fx)(double), double a, double b, double h);
int main(int argc, char* argv[])
{
double I;
double a,b;
double h;
cout << "\n BBeDite napametpb|:\n" << endl;
cout << "\n Enter a = ";
cin >> a;
cout << "\n Enter b = ";
cin >> b;
cout << "\n Enter h = ";
cin >> h;
I = simpson( &func, a, b, h );
cout << endl << "I =" << I;
getch();
}
double simpson( double (*Fx)(double), double a, double b, double h)
{
double I, I2 = 0, I4 = 0;
I4 = Fx(a+h);
for(int k = 2; k <=b ; k += 2 )
{
I4 += Fx(a+(k+1)*h);
I2 += Fx(a+k*h);
}
I = Fx(a)+Fx(b)+4*I4+2*I2;
I *= h/3;
return I;
}