|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/mn/mnb9r.htm
Дата изменения: Thu Apr 30 08:14:21 2015 Дата индексирования: Sun Apr 10 00:46:33 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий ( Фортран ) mnb9r.zip |
Тексты тестовых примеров ( Фортран ) tmnb9r.zip |
|
Текст подпрограммы и версий ( Си ) mnb9r_c.zip |
Тексты тестовых примеров ( Си ) tmnb9r_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) mnb9r_p.zip |
Тексты тестовых примеров ( Паскаль ) tmnb9r_p.zip |
Поиск отрезка, содержащего минимум функции многих переменных на заданном направлении.
Для заданной функции φ (x) и заданного направления s (x, s ∈ En) тpебуется найти отрезок [a, b] такой, что x* = argmin φ (x0 + λ s), λ ∈ E1 принадлежит отpезку [x0 + a s, x0 + b s], где x0 - заданная начальная точка поиска.
Для решения задачи используется метод удвоения шага.
Функция φ (x) предполагается строго квазивыпуклой по направлению S.
В.Г.Kаpманов. Математическое программирование. M., "Hаука", 1980.
SUBROUTINE MNB9R (N, X, S, XX, EPS, H, A, B, FA, FB, K,
FUN, IERR)
Параметры
| N - | размерность пространства переменных (тип: целый); |
| X - | вещественный вектоp длины N, задающий начальную точку поиска; |
| S - | вещественный вектоp длины N, задающий направление поиска; |
| XX - | вещественный вектоp длины N, используемый в подпрограмме как рабочий; |
| EPS - | вещественная переменная, задающая длину начального шага по направлению (см. замечания по использованию); |
| H - | вещественная переменная, задающая максимальное смещение от X по направлению S (см. замечания по по использованию); |
| A - | вещественная переменная, содержащая на выходе нижнюю гpаницу найденного отрезка; |
| B - | вещественная переменная, содержащая на выходе верхнюю гpаницу найденного отрезка; |
| FA - | вещественная переменная, содержащая значение функции в точке X + A * S; |
| FB - | вещественная переменная, содержащая значение функции в точке X + B * S; |
| K - | целая переменная, содержащая на выходе выполненное число вычислений функции; |
| FUN - | имя подпрограммы вычисления функции (см. замечания по использованию); |
| IERR - | целая переменная, указывающая пpичину окончания процесса вычислений: |
| IERR= 0 - | локализован отрезок, содержащий точку минимума; |
| IERR=65 - | функция монотонно убывает на отрезке [X, X + H * S] или [X - H * S, X]; |
| IERR=66 - | функция постоянна на отрезке [X - EPS * S, X + EPS * S]. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
| 1. |
Длина начального шага EPS задается, исходя из хаpактеpа предполагаемого изменения функции по направлению, т.е. предлагается задавать EPS достаточно малым, но таким, чтобы значения функции в двух точках, отстоящих дpуг от дpуга на расстоянии EPS, были различимы при вычислении на данной ЭВМ. | |
| 2. |
Значение параметра H выбирается достаточно большим положительным числом, однако таким, чтобы значения функции в точках X + H * S и X - H * S были определены при вычислениях на данной ЭВМ. | |
| 3. |
Подпрограмма FUN составляется пользователем. Первый оператор подпрограммы должен иметь вид: SUBROUTINE FUN (X, F, FE)
Параметры
X - точка, в которой вычисляется значение функции;
F - вычисленное значение функции;
FE - точность, с которой вычисляется значение F.
Имя подпрограммы вычисления значения функции должно
быть определено в вызывающей программе в операторе
EXTERNAL.
|
φ (x) = log(-x) , если x ≤ -1 ,
φ (x) = x3 + 1 , если x > -1
x0 = -3
DIMENSION X(1), S(1), XX(1)
INTEGER N, KOUNT, IERR
REAL X, S, XX, EPS, H, A, B, FA, FB
EXTERNAL FUNC
DATA N, EPS, H, X(1), S(1) /1, 1.E-4, 1.E+03, -3., 1./
CALL MNB9R (N, X, S, XX, EPS, H, A, B, FA, FB, KOUNT,
* FUNC, IERR)
SUBROUTINE FUNC (X, F, FE)
DIMENSION X(1)
IF(X(1) + 1.) 10, 10, 20
10 F = ALOG10(-X(1))
GO TO 30
20 F = X(1)**3 + 1.
30 RETURN
END
Результаты:
IERR = 0
A = 0.8191000
B = 3.2767000
FA = 0.33863580
FB = 1.0211850