Текст подпрограммы и версий ( Фортран )
zp10r.zip 
Тексты тестовых примеров ( Фортран )
tzp10r.zip 
Текст подпрограммы и версий ( Си )
zp10r_c.zip 
Тексты тестовых примеров ( Си )
tzp10r_c.zip 
Текст подпрограммы и версий ( Паскаль )
zp10r_p.zip
Тексты тестовых примеров ( Паскаль )
tzp10r_p.zip

Подпрограмма:  ZP10R

Назначение

Вычисление корней полинома с вещественными коэффициентами методом Лагерра.

Математическое описание

ZР10R вычисляет NР вещественных и комплексных корней полинома

     A(1) + A(2)*X + A(3)*X2 + ... + A(NP + 1)*XNP , 

у которого коэффициенты  А ( I ),  I = 1, 2, 3, ..., NР + 1 являются вещественными.

ZР10R реализует метод Лагерра, имеющий кубическую сходимость для изолированных корней и линейную сходимость для кратных корней. Текущая итерация берется в качестве корня, когда значение полинома при этой итерации меньше, чем вычисленная граница ошибок округления при нахождении значения полинома для этой итерации. Степень исходного полинома уменьшается, когда найден вещественный корень или пара комплексных корней, после чего итерационный процесс применяется к полиному уменьшенной степени.

Дж.Х.Уилкинсон, Алгебраическая проблема собственных значений, "Наука", М., 1970.

Использование

    SUBROUTINE  ZP10R (NP, A, ROOT, DA, DZ, IERR) 

Параметры

NP - заданная степень полинома (тип: целый);
A - вещественный вектор длины NР + 1, содержащий коэффициенты исходного полинома в порядке возрастания степеней;
ROOT - комплексный вектор длины NР, содержащий вычисленные корни;
DA, DZ - вещественные векторы длины NР + 1, используемые в подпрограмме как рабочие;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом
IЕRR=65 - когда заданная степень полинома меньше 1;
IЕRR=66 - когда один или несколько коэффициентов при старших степенях равны 0.; соответствующее число корней в конце вектора RООТ полагаются равными (3.4Е38, 0.0);
IЕRR=67 - когда вычислено меньше корней, чем степень полинома; соответствующее число корней в конце вектора RООТ полагаются равными (3.4Е38, 0.0);
IЕRR=68 - когда на вычисление одного из корней потребовалось больше, чем 200 * NР итераций; оставшиеся корни полагаются равными (3.4Е38, 0.0).

Версии: нет

Вызываемые подпрограммы

ZP14R - вычисление корней квадратного уравнения с вещественными коэффициентами;
ZP14C - вычисление корней квадратного уравнения с комплексными коэффициентами;
UTZP10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР10R.

Замечания по использованию: нет

Пример использования

       DIMENSION  A(4), ROOT(3), DA(4), DZ(4)
       COMPLEX  ROOT
       DATA  A(1), A(2), A(3), A(4) /- 2.0, 4.0, - 3.0, 1.0/
       NP = 3
       CALL  ZP10R (NP, A, ROOT, DA, DZ, IERR)

Результаты:

       RООТ(1) = (1.0, 0.0) ,   RООТ(2) = (1.0, 1.0) ,
       ROOT(3) = (1.0, - 1.0) , IERR = 0