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