|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/mn/mnb3r.htm
Дата изменения: Thu Nov 26 14:08:54 2015 Дата индексирования: Sun Apr 10 00:46:12 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий ( Фортран ) mnb3r.zip |
Тексты тестовых примеров ( Фортран ) tmnb3r.zip |
|
Текст подпрограммы и версий ( Си ) mnb3r_c.zip |
Тексты тестовых примеров ( Си ) tmnb3r_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) mnb3r_p.zip |
Тексты тестовых примеров ( Паскаль ) tmnb3r_p.zip |
Решение задачи безусловной минимизации диффеpенциpуемой функции многих переменных методом Флетчера - Ривса.
Для решения задачи: min f (x) , x ∈ En используется метод Флетчера - Ривса. Некоторая вычисленная точка x* ∈En считается точкой безусловного минимума функции f (x), если || f ' (x*)||2 ≤ EPS , где f ' (x*) - градиент функции f (x) в точке x*, а EPS - заданная точность вычисления минимума по гpадиенту. Если
n
∑ | xjk - xjk-1 | ≤ EPS ,
j= 1
где k - номеp итерации метода, и в то же время || f ' (x k)||2 > EPS , то считается, что для заданной функции алгоритм не может обеспечить сходимость с точностью EPS.
Для одномерной минимизации функции f (x) вдоль направления спуска используется метод кубической аппроксимации.
Д.Химмельблау, Прикладное нелинейное программирование. Изд - во "Мир", M., 1975.
SUBROUTINE MNB3R (N, M, X1, F, G, EST, EPS, LIMIT, IERR,
H, KOUNT, FUN, GRAD)
Параметры
| N - | размерность пространства переменных (тип: целый); |
| M - | целочисленная переменная, равная 2 * N; |
| X1 - | вещественный вектоp длины N: при обращении к подпрограмме содержит заданную начальную точку поиска, на выходе содержит точку минимального вычисленого значения f (x); |
| F - | вещественная переменная, содержащая вычисленное минимальное значение функции f (x); |
| G - | вещественный вектоp длины N, содержащий градиент функции f (x) в вычисленной точке минимума; |
| EST - | заданное приближенное значение безусловного минимума функции f (x) (см. замечания по использованию) (тип: вещественный); |
| EPS - | заданная точность вычисления минимума по градиенту (тип: вещественный); |
| LIMIT - | заданное максимальное допустимое число итераций метода (тип: целый); |
| IERR - | целочисленная переменная, указывающая пpичину окончания процесса: |
| IERR= -1 - | нет сходимости; |
| IERR= 0 - | найден минимум с заданной точностью; |
| IERR= 1 - | выполнено LIMIT итераций; |
| IERR= 2 - | установлено, что в некотоpом направлении функция f (x) не имеет минимума; |
| H - | вещественный вектоp длины M, используемый в подпрограмме как рабочий; |
| KOUNT - | целая переменная, содержащая фактически выполненное число итераций метода; |
| FUN - | имя подпрограммы вычисления значения функции f (x) (см. замечания по использованию); |
| GRAD - | имя подпрограммы вычисления градиента функции f (x) (см. замечания по использованию). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
|
Оценка EST минимального значения функции f (x) используется в пpоцедуpе одномерной минимизации по направлению. Если приближенное значение минимума можно указать, то это ускоpит процесс минимизации. В противном случае можно положить EST = 0.0 . Подпрограммы FUN и GRAD составляются пользователем. Первый оператор подпрограммы вычисления функции должен иметь вид: SUBROUTINE FUN (X1, F, FE)
Параметры
X1 - вещественный вектор N длины задающий точку
пространства, в которой вычисляется значение функции;
F - вещественная переменная, содержащая
вычисленное значение функции в точке X1;
FE - заданная точность вычисления значения функции
в точке X1 (тип: вещественный);
Параметр FE не должен переопределяться в теле подпрограммы FUN и может не использоваться для вычисления f (x). Первый оператор подпрограммы вычисления градиента функции f (x)должен иметь вид: SUBROUTINE GRAD (X1, G, GE, IO)
Параметры
X1 - вещественный вектор N длины задающий точку
пространства, в которой вычисляется градиент;
G - вещественный вектоp длины N, содержащий
вычисленный градиент функции в точке X1;
GE - заданная точность вычисления компонент
градиента (тип: вещественный);
IO - целочисленная переменная, используемая как рабочая.
Параметры GE и IO не должны переопределяться в теле подпрограммы GRAD и могут не использоваться для вычисления градиента. Имена подпрограммы вычисления значения функции f (x) и ее градиента должны быть определены в вызывающей программе оператором EXTERNAL. |
min f(x) , x ∈ E4 .
f(x) = 100 ( x2 - x12 )2 + (1 - x1)2 + 90 (x4 - x3)2 + (1 - x3)2 +
+ (1 - x3)2 + 10.1 ( (x2 - 1)2 + (x4 - 1)2 ) + 19.8 (x2 - 1) (x4 - 1) .
Точка абсолютного минимума x* = (1., 1., 1., 1.) , f(x*) = 0.
DIMENSION X1(4), G(4), H(8)
EXTERNAL FUND06, GRDD06
DATA N, LIMIT /4, 100/
DATA X1(1), X1(2), X1(3), X1(4) /-3., -1., -3., -1./
EPS = 0.1E-10
EST = 0.0
M = 2*N
CALL MNB3R (N, M, X1, F, G, EST, EPS, LIMIT, IERR, H, COUNT,
* FUND06, GRDD06)
SUBROUTINE FUND06 (X, F, FE)
DIMENSION X(4)
F = 100.*( X(2) - X(1)**2 )**2 + ( 1. - X(1)**2 + 90.*( X(4) - X(3)**2 )**2
* + ( 1. - X(3) )**2 + 10.1*( (X(2) - 1.)**2 + (X(4) - 1.)**2 )
* + 19.8*(X(2) - 1.)*(X(4) - 1.)
RETURN
END
SUBROUTINE GRDD06 (X, G, GE, IO)
DIMENSION X(4), G(4)
G(1) = -400.*X(1)*( X(2) - X(1)**2 ) - 2.*( 1. - X(1) )
G(2) = 200.*( X(2) - X(1)**2 ) + 20.2*( X(2) - 1. ) + 19.8*( X(4) - 1. )
G(3) = -360.*X(3)*( X(4) - X(3)**2 ) - 2.*( 1. - X(3) )
G(4) = 180.*( X(4) - X(3)**2 ) + 20.2*( X(4) - 1. ) + 19.8*( X(2) - 1. )
RETURN
END
Результаты:
IERR = -1
F = 0.3328214 - 09
X1(1) = 1.0000100 + 00
X1(2) = 1.0000190 + 00
X1(3) = 0.99999060 + 00
X1(4) = 0.99998120 + 00
ИTEPAЦИЙ - 62