Текст подпрограммы и версий qtg1r_c.zip qtg1d_c.zip |
Тексты тестовых примеров tqtg1r_c.zip tqtg1d_c.zip |
Вычисление определенного однократного интеграла от табличной функции, заданной на равномерной сетке, по формуле Грегори.
Вычисляется значение опредeлeннoго интеграла на отрезке
[x1, xN] от табличной функции
f (x),
заданной на равномерной сетке
xi = x1 + (i - 1) h,
i = 1, ..., N, по формуле Грегори пятого
порядка точности.
Н.С.Бахвалов. Численные методы, "Hаука", M., 1975.
int qtg1r_c (real *rint, real *h, real *f, integer *n)
Параметры
rint - | вещественная переменная, содержащая вычисленное значение интеграла; |
h - | заданный шаг равномерной сетки (тип: вещественный); |
f - | вещественный вектоp длины n, содержащий значения функции f (x); |
n - | заданное число узлов сетки (тип: целый). |
Версии
qtg1d_c - | вычисление с удвоенной точностью определенного однократного интеграла от табличной функции, заданной на равномерной сетке, по формуле Грегори. |
Вызываемые подпрограммы: нет
Замечания по использованию
Требуется, чтобы n ≥ 6. В подпрограмме qtg1d_c параметры rint, h, f имеют тип double. |
int main(void) { /* Builtin functions */ double sin(double); /* Local variables */ static float rint; extern int qtg1r_c(float *, float *, float *, int *); static float f[50], h__; static int i__, n; static float x; int i__1; h__ = .064114081632653058f; n = 50; x = 0.f; i__1 = n; for (i__ = 1; i__ <= i__1; ++i__) { f[i__ - 1] = (float)sin(x); /* l1: */ x += h__; } qtg1r_c(&rint, &h__, f, &n); printf("\n %16.7e \n",rint); return 0; } /* main */ Результат: rint = 2.00000