Текст подпрограммы и версий qtt4r_c.zip qtt4d_c.zip |
Тексты тестовых примеров tqtt4r_c.zip tqtt4d_c.zip |
Вычисление определенного двухкратного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций.
По формуле трапеций вычисляeтcя значение определенного двойного интеграла от табличной функции f (x, y), заданной на равномерной сетке узлов (xi, yj), xi = x1 + (i - 1) h1, i = 1, ..., N, yj = y1 + (j - 1) h2, j = 1 , ..., M .
Н.С.Бахвалов. Численные методы, "Hаука", M., 1975.
int qtt4r_c (real *rint, real *h1, real *h2, integer *n, integer *m, real *f)
Параметры
rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
h1 - | заданный шаг равномерной сетки по x (тип: вещественный); |
h2 - | заданный шаг равномерной сетки по y (тип: вещественный); |
n - | заданное число узлов сетки по x (тип: целый); |
m - | заданное число узлов сетки по y (тип: целый); |
f - | вещественный двумерный массив размера n на m, содержащий значения функции f (x, y). |
Версии
qtt4d_c - | вычисление с удвоенной точностью определенного двухкратного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций. |
Вызываемые подпрограммы: нет
Замечания по использованию
Требуется, чтобы n ≥ 2, m ≥ 2. В подпрограмме qtt4d_c параметры rint, h1, h2, f имеют тип double. |
int main(void) { /* Builtin functions */ double sin(double); /* Local variables */ static float rint, f[2000] /* was [50][40] */; static int i__, j, m, n; extern int qtt4r_c(float *, float *, float *, int *, int *, float *); static float x, y, h1, h2; int i__1, i__2; #define f_ref(a_1,a_2) f[(a_2)*50 + a_1 - 51] h1 = .064114081632653058f; h2 = .08055358974358974f; n = 50; m = 40; y = 0.f; i__1 = m; for (j = 1; j <= i__1; ++j) { x = y; i__2 = n; for (i__ = 1; i__ <= i__2; ++i__) { f_ref(i__, j) = (float)sin(x); /* l2: */ x += h1; } /* l1: */ y += h2; } qtt4r_c(&rint, &h1, &h2, &n, &m, f); printf("\n %16.7e \n",rint); return 0; } /* main */ Результат: rint = 0.00001