Помогите пожалуйста найти ошибку в алгоритме

  • Автор темы Lotti
  • Дата начала
L

Lotti

Гость
#1
И снова здравствуйте)
Как часть задачи, надо решить определенный интеграл методом симпсона. Но, к сожалению, он никак не хочет решаться правильно)) Хотя, в принципе функцию списывала с блок-схемы. Видимо неудачно списала, но ошибки найтти не могу(....Если не сложно, подскажите. что не так)
C++:
DWORD WINAPI M_Simpsona(LPVOID N)
{
name* N1=(name*)N;
ifstream in(N1->in);
double a,b,eps;
if(in.good())//считываем переменные и точность
{
in>>a;
in>>b;
in>>eps;
in.close();
}
else
return 0;
double x,h,s1,s2,s3,s;
int n,i;
s2 = 1;
h = 100;	
s = f (100,a,b)+f (0,a,b);
do
{
s3 = s2;
h = h/2;
s1 = 1;
x = h;
do
{
s1 = s1+2*f(x,a,b);
x = x+2*h; 
}
while (x<b);
s = s+s1;
s2 = (s+s1)*h/3;
x = (s3-s2)/15; 
}
while (x>eps);
ofstream out(N1->out);
out<<s;
out.close();
return 0;
}
double f(double x, double a, double b)
{
return ( sin(a*x) / (b+x*x) );
}
struct name
{
char* in;//имя входного файла
char* out;//имя выходного файла

};
вставить изображение блок-схемы я не смогла( подскажите пожалуйста, как это делается).....а пока вот, вроде бы получилось загрузить....
Посмотреть вложение ______________.doc

Подскажите пожалуйста, в каком место я ошибоась) Зарание спасибо)