Текст подпрограммы и версий
qsl2r_c.zip  qsl2d_c.zip 
Тексты тестовых примеров
tqsl2r_c.zip  tqsl2d_c.zip 

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

Назначение

Вычисление определенного интеграла для больших отрезков интегрирования по формулам Лобатто.

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

qsl2r_c вычисляет определенный  интеграл
            B
           ∫ f (x) dx 
          A 

с заданной абсолютной погрешностью E для больших отрезков интегрирования. Оба предела интегрирования или один из них могут быть бесконечными. B этом случае соответствующий предел интегрирования должен полагаться равным максимальному положительному (отрицательному) числу, представимому на машине. Предполагается, что | (B - A) | ≥ 10.

Отрезок интегрирования разбивается на подотрезки Ti,  i = 1, 2, ..., n длины | T1 | = 2, | T2 | = 22,  ... , | Tn | = 2n, на каждом из которых интеграл считается с автоматическим выбором шага по формулам Лобатто по семи узлам (11 - й степени точности). Счет интеграла прекращается, если выполняются следующие условия

  0  ≤  | Ji+1 |2 * ( | Ji |  -  | Ji+1 | ) -1  < E     и
  0  ≤  | Ji+2 |2 * ( | Ji+1 |  -  | Ji+2 | ) -1  < E  , 

где  Ji, Ji + 1, Ji + 2 - значение интеграла на подотрезках  Тi, Ti + 1, Ti + 2.

О.В.Брушлинская, Л.Г.Васильева. Набор стандартных программ приближенного вычисления однократных интегралов c автоматическим выбором шага. Сб. "Численный анализ на ФОРТРАНе", вып. 8, Изд-во МГУ, 1974.

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

    int qsl2r_c (real *rint, real *a, real *b, R_fp f, real *e)

Параметры

rint - вещественная переменная, содержащая вычисленное значение интеграла;
a, b - заданные нижний и верхний пределы интегрирования (тип: вещественный);
f - имя вещественной подпрограммы - функции вычисления подинтегральной функции  f (x);
e - заданная абсолютная погрешность вычисления интеграла (тип: вещественный).

Версии

qsl2d_c - вычисление с удвоенной точностью определенного интеграла для больших отрезков интегрирования по формулам Лобатто.

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

utqs10_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы qsl2r_c.
utqs12_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы qsl2d_c.

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

 

Подпрограмма не гарантирует вычисление с заданной погрешностью, хотя в большинстве случаев интеграл будет посчитан с требуемой точностью.

В подпрограмме qsl2d_c параметры rint, a, b, f, e имеют тип double.

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

int main(void)
{
    /* Local variables */
    static float a, b;
    extern int qsl2r_c(float *, float *, float *, R_fp, float *);
    static float e;
    extern float f_c();
    static float int__;

    a = 3.f;
    b = 1e18f;
    e = .001f;
    qsl2r_c(&int__, &a, &b, (R_fp)f_c, &e);

    printf("\n %16.7e \n",int__);
    return 0;
} /* main */

float f_c(float *x)
{
    /* System generated locals */
    float ret_val;

    /* Builtin functions */
    double exp(double), sin(double);

    ret_val = (float)exp((float)(-(*x) + 3)) * (float)sin((float)(*x - 3));
    return ret_val;
} /* f_c */


Результат:   int__  =  5.0000004388 e-01