Текст подпрограммы и версий zp60r_c.zip zp60d_c.zip |
Тексты тестовых примеров tzp60r_c.zip tzp60d_c.zip |
Вычисление значений полиномов Чебышева от последовательности значений аргументов.
Пусть задана последовательность значений X = (x1, x2,..., xM). Подпрограмма zp60r_c вычисляет значения полиномов Чебышева Tk ( xi ), k = 0, 1,..., N, которые размещаются в двумерном массиве T размеров N + 1 на M следующим образом:
| T0( x1 ), T0( x2 ), ... , T0( xM ) | | T1( x1 ), T1( x2 ), ... , T1( xM ) | T = . . . . . . . . . . . . . . (1) | TN( x1 ), TN( x2 ), ... , TN( xM ) |
Вычисления выполняются по рекуррентному соотношению
Tk( xi ) = 2 xi Tk-1( xi ) - Tk-2( xi ), k = 2, 3,..., N
Бахвалов Н.С. Численные методы. М.: Наука, 1977.
int zp60r_c (real *x, integer *m, integer *n, integer *n1, real *t)
Параметры
x - | вещественный одномерный массив, длины m, содержащий заданные значения аргументов; |
m - | длина массива x (тип: целый); |
n - | заданное максимальное значение степеней полиномов Чебышева, значения которых необходимо вычислить на заданной сетке x (тип: целый); |
n1 - | заданное значение, равное n+1 (тип: целый); |
t - | вещественный двумерный массив размеров n1 на m, в котором размещаются вычисленные значения полиномов Чебышева в виде (1). |
Версии
zp60d_c - | вычисление значений полиномов Чебышева от последовательности значений аргументов в режиме удвоенной точности; при этом параметры x и t должны иметь тип double . |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void) { /* Initialized data */ static float x[6] = { 0.f,1.f,2.f,3.f,4.f,5.f }; /* Local variables */ extern int zp60r_c(float *, int *, int *, int *, float *); static int i__, m, n; static float t[30] /* was [5][6] */; static int n1; #define t_ref(a_1,a_2) t[(a_2)*5 + a_1 - 6] m = 6; n = 4; n1 = 5; zp60r_c(x, &m, &n, &n1, t); for (i__ = 1; i__ <= 5; ++i__) { printf("\n% 16.7e %16.7e %16.7e \n %16.7e %16.7e %16.7e \n", t_ref(i__, 1), t_ref(i__, 2), t_ref(i__, 3), t_ref(i__, 4), t_ref(i__, 5), t_ref(i__, 6)); } return 0; } /* main */ Результаты: | 1 1 1 1 1 1 | | 0 1 2 3 4 5 | t_ref = | -1 1 7 17 31 49 | | 0 1 26 99 244 485 | | 1 1 97 577 1921 4801 |