Текст подпрограммы и версий ( Фортран ) zp10r.zip |
Тексты тестовых примеров ( Фортран ) tzp10r.zip |
Текст подпрограммы и версий ( Си ) zp10r_c.zip |
Тексты тестовых примеров ( Си ) tzp10r_c.zip |
Текст подпрограммы и версий ( Паскаль ) zp10r_p.zip |
Тексты тестовых примеров ( Паскаль ) tzp10r_p.zip |
Вычисление корней полинома с вещественными коэффициентами методом Лагерра.
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