|
Текст подпрограммы и версий ( Фортран ) zp12c.zip |
Тексты тестовых примеров ( Фортран ) tzp12c.zip |
|
Текст подпрограммы и версий ( Си ) zp12c_c.zip |
Тексты тестовых примеров ( Си ) tzp12c_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) zp12c_p.zip |
Тексты тестовых примеров ( Паскаль ) tzp12c_p.zip |
Вычисление корней полинома с комплексными коэффициентами методом наискорейшего спуска.
ZР12С вычисляет NР комплексных корней полинома
A(1) + A(2)*X + ... + A(NP)*X(NP - 1) + A(NP + 1)*X(NP) ,
с комплексными коэффициентами А ( I ), I = 1, 2, ..., NР + 1.
Реализуется модифицированный метод наискорейшего спуска.
Воеводин В.В., Павленко О.А. Модифицированный метод наискорейшего спуска для определения всех корней полинома, в Сб. "Численный анализ на Фортране", вып.27, изд - во МГУ, 1980.
SUBROUTINE ZP12C (NP, A, D, ROOT, IERR)
Параметры
| NP - | заданная степень полинома (тип: целый); |
| A - | комплексный вектор длины NР + 1, содержащий коэффициенты исходного полинома в порядке возрастания степеней; |
| D - | комплексный вектор длины NР + 1, используемый в подпрограмме как рабочий; |
| ROOT - | комплексный вектор длины NР + 1, на выходе содержащий в первых NР компонентах вычисленные корни; |
| IERR - | целая переменная, служащая для сообщений об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
| IЕRR= 1 - | когда один или несколько коэффициентов при старших степенях равны (0., 0.). Соответствующее число корней в конце вектора RООТ полагаются равными (3.4E38, 0.); |
| IЕRR=68 - | когда заданная степень полинома меньше 1. |
Версии: нет
Вызываемые подпрограммы
| GSU2R - | счетчик псевдослучайных чисел. |
| UTZP12 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZР12С. |
Замечания по использованию
| Используются служебные подпрограммы: ZР12С1, ZР12С2, ZР12С3, ZР12С4, ZР12С5. |
DIMENSION A(4), D(4), ROOT(4)
COMPLEX A, D, ROOT
A(1) = (10., 0.)
A(2) = (- 8., 12.)
A(3) = (- 3., - 6.)
A(4) = (1., 0.)
NP = 3
CALL ZP12C (NP, A, D, ROOT, IERR)
Результаты:
IERR = 0
ROOT(1) = (1., 2.)
ROOT(2) = (1., 1.)
ROOT(3) = (1., 3.)