|
Текст подпрограммы и версий zp32r_c.zip zp32d_c.zip |
Тексты тестовых примеров tzp32r_c.zip tzp32d_c.zip |
Вычисление коэффициентов полинома, проходящего через заданные точки плоскости.
zp32r_c вычисляет коэффициенты полинома степени NР
A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP ,
проходящего через заданные точки плоскости (Х ( I ), Y ( I )), I = 1, 2, 3, ..., NР + 1.
Другими словами, коэффициенты полинома вычисляются по заданным соотношениям:
NP+1
Y( I ) = ∑ A( J )*X( I )(J - 1) , I = 1, 2, 3, ..., NP+1
J=1
int zp32r_c (integer *np, real *x, real *y, real *a,
real *rab1, real *rab2)
Параметры
| np - | заданная степень полинома (тип: целый); |
| x, y - | вещественные векторы длины np + 1, содержащие координаты заданных точек плоскости; |
| a - | вещественный вектор длины np + 1, содержащий вычисленные коэффициенты полинома в порядке возрастания степеней; |
|
rab1 - rab2 | вещественные векторы длины np + 1, используемые в подпрограмме как рабочие. |
Версии
| zp32d_c - | вычисление коэффициентов полинома, проходящего через заданные точки плоскости, с повышенной точностью. Параметры x, y, a, rab1, rab2 имеют тип double. |
Вызываемые подпрограммы
| zp30r_c - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента. Используется в подпрограмме zp32r_c. |
| zp31r_c - | вычисление коэффициентов полинома по заданным его вещественным корням. Используется в подпрограмме zp32r_c. |
| zp30d_c - | вычисление значения полинома с вещественными коэффициентами от заданного вещественного аргумента с повышенной точностью. Используется в подпрограмме zp32d_c. |
| zp31d_c - | вычисление коэффициентов полинома по заданным его вещественным корням с повышенной точностью. Используется в подпрограмме zp32d_c. |
Замечания по использованию: нет
int main(void)
{
/* Initialized data */
static float x[5] = { 0.f,1.f,2.f,3.f,4.f };
static float y[5] = { 24.f,0.f,0.f,0.f,0.f };
/* Local variables */
extern int zp32r_c(int *, float *, float *, float *, float *, float *);
static float a[5];
static int np, i__;
static float rab1[5], rab2[5];
np = 4;
zp32r_c(&np, x, y, a, rab1, rab2);
printf("\n %5i \n", np);
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", x[i__ - 1]);
}
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", y[i__ - 1]);
}
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", a[i__ - 1]);
}
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", rab1[i__ - 1]);
}
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", rab2[i__ - 1]);
}
return 0;
} /* main */
Результаты:
a(1) = 24.0 , a(2) = - 50.0 , a(3) = 35.0 ,
a(4) = - 10.0 , a(5) = 1.0