|
Текст подпрограммы и версий 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 |