Текст подпрограммы и версий ( Фортран ) mnb5r.zip |
Тексты тестовых примеров ( Фортран ) tmnb5r.zip |
Текст подпрограммы и версий ( Си ) mnb5r_c.zip |
Тексты тестовых примеров ( Си ) tmnb5r_c.zip |
Текст подпрограммы и версий ( Паскаль ) mnb5r_p.zip |
Тексты тестовых примеров ( Паскаль ) tmnb5r_p.zip |
Решение задачи безусловной минимизации функции многих переменных по заданному направлению (задача одномерной минимизации) методом квадратичной аппроксимации.
Для решения задачи:
min f(x0 + λ s0) , -∞ < λ < ∞ , x0∈En , s0∈En , λ
x0 и s0 заданы, используется метод квадратичной аппроксимации Пауэлла.
Для определения отрезка вдоль направления s0, содержащего точку минимума функции f (x), используется алгоритм Девиса - Свена - Кемпи.
Минимум f (x) по направлению s0 считается найденным, если выполнено хотя бы одно из следующих условий:
1. |
min | xi - xi | ≤ XLIM ,
i
где xi = x0 + λi s0 - три точки ( i = 1, 2, 3), по которым строится аппpоксимиpующая парабола, x = x0 + λ s0 - точка минимума параболы, а XLIM - заданная точность решения задачи по аpгументу; |
2. | | f (xk) - f (xk+1)| ≤ EPS, где xk = x0 + λk s0 - точка минимума аппpоксимиpующей параболы на k - ой итерации алгоритма Пауэлла, а EPS - заданная точность решения задачи по функционалу. |
Д.Химмельблау, Прикладное нелинейное программирование. Изд - во "Мир", M., 1975, 54 - 55.
SUBROUTINE MNB5R (N, X, S, XX, DELX, EPS, XLIM, XMIN, YMIN, KOUNT, IERR, FUN)
Параметры
N - | размерность пространства переменных (тип: целый); |
X - | вещественный вектоp длины N, задающий начальную точку x0 поиска минимума f (x) по направлению; |
S - | вещественный вектоp длины N, задающий направление s0 одномерной минимизации; |
XX - | вещественный вектоp длины N, используемый в подпрограмме как рабочий; |
DELX - | заданный начальный шаг одномерного поиска (тип: вещественный); |
EPS - | заданная точность вычисления одномерного минимума по функционалу (тип: вещественный); |
XLIM - | заданная точность вычисления одномерного минимума по аpгументу (тип: вещественный); |
XMIN - | вещественная переменная, содержащая расстояние до точки минимума f (x) вдоль s0, т.е. x* = x0 + XMIN * S0; |
YMIN - | вещественная переменная, содержащая вычисленное минимальное значение функции f (x) вдоль направления s0, т.е. YMIN = f (x*); |
KOUNT - | целая переменная, содержащая фактически выполненное число вычислений функции f (x) в процессе одномерной минимизации; |
IERR - | целочисленная переменная, указывающая пpичину окончания процесса: |
IERR= 0 - | найден минимум с заданной точностью; |
IERR= 1 - | установлено, что минимум f (x) вдоль направления s0 из заданной точки x0 не существует; |
FUN - | имя подпрограммы вычисления значения функции f (x) (см. замечания по использованию). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
Подпрограмма FUN составляется пользователем. Первый оператор подпрограммы вычисления функции должен иметь вид: SUBROUTINE FUN (X, F, FE) Параметры X - вещественный вектор длины N, задающий точку пространства, в которой вычисляется значение функции; F - вещественная переменная, содержащая вычисленное значение функции в точке X; FE - заданная точность вычисления значения функции в точке X (тип: вещественный). Параметр FE не должен переопределяться в теле подпрограммы FUN и может не использоваться для вычисления f (x). |
min f(x) , x ∈ E1 , x0 = 0.0 , s0 = 1.0 , f(x) = 100 * e-x + x .
Точка минимума f(x) вдоль s pавна
xk = - ln (0.01) , f(xk) = i - ln (0.01)
DIMENSION X(1), S(1), XX(1)
EXTERNAL FUNC
DATA N, XLIM, DELX, EPS, X(1), S(1) /1, 1.E-6, 0.5, 1.E-7, 0., 1./
CALL MNB5R (N, X, S, XX, DELX, EPS, XLIM, XMIN,
* YMIN, KOUNT, IERR, FUNC)
Подпрограмма вычисления функции f(x):
SUBROUTINE FUNC (X, F, FE)
DIMENSION X(1)
F = 100.*EXP(-X(1)) + X(1)
RETURN
END
Результаты:
IERR = 0
KOUNT = 15
XMIN = 4.6057000 + 00
YMIN = 5.6051700 + 00