Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define _A 0
#define _B 1
#define _N_UZ 8
double f(double x);
double gauss(double *x_arr, double *a_arr, FILE *f_out);
void main()
{
double x_arr[_N_UZ] = {-0.96028986,
-0.79666648,
-0.52553242,
-0.18343464,
0.18343464,
0.52553242,
0.79666648,
0.96028986};
double a_arr[_N_UZ] = {0.10122854,
0.22238103,
0.31370664,
0.36268378,
0.36268378,
0.31370664,
0.22238103,
0.10122854};
double integral;
FILE *f_out;
if ((f_out = fopen("out.txt","w"))==NULL)
{
fprintf(stderr, "\nCan't open output file!\n");
exit(1);
}
integral = gauss(x_arr,a_arr, f_out);
fprintf(f_out,"\nIntegral I = %2.8f\n", integral);
fclose(f_out);
return;
}
double f(double x)
{
return ((1/sqrt(1+x))*exp(-x));
}
double gauss(double *x_ptr, double *a_ptr, FILE *f_out)
{
double I = 0;
int j;
double k_1 = (_A+_B)/2., k_2 = (_B-_A)/2.;
for (j=0; j<_N_UZ; j++, a_ptr++, x_ptr++)
{
I += (*a_ptr) * f(k_1+k_2*(*x_ptr));
fprintf(f_out, "\nx=%2.8f a=%2.8f I=%2.8f", *x_ptr, *a_ptr, I);
}
I *= k_2;
return I;
}