Текст подпрограммы и версий
zp47r_c.zip  zp48r_c.zip  zp49r_c.zip  zp50r_c.zip  zp51r_c.zip  zp52r_c.zip 
Тексты тестовых примеров
tzp47r_c.zip  tzp48r_c.zip  tzp49r_c.zip  tzp50r_c.zip  tzp51r_c.zip  tzp52r_c.zip 

Подпрограмма:  zp47r_c (версии: zp48r_c, zp49r_c, zp50r_c, zp51r_c, zp52r_c)

Назначение

Вычисление частичной суммы ряда Фурье по ортогональным полиномам Чебышева.

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

Для заданных коэффициентов  С (К) вычисляется частичная сумма ряда

                           N -1  
            SUM  =    ∑    C(K+1) * T(K, X)
                           K =0 

где Т (К, Х) = cos (К * АRССОS (Х)) - значение ортогонального полинома Чебышева порядка  К в точке  Х.

М.Аbramowitz, I.А.Stegun, Нandbook of Мathematical Functions, New York, Dover Рublications, Inc., 1965.

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

    int zp47r_c (real *x, real *c, integer *n, real *sum)

Параметры

x - заданное значение аргумента (тип: вещественный);
c - вещественный вектор длины  n, содержащий заданные коэффициенты разложения; при этом полиному порядка  K соответствует коэффициент C (K + 1);
n - длина вектора  c (тип: целый);
sum - вычисленное значение частичной суммы (тип: вещественный).

Версии

zp48r_c - вычисление частичной суммы ряда Фурье по смещенным ортогональным полиномам Чебышева.
zp49r_c - вычисление частичной суммы ряда Фурье по ортогональным полиномам Чебышева четного порядка.
zp50r_c - вычисление частичной суммы ряда Фурье по смещенным ортогональным полиномам Чебышева четного порядка.
zp51r_c - вычисление частичной суммы ряда Фурье по ортогональным полиномам Чебышева нечетного порядка.
zp52r_c - вычисление частичной суммы ряда Фурье по смещенным ортогональным полиномам Чебышева нечетного порядка.

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

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

  Смещенные ортогональные многочлены Чебышева TS (K, X) определяются по формуле TS (K, X) = T (K, 2 * X - 1), где  K - порядок полинома,  X - аргумент и  T (K, X) - значение обычного полинома Чебышева порядка  K в точке X: T (K, X) = cos (K * arccos (X)).

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

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

    /* Local variables */
    extern int zp47r_c(float *, float *, int *, float *);
    static int n;
    static float x, sum;

    x = .5f;
    n = 3;
    zp47r_c(&x, c__, &n, &sum);

    printf("\n %5i \n", n);
    printf("\n %10.2e \n", sum);
    return 0;
} /* main */


Результат:    sum = 0.5

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

       ZP48R    SUМ = -2.0 ;

       ZP49R    SUМ = -1.5 ;

       ZP50R    SUМ =  2.0 ;

       ZP51R    SUМ =  0.0 ;

       ZP52R    SUМ =  0.0 .