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

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

Назначение

Восстановление коэффициентов многочлена, заданного разложением по системе ортогональных многочленов.

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

Пусть известны коэффициенты C = ( c1, c2, ..., cN ) разложения многочлена  Р (Х) по системе { Qk (X) } ортогональных многочленов

                           N  
            P(X)  =   ∑   Ck Qk -1(X)  ,
                         k =1 

удовлетворяющих трехчленному рекуррентному соотношению

      Q0(X)  =  1  ,       Q1(X)  =  X - a1  ,

      Qk +1(X)  =  ( X - ak +1 ) Qk(X) - bk Qk -1(X)  ,       k = 1, 2, ..., N-2 

с известными коэффициентами А = ( a1, a2, ..., aN - 1 ),  B = ( b1, b2, ..., bN - 2 ). Подпрограмма вычисляет коэффициенты D = ( d1, d2, ..., dN ) разложения этого многочлена по степеням  Х

                           N  
            P(X)  =   ∑   dk X k -1
                         k =1 

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

    int zp44r_c (real *a, real *b, real *c, real *d,
            integer *n)

Параметры

a - вещественный вектор длины n - 1, содержащий коэффициенты  ak рекуррентного соотношения (тип: вещественный);
b - вещественный вектор длины n - 2, содержащий коэффициенты  bk рекуррентного соотношения (тип: вещественный);
c - вектор заданных коэффициентов разложения многочлена по системе ортогональных многочленов (тип: вещественный);
d - вектор искомых коэффициентов разложения многочлена по степеням аргумента (тип: вещественный);
n - размерность векторов  c и  d (тип: целый).

Версии: нет

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

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

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

int main(void)
{
    /* Initialized data */
    static float a[2] = { 0.f,1.f };
    static float b[1] = { 1.f };
    static float c__[3] = { 1.f,1.f,1.f };

    /* Local variables */
    extern int zp44r_c(float *, float *, float *, float *, int *);
    static float d__[3];
    static int n;

    n = 3;
    zp44r_c(a, b, c__, d__, &n);

    printf("\n %16.7e %16.7e %16.7e \n", d__[0], d__[1], d__[2]);
    return 0;
} /* main */


Результат:    d__ = ( 0., 0., 1. )