Реферат: Расчет двойного интеграла при помощи метода Симпсона
double m_Simpson (double (*func) (double, double),
double t_fix, double t_limit, int N)
{
double sum1 = 0; /* -¬ */
double sum2 = 0; /* ¦ временные переменные */
double sum3 = 0; /* -- */
double sum; /* конечный результат */
double h = (2 * t_limit) / N; /* шаг сетки */
int i; /* временная */
sum1 = (*func) (t_fix, -t_limit) + (*func) (t_fix, +t_limit);
for (i = 1; i <= N - 1; i++) sum2 += (*func) (t_fix, -t_limit + (i * h));
sum2 *= 2;
for (i = 1; i <= N; i++) sum3 += (*func) (t_fix, -t_limit + ((i-0.5) * h));
sum3 *= 4;
sum = sum1 + sum2 + sum3;
sum = (h / 6) * sum;
return sum;
}
/* */
/* Глобальные переменные */
/* ~~~~~~~~~~~~~~~~~~~~~ */
#define PI 3.1415926536 /* число П */
double k; /* параметр функции - задается пользователем */
int N_MAX; /* число узлов сетки разбиения */
double (*currFunc) (double, double); /* выбранная пользователем функция */
double f1 (double x, double y);
double f2 (double x, double y);
double f3 (double x, double y);
/*****************************************************************************