Текст подпрограммы и версий zp36r_c.zip zp36d_c.zip |
Тексты тестовых примеров tzp36r_c.zip tzp36d_c.zip |
Вычисление синуса и косинуса от полинома с вещественными коэффициентами.
zp36r_c вычисляет М первых коэффициентов полиномов
B(X) = B(1) + B(2)*X + B(3)*X2 + ... + B(M)*X(M - 1) + ... и C(X) = C(1) + C(2)*X + C(3)*X2 + ... + C(M)*X(M - 1) + ... ,
таких, что В (Х) = sin А (Х) и С (Х) = cos А (Х), где А (Х) - заданный полином степени NР
A(X) = A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP ,
у которого коэффициенты А ( I ), I = 1, 2, 3, ..., NР являются вещественными.
int zp36r_c (integer *np, real *a, integer *m, real *b, real *c)
Параметры
np - | заданная степень полинома A (x) (тип: целый); |
a - | вещественный вектор длины np + 1, содержащий коэффициенты заданного полинома A (x) в порядке возрастания степеней; |
m - | заданное число искомых коэффициентов полиномов B (x) и C (x) (тип: целый); |
b, c - | вещественные векторы длины m, содержащие вычисленные коэффициенты полиномов B (x) и C (x) в порядке возрастания степеней. |
Версии
zp36d_c - | вычисление синуса и косинуса от полинома с вещественными коэффициентами с повышенной точностью. При этом векторы a, b и c должны иметь тип double. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
int main(void) { /* Initialized data */ static float a[5] = { 24.f,-50.f,35.f,-10.f,1.f }; /* Local variables */ extern int zp36r_c(int *, float *, int *, float *, float *); static float b[4], c__[4]; static int m, np, i__; np = 4; m = 4; zp36r_c(&np, a, &m, b, c__); printf("\n %5i \n", np); for (i__ = 1; i__ <= 5; ++i__) { printf("\n %16.7e \n", a[i__ - 1]); } printf("\n %5i \n", m); for (i__ = 1; i__ <= 4; ++i__) { printf("\n %16.7e \n", b[i__ - 1]); } for (i__ = 1; i__ <= 4; ++i__) { printf("\n %16.7e \n", c__[i__ - 1]); } return 0; } /* main */ Результаты: b(1) = - 0.905578 , b(2) = - 21.208950 , b(3) = 1146.819218 , b(4) = 7248.058730 c__(1) = 0.424179 , c__(2) = - 45.278918 , c__(3) = - 498.528516 , c__(4) = 19599.473354