|
Текст подпрограммы и версий zp40r_c.zip zp40d_c.zip |
Тексты тестовых примеров tzp40r_c.zip tzp40d_c.zip |
Вычисление коэффициентов полинома, получающегося из данного полинома с вещественными коэффициентами линейным изменением аргумента.
zp40r_c вычисляет коэффициенты полинома
B(X) = B(1) + B(2)*Y + B(3)*Y2 + ... + B(NP + 1)*YNP ,
получающегося из данного полинома с вещественными коэффициентами
A(X) = A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP
линейным изменением аргумента Y = u * Х + v.
int zp40r_c (integer *np, real *a, real *b, real *u, real *v,
real *rab)
Параметры
| np - | заданная степень полинома (тип: целый); |
| a - | вещественный вектор длины np + 1, содержащий коэффициенты заданного полинома A (x) в порядке возрастания степеней; |
| b - | вещественный вектор длины np + 1, содержащий вычисленные коэффициенты полинома B (x) в порядке возрастания степеней; |
| u, v - | заданные значения u и v (тип: вещественный); |
| rab - | вещественный вектор длины np + 1, используемый в подпрограмме как рабочий. |
Версии
| zp40d_c - | вычисление коэффициентов полинома, получающегося из данного полинома с вещественными коэффициентами линейным изменением аргумента с повышенной точностью. При этом векторы a, b, rab, а также u и v должны иметь тип double. |
Вызываемые подпрограммы
| zp30r_c - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента. Используется в подпрограмме zp40r_c. |
| zp30d_c - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента с повышенной точностью. Используется в подпрограмме zp40d_c. |
Замечания по использованию: нет
int main(void)
{
/* Initialized data */
static float a[3] = { 1.f,2.f,3.f };
/* Local variables */
extern int zp40r_c(int *, float *, float *, float *, float *, float *);
static float b[3], u, v;
static int np;
static float rab[4];
np = 2;
u = 2.f;
v = 3.f;
zp40r_c(&np, a, b, &u, &v, rab);
printf("\n %5i \n", np);
printf("\n %15.3f %15.3f \n", u, v);
printf("\n %20.3f %20.3f %20.3f \n", a[0], a[1], a[2]);
printf("\n %20.3f %20.3f %20.3f \n", b[0], b[1], b[2]);
printf("\n %18.3f %18.3f %18.3f %18.3f \n",
rab[0], rab[1], rab[2], rab[3]);
return 0;
} /* main */
Результаты: b(1) = 4.75 , b(2) = - 3.5 , b(3) = 0.75