|
Текст подпрограммы и версий ( Фортран ) 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 |
Поиск локального минимума функции одной переменной модифицированным методом Брента (методом обратной параболической интерполяции с вычислением первой производной).
Пусть заданы функция 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