Текст подпрограммы и версий
qsj1r_c.zip 
Тексты тестовых примеров
tqsj1r_c.zip 

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

Назначение

Вычисление определенного интеграла по формуле Гаусса - Якоби.

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

 Подпрограмма qsj1r_c вычисляет определенный интеграл
            B
           ∫   ( 1 - x )α ( 1 + x ) β  f (x) dx 
         A 
по квадратурной формуле Гаусса - Якоби. 

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

    int qsj1r_c (real *rint, real *a, real *b, real *alf,
            real *bta, R_fp f, integer *n)

Параметры

rint - вещественная переменная, содержащая вычисленное значение интеграла;
a, b - заданные нижний и верхний пределы интегрирования, соответственно (тип: вещественный);
alf,bta - заданные параметры  α и  β соответственно, в весовом множителе (1 - x) α (1 + x)  β (тип: вещественный);
f - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
n - заданное число узлов интегрирования (2 ≤ n ≤ 512, тип: целый);

Версии: нет

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

qsjac_c - подпрограмма, вычисляющая узлы и веса квадратурной формулы Гаусса - Якоби.

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

  Число узлов интегрирования  n на заданном отрезке [a; b] может быть задано лишь как целое из интервала 2 ≤ n ≤ 512.

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

int main(void)
{
    /* Local variables */
    static float rint;
    extern int qsj1r_c(float *, float *, float *, float *,
                       float *, R_fp, int *);
    static float a, b;
    extern float f_c();
    static int n;
    static float alf, bta;

    alf = 1.f;
    bta = alf;
    a = -1.f;
    b = 1.f;
    n = 4;
    qsj1r_c(&rint, &a, &b, &alf, &bta, (R_fp)f_c, &n);

    printf("\n %16.7e %16.7e %16.7e %16.7e \n",a,b,alf,bta);
    printf("\n %16.7e %5i \n",rint,n);
    return 0;
} /* main */

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

    ret_val = *x;
    return ret_val;
} /* f_c */


Результат:    rint  =   0.0000000000