|
Текст подпрограммы и версий zp17r_c.zip zp17d_c.zip |
Тексты тестовых примеров tzp17r_c.zip tzp17d_c.zip |
Вычисление корней уравнения четвертой степени с вещественными коэффициентами.
Подпрограмма zp17r_c вычисляет корни уравнения четвертой степени
A(1)*X4 + A(2)*X3 + A(3)*X2 + A(4)*X + A(5) = 0.0 ,
в котором коэффициенты А ( I ), I = 1, 2, 3, 4, 5 являются вещественными.
int zp17r_c (real *a, integer *nreal, real *root,
integer *ierr)
Параметры
| a - | вещественный вектор длины 5, содержащий коэффициенты исходного уравнения; |
| nreal - | целая переменная, значение которой в результате работы подпрограммы полагается равным числу вещественных корней уравнения; |
| root - | вещественный вектор длины 4, содержащий вычисленные корни; |
| ierr - | целая переменная, значение которой в результате работы подпрограммы полагается равным 65, если коэффициент A (1) при старшей степени равен 0. |
Версии
| zp17d_c - | вычисление корней уравнения четвертой степени с вещественными коэффициентами с повышенной точностью. При этом векторы a и root должны иметь тип double. |
Вызываемые подпрограммы
| zp16r_c - | вычисление корней уравнения третьей степени с вещественными коэффициентами. Используется в подпрограмме zp17r_c. |
| utzp10_c - | подпрограмма выдачи диагностических сообщений при работе подпрограммы zp17r_c. |
| zp16d_c - | вычисление корней уравнения третьей степени с вещественными коэффициентами с повышенной точностью. Используется в подпрограмме zp17d_c. |
| utzp11_c - | подпрограмма выдачи диагностических сообщений при работе подпрограммы zp17d_c. |
Замечания по использованию
|
Если nreal = 0, то вычисленные корни имеют вид root (1) ± root (2) i и root (3) ± root (4) i, при этом root (2) > 0. и root (4) > 0. Если nreal = 2, то root (1) ≤ root (2), а вторая пара корней имеет вид root (3) ± root (4) i, при этом root (4) > 0. Если nreal = 4, то root (1) ≤ root (2) ≤ root (3) ≤ root (4). |
int main(void)
{
/* Initialized data */
static float a[5] = { 1.f,-10.f,35.f,-50.f,24.f };
/* Local variables */
static int ierr;
static float root[4];
extern int zp17r_c(float *, int *, float *, int *);
static int nreal, i__;
zp17r_c(a, &nreal, root, &ierr);
for (i__ = 1; i__ <= 5; ++i__) {
printf("\n %16.7e \n", a[i__ - 1]);
}
printf("\n %5i \n", nreal);
printf("\n %16.7e %16.7e %16.7e %16.7e \n",
root[0], root[1], root[2], root[3]);
printf("\n %5i \n", ierr);
return 0;
} /* main */
Результаты:
root(1) = 1. , root(2) = 2. , root(3) = 3. , root(4) = 4. ,
nreal = 4 , ierr = 0