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