Текст подпрограммы и версий
qttcr_c.zip  qttcd_c.zip 
Тексты тестовых примеров
tqttcr_c.zip  tqttcd_c.zip 

Подпрограмма:  qttcr_c

Назначение

Вычисление неопределенного однократного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций.

Математическое описание

Вычисляются значения неопрeдeлeнного интеграла на отрезках [x1, xi] i = 1, ..., N, от табличной функции f (x), заданной на равномерной сетке xi= x1 + (i - 1) h,   i = 1, ..., N, по формуле трапеций.

Н.С.Бахвалов. Численные методы, "Hаука", M., 1975.

Использование

    int qttcr_c (real *rint, real *h, real *f, integer *n)

Параметры

rint - вещественный вектоp длины n, содержащий вычисленные значения неопределенного интеграла;
h - заданный шаг равномерной сетки (тип: вещественный);
f - вещественный вектоp длины n, содержащий значения функции f (x);
n - заданное число узлов сетки (тип: целый).

Версии

qttcd_c - вычисление с удвоенной точностью неопределенного однократного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций.

Вызываемые подпрограммы: нет

Замечания по использованию

 

Требуется, чтобы   n ≥ 2.

В подпрограмме qttcd_c параметры rint, h, f имеют тип double.

Пример использования

int main(void)
{
    /* Builtin functions */
    double sin(double);

    /* Local variables */
    static float rint[50], f[50], h__;
    static int i__, n;
    static float x;
    int i__1;
    extern int qttcr_c(float *, float *, float *, int *);

    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__;
    }
    qttcr_c(rint, &h__, f, &n);

    for (i__ = 0; i__ <= 45; i__+= 5) {
        printf("\n  %11.7f %11.7f %11.7f %11.7f %11.7f \n",
               rint[i__], rint[i__+1], rint[i__+2], rint[i__+3], rint[i__+4]);
    }
    return 0;
} /* main */


Результаты:

       rint(1)    =  0.00000
       rint(2)    =  0.00205
       rint(49)  =  1.99726
       rint(50)  =  1.99931