Текст подпрограммы и версий zp13i_c.zip |
Тексты тестовых примеров tzp13i_c.zip |
Вычисление рациональных корней полиномов с целыми коэффициентами.
Подпрограмма zp13i_c вычисляет M рациональных корней полинома степени N
A(1) + A(2) X + ... + A(N + 1) XN
с целыми коэффициентами. Ненулевые рациональные корни pi / q i , i = 1, 2,..., M, размещаются в массивах P и Q соответственно.
int zp13i_c (integer *a, integer *n, integer *p, integer *q, integer *m)
Параметры
a - | целый одномерный массив длины n + 1, содержащий заданные коэффициенты полинома в порядке возрастания степеней; |
n - | заданная степень полинома (тип: целый); |
p, q - | целые одномерные массивы длины n + 1, содержащие вычисленные рациональные корни pi / q i , i = 1, 2,..., m; |
m - | целая переменная, содержащая на выходе количество рациональных корней. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
В некоторых случаях последний вычисленный корень может
совпадать по значению с первым. Поэтому массивы p и q должны
иметь максимальную длину n + 1, а не n .
Пример использованияint main(void) { /* Initialized data */ static int a[4] = { 3,14,3,-36 }; /* Local variables */ extern int zp13i_c(int *, int *, int *, int *, int *); static int m, p[4], q[4]; zp13i_c(a, &c__3, p, q, &m); printf("\n %5i %5i %5i %5i \n", p[0], p[1], p[2], p[3]); printf("\n %5i %5i %5i %5i \n", q[0], q[1], q[2], q[3]); printf("\n %5i \n", m); return 0; } /* main */ Результаты: p = (-1, 3, -3), q = ( 3, 4, 9), m = 3 |