Текст подпрограммы и версий ( Фортран ) mnl1r.zip |
Тексты тестовых примеров ( Фортран ) tmnl1r.zip |
Текст подпрограммы и версий ( Си ) mnl1r_c.zip |
Тексты тестовых примеров ( Си ) tmnl1r_c.zip |
Текст подпрограммы и версий ( Паскаль ) mnl1r_p.zip |
Тексты тестовых примеров ( Паскаль ) tmnl1r_p.zip |
Минимизация функции многих переменных по заданному направлению на заданном отрезке методом Фибоначчи.
Для решения задачи
min φ (x0 + λ s) , a0 ≤ λ ≤ b0 , λ
где x0, s ∈ En, a0, b0, λ ∈ E1, используется метод Фибоначчи.
Функция φ предполагается строго квазивыпуклой на отрезке [a0, b0] по направлению s.
Hа k - ой итерации метода строится отрезок [ak, bk] такой, что [ak, bk] ⊂ [ak - 1, bk - 1] ⊂ ... ⊂ [a0, b0], и значение λ*k ∈ [ai, bi] для всех i, где λ*k - искомая точка минимума φ (x) по направлению s.
Значение λ*k считается найденым, если для некоторого k выполнено одно из следующих условий:
- длина отрезка [ak, bk] меньше заданного ε > 0;
- | φ (x0 + α s) - φ (x0 + β s) | < ε1
max {| φ (x0 + α s)|, | φ (x0 + β s)|},
где
ak < α < β < bk;
- выполнено максимальное число итераций метода;
- выполнено максимальное число вычислений функции.
В.Г.Карманов. Математическое программирование. M., Изд - во "Наука", 1980.
SUBROUTINE MNL1R (N, X, XMIN, S, FUN, AA, BB, XE, FE, UP, RM, IERR)
Параметры
N - | размерность пространства переменных (тип: целый); |
X - | вещественный вектоp длины N, задающий начальную точку поиска минимума по направлению; |
XMIN - | вещественная переменная, содержащая на выходе шаг по направлению до вычисленной точки минимума; |
S - | вещественный вектоp длины N, задающий направление одномерной минимизации; |
FUN - | имя подпрограммы вычисления значения функции (см. замечания по использованию); |
AA - | вещественная переменная, задающая нижнюю гpаницу исходного отрезка неопределенности; |
BB - | вещественная переменная, задающая верхнюю границу исходного отрезка неопределенности; |
XE - | заданная точность ε вычисления точки минимума по аpгументу - длина конечного отрезка неопределенности (тип: вещественный); |
FE - | заданная точность ε1 вычисления точки минимума по функционалу (тип: вещественный); |
UP - | вещественный вектоp длины 3, содержащий упpавляющие параметры алгоритма (см. замечания по использованию); |
RM - | вещественный вектоp длины N, используемый в подпрограмме как рабочий; |
IERR - | целая переменная, указывающая пpичину окончания процесса: |
IERR= 1 - | если достигнута точность XE; |
IERR= 2 - | если достигнута точность FE; |
IERR= 4 - | если выполнено максимальное число итераций; |
IERR= 5 - | если выполнено максимальное число вычислений функции; |
IERR=65 - | если XE ≤ 0; |
IERR=66 - | если (BB - AA) < 0 или XE > (BB - AA). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
Подпрограмма FUN составляется пользователем. Первый оператор подпрограммы должен иметь вид: SUBROUTINE FUN (X, F, FE) Параметры X - точка, в которой вычисляется значение функции; F - вычисленное значение функции; FE - точность, с которой вычисляется значение F. Имя подпрограммы вычисления функции должно быть определено в вызывающей программе в операторе EXTERNAL. Вектоp UP должен быть задан следующим образом: UP (1) - максимальное допустимое число итераций метода; UP (2) - максимальное допустимое число вычислений функции; UP (3) - определяет вариант алгоритма, т.е. если UP (3) = 1, то на каждой итерации вычисляется только одна контрольная точка, если UP (3) = 2, то вычисляются обе точки. |
min φ (x) , 4.2 ≤ x ≤ 4.8 φ (x) = 100 e -x + x , x* = - ln(0.01) DIMENSION X(1), S(1), RM(1), UP(3) INTEGER N, IERR REAL X, XMIN, S, AA, BB, XE, FE, UP, RM DATA N, X(1), S(1) /1, 0., 1./ DATA AA, BB, FE, XE /4.2, 4.8, 1.E-16, 1.E-6/ DATA UP /100., 100., 1./ EXTERNAL FUNC CALL MNL1R (N, X, XMIN, S, FUNC, AA, BB, XE, FE, UP, * RM, IERR) SUBROUTINE FUNC (X, F, FE) DIMENSION X(1) F = 100.*EXP(-X(1)) + X(1) RETURN END Результаты: IERR = 2 XMIN = 4.60517176