Текст подпрограммы и версий ( Фортран )
mna4r.zip , mna4d.zip
Тексты тестовых примеров ( Фортран )
tmna4r.zip , tmna4d.zip
Текст подпрограммы и версий ( Си )
mna4r_c.zip , mna4d_c.zip
Тексты тестовых примеров ( Си )
tmna4r_c.zip , tmna4d_c.zip
Текст подпрограммы и версий ( Паскаль )
mna4r_p.zip , mna4e_p.zip
Тексты тестовых примеров ( Паскаль )
tmna4r_p.zip , tmna4e_p.zip

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

Назначение

Поиск локального минимума функции одной переменной модифицированным методом Брента (методом обратной параболической интерполяции с вычислением первой производной).

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

Пусть заданы функция F (X) и три такие точки A, B и C, локализующие минимум функции F (X), что A < B < C, причем F (B) < F (A) и F (B) < F (C).

Подпрограмма MNA4R осуществляет поиск точки XMIN локального минимума функции F (X) на отрезке [A, C] с относительной точностью EPS модифицированным методом Брента (методом обратной параболической интерполяции с вычислением первой производной).

Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1979.

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

    SUBROUTINE  MNA4R (F, FD, A, B, C, EPS, XMIN, FMIN, IFLAG,
                                               ITMAX) 

Параметры

F - имя вещественной подпрограммы - функции вычисления F (X);
FD - имя вещественной подпрограммы - функции вычисления первой производной функции F (X);
A, B, C - заданные значения тройки чисел, локализующих минимум функции F (X) (тип: вещественный);
EPS - заданная относительная точность вычисления минимума функции F (X) на отрезке [A, C] (тип: вещественный);
XMIN - вещественная переменная, значение которой полагается равным найденной точке минимума функции F (X) на отрезке [A, C];
FMIN - вещественная переменная, значение которой полагается равным F (XMIN);
IFLAG - целая переменная, служащая для сообщения о том, удалось ли найти минимум функции F (X) на отрезке [A, C] за ITMAX или меньше итераций; при этом:
IFLAG=0 - когда минимум функции F (X) не найден; тогда XMIN содержит последнее приближение к точке минимума, а FMIN - значение F (X) в этой точке;
IFLAG=1 - когда минимум найден с точностью EPS;
ITMAX - заданное максимальное количество итераций (тип: целый).

Версии

MNA4D - поиск минимума функции одной переменной методом Брента (методом обратной параболической итерации) в режиме удвоенной точности. При этом параметры A, B, C, EPS, XMIN и FMIN должны иметь тип DOUBLE PRECISION, а подпрограммы - функции F и FD должны быть описаны как DOUBLE PRECISION  FUNCTION.

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

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

  В подпрограммах MNA4R и MNA4D имеется общий блок COMMON /MNA4RR/ ITER. Переменная ITER полагается равной количеству итераций, выполненных при поиске минимума функции. Если IFLAG = 0, то ITER = ITMAX. В этом случае следует либо увеличить ITMAX, либо увеличить EPS.

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

       FUNCTION  F (X) 
       F = X*X 
       RETURN 
       END 

       FUNCTION  FD (X) 
       FD = 2.0*X 
       RETURN 
       END 

       EXTERNAL  F, FD 
       A = - 10.0 
       B = - 9.999 
       C = 11.0 
       EPS = 1.E - 6 
       ITMAX = 100 
       CALL  MNA4R (F, FD, A, B, C, EPS, XMIN, FMIN, IFLAG, ITMAX) 

Результаты:

       XMIN  = 0.0 ,     FMIN = 0.0 
       IFLAG = 1 ,        ITER   = 3