,
4.3 Метод градиента
Алгоритм метода
Постановка задачи:
Формула градиента функции:
где - направляющие вектора по оси ., где - точка приложения
Признак окончания поиска:
Направление определяется направляющими косинусами:
где .
Алгоритм поиска методом градиента:
1. Выбирается исходная точка поиска в области допустимых управлений (решений):
.
В ней вычисляется значение функции, направляющие косинусы и оценки частных производных .
Перейдем от частных производных к отношению приращений:
. Направляющие косинусы вычисляются по следующей формуле:
где .
1. Формируется шаг в направлении градиента следующим образом:
, где
Знак "+" ставится в задачах максимизации,
"-" - в задачах минимизации.
Существуют различные способы формирования шага. Широко распространен способ формирования шага пропорционально модулю градиента.
.
- начальная величина шага.
2. Алгоритм движения вдоль j-й координатной оси:
При каждом шаге в направлении градиента вычисляется целевая функция в полученной точке и частные производные по каждой из переменных .
3. Проверяется выполнение признака окончания поиска:
, где малая величина.
4.4 Методом наискорейшего спуска
Алгоритма метода
Метод является синтезированным из двух описанных выше. В данном методе движение из исходной точки происходит в направлении градиента n до выполнения условия , . Из точки, в которой выполнено это условие, движение осуществляется в направлении градиента, т.е. перпендикулярно предыдущему направлению. Поиск заканчивается по тому же условию, что и в двух предыдущих.
4.5 Пример выполнения задания
Исследуемая функция F(X, Y) = 100+38*x+2*x*x+51*y+51*y*y+20*x*y
Интервал по X = [-374,86848,-339,16672]
Интервал по Y = [66,0288,72,9792]
Требуемая точность: E = 0,01
Начальный шаг h0 = 0,01
Сигма sigX = 0,0001
Сигма sigY = 0,0001
ДельтаX = 1E-5
ДельтаY = 1E-5
Координаты стартовой точки:
X начальное = -365,94304
Y начальное = 67,7664
.5.1 Метод Гаусса-Зейделя
Значение функции в текущей точке Fn(x, y) F0 = -4287,44717127684
Значение частной производной по x = -70,4441335983574
Значение частной производной по y = -355,687492992729
< . Начинаем поиск вдоль по оси оy
Вычислим новую точку y = y - sign()*h = 67,7689
|