Текст подпрограммы и версий
qsg0r_c.zip  qsg1r_c.zip  qsg2r_c.zip  qsg3r_c.zip  qsg4r_c.zip  qsg5r_c.zip  qsg6r_c.zip  qsg7r_c.zip  qsg8r_c.zip  qsg9r_c.zip  qsgar_c.zip  qsgbr_c.zip  qsg0d_c.zip  qsg1d_c.zip  qsg2d_c.zip  qsg3d_c.zip  qsg4d_c.zip  qsg5d_c.zip  qsg6d_c.zip  qsg7d_c.zip  qsg8d_c.zip  qsg9d_c.zip  qsgad_c.zip  qsgbd_c.zip 
Тексты тестовых примеров
tqsg0r_c.zip  tqsg1r_c.zip  tqsg2r_c.zip  tqsg3r_c.zip  tqsg4r_c.zip  tqsg5r_c.zip  tqsg6r_c.zip  tqsg7r_c.zip  tqsg8r_c.zip  tqsg9r_c.zip  tqsgar_c.zip  tqsgbr_c.zip  tqsg0d_c.zip  tqsg1d_c.zip  tqsg2d_c.zip  tqsg3d_c.zip  tqsg4d_c.zip  tqsg5d_c.zip  tqsg6d_c.zip  tqsg7d_c.zip  tqsg8d_c.zip  tqsg9d_c.zip  tqsgad_c.zip  tqsgbd_c.zip 

Подпрограмма:  qsg0r_c ( версии: qsg1r_c, qsg2r_c, qsg3r_c, qsg4r_c, qsg5r_c, qsg6r_c, qsg7r_c, qsg8r_c, qsg9r_c, qsgar_c, qsgbr_c )

Назначение

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

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

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

по квадратурной формуле Гаусса с двумя узлами.

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

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

    int qsg0r_c (real *rint, real *a, real *b, R_fp f)

Параметры

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

Версии

qsg1r_c - формула Гаусса по четырем узлам.
qsg2r_c - формула Гаусса по шести узлам.
qsg3r_c - формула Гаусса по восьми узлам.
qsg4r_c - формула Гаусса по десяти узлам.
qsg5r_c - формула Гаусса по двенадцати узлам.
qsg6r_c - формула Гаусса по шестнадцати узлам.
qsg7r_c - фомула Гаусса по двадцати четырем узлам.
qsg8r_c - формула Гаусса по тридцати двум узлам.
qsg9r_c - формула Гаусса по соpока восьми узлам.
qsgar_c - формула Гаусса по шестидесяти четырем узлам.
qsgbr_c - формула Гаусса по девяносто шести узлам.
qsg0d_c - вычисление с удвоенной точностью определенного интеграла по квадратурной формуле Гаусса с двумя узлами.
qsg1d_c - формула Гаусса с удвоенной точностью по четырем узлам.
qsg2d_c - формула Гаусса с удвоенной точностью по шести узлам.
qsg3d_c - формула Гаусса с удвоенной точностью по восьми узлам.
qsg4d_c - формула Гаусса с удвоенной точностью по десяти узлам.
qsg5d_c - формула Гаусса с удвоенной точностью по двенадцати узлам.
qsg6d_c - формула Гаусса с удвоенной точностью по шестнадцати узлам.
qsg7d_c - фомула Гаусса с удвоенной точностью по двадцати четырем узлам.
qsg8d_c - формула Гаусса с удвоенной точностью по тридцати двум узлам.
qsg9d_c - формула Гаусса с удвоенной точностью по соpока восьми узлам.
qsgad_c - формула Гаусса с удвоенной точностью по шестидесяти четырем узлам.
qsgbd_c - формула Гаусса с удвоенной точностью по девяносто шести узлам.

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

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

 

Интегралы считаются по квадратурной формуле Гаусса с узлами и весами Гаусса для отрезка [- 1, 1], к котоpому приводится заданный отрезок интегрирования.

В подпрограмме qsg0d_c ( версиях: qsg1d_c, qsg2d_c, qsg3d_c, qsg4d_c, qsg5d_c, qsg6d_c, qsg7d_c, qsg8d_c, qsg9d_c, qsgad_c, qsgbd_c ) параметры rint, a, b, f имеют тип double.

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

int main(void)
{
    /* Local variables */
    extern int qsg0r_c(float *, float *, float *, R_fp),
               qsg1r_c(float *, float *, float *, R_fp),
               qsg2r_c(float *, float *, float *, R_fp),
               qsg3r_c(float *, float *, float *, R_fp),
               qsg4r_c(float *, float *, float *, R_fp);
    static float a, b;
    extern int qsg5r_c(float *, float *, float *, R_fp),
               qsg6r_c(float *, float *, float *, R_fp),
               qsg7r_c(float *, float *, float *, R_fp);
    extern float f_c();
    extern int qsg8r_c(float *, float *, float *, R_fp),
               qsg9r_c(float *, float *, float *, R_fp),
               qsgar_c(float *, float *, float *, R_fp);
    static float int__;

    a = 0.f;
    b = 1.f;
    qsg0r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg1r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg2r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg3r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg4r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg5r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg6r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg7r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg8r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsg9r_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    qsgar_c(&int__, &a, &b, (R_fp)f_c);
    printf("\n %16.7e \n",int__);
    return 0;
} /* main */

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

    /* Builtin functions */
    double sqrt(double);

    ret_val = (float)sqrt(*x);
    return ret_val;
} /* f_c */


Результат:   int__  =  0.67388733868