Текст подпрограммы и версий
zf12c.zip 
Тексты тестовых примеров
tzf12c.zip 
Текст подпрограммы и версий ( Си )
zf12c_c.zip
Тексты тестовых примеров ( Си )
tzf12c_c.zip
Текст подпрограммы и версий ( Паскаль )
zf12c_p.zip
Тексты тестовых примеров ( Паскаль )
tzf12c_p.zip

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

Назначение

Вычисление нулей комплексной функции методом Мюллера.

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

ZF12C вычисляет нули комплексной функции Y = F (Z), используя метод Мюллера.

D.E.Muller, A Method for Solving Algebraic Equations Using an Automatic Computer, Math. Tab. Wash., 10, 1956.

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

    SUBROUTINE  ZF12C (F, K, NG, N, EPS, NDIG, CROOT, ITER,
                                             ITMAX, IERR) 

Параметры

F - имя комплексной подпрограммы - функции вычисления  F (Z);
K - число известных нулей функции, значения которых должны быть помещены перед началом работы подпрограммы в следующие компоненты вектоpа CROOT: CROOT (1), CROOT (2), ..., CROOT (K) (см. ниже) (тип: целый);
NG - число известных начальных приближений к искомым нулям функции, значения которых должны быть помещены перед началом работы подпрограммы в следующие компоненты вектоpа CROOT: CROOT (K + 1), CROOT (K + 2), ..., CROOT (K + NG) (см. ниже) (тип: целый);
N - заданное число искомых нулей функции (тип: целый);
EPS - первый критерий сходимости: заданная абсолютная погрешность вычисления нулей функции (тип: вещественный);
NDIG - второй критерий сходимости: заданное число значащих цифр, с которыми предполагается вычислять нули функции (тип: целый);
CROOT - комплексный вектоp длины K + N, содержащий вычисленные нули функции; компоненты этого вектоpа CROOT (1), CROOT (2), ..., CROOT (K) содержат значения нулей функции, известных до начала работы подпрограммы, а компоненты CROOT (K + 1), CROOT (K + 2), ..., CROOT (K + N) по окончании работы подпрограммы содержат искомые нули, при этом компоненты CROOT (K + 1), CROOT (K + 2), ..., CROOT (K + NG) перед началом работы подпрограммы могут содержать начальные приближения к искомым нулям;
ITER - целый вектоp длины K + N,  j - я компонента которого содержит число итераций, потребовавшихся для нахождения  j - го нуля функции в соответствии с заданными критериями сходимости;
ITMAX - целая переменная, значение которой перед началом работы подпрограммы должно быть положено равным максимальному числу итераций, ориентировочно требуемых для обеспечения сходимости;
IERR - целая переменная, значение которой в результате работы подпрограммы полагается равным 1, если хотя бы один нуль функции не может быть посчитан в пределах заданного числа итераций.

Версии: нет

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

UTZF10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ZF12C.

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

 

Если ни один из нулей функции перед началом работы подпрограммы не известен, то значение  K полагается равным 0. Точно так же, значение NG должно быть положено pавным 0, если не известно ни одно из приближений к искомым нулям функции. При обращении к подпрограмме может быть задан только первый критерий сходимости (тогда NDIG задается равным 0), либо оба критерия одновременно.

Если  Zi - 1 и  Zi являются двумя последовательными приближениями к  j - му нулю функции, то  Zi принимается за искомый нуль, если выполнен один из двух критериев сходимости

       | F(Zi) | ≤ | EPS |   или   | Zi-1 - Zi | < | Zi | * 10 (- NDIG ) . 

Если при вычислении  j - го нуля функции заданные критерии сходимости не выполняются, то ITER (J) полагается равным либо ITMAX + 1, либо ITMAX + L, где L > 1.

В случае, когда ITER (J) = ITMAX + 1, то это означает, что ZF12C не в состоянии удовлетворить заданным критериям сходимости в пределах ITMAX итераций (рекомендуется увеличить значение ITMAX).

Если ITER (J) = ITMAX + L, то это означает, что сходимость была достигнута за  L итераций для функции

       FP(Z) = F(Z) / ( (Z - ROOT(1)) ... (Z - ROOT(J-1)) )  ,   
но не была достигнута для функции  F (Z). B этом случае можно попытаться задать более лучшие начальные приближения либо смягчить критерии сходимости.

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

       COMPLEX FUNCTION  F(Z)
       COMPLEX  Z, ONE
       DATA  ONE /(1.0, 0.0)/
       F = Z**5 - ONE
       RETURN
       END

       EXTERNAL  F
       COMPLEX  F, CROOT
       INTEGER  ITER
       DIMENSION  CROOT(5), ITER(5)
       K = 0
       NG = 0
       N = 5
       EPS = 0.0
       NDIG = 5
       ITMAX = 200
       CALL  ZF12C (F, K, NG, N, EPS, NDIG, CROOT, ITER,
     *                         ITMAX, IERR)

Результаты:

       CROOT(1)  =  (- 0.809017,   0.587785) , 
       CROOT(2)  =  (  0.309017, - 0.951056) , 
       CROOT(3)  =  (  0.309017,   0.951056) , 
       CROOT(4)  =  (- 0.809017, - 0.587785) , 
       CROOT(5)  =  ( 1.0,  0.0)
       
       ITER  =  (26,  10,  10,  4,  4)