Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб ЧМ для АЭС.doc
Скачиваний:
15
Добавлен:
21.11.2019
Размер:
415.74 Кб
Скачать

Лабораторная работа №6 Изучение алгоритмов численного нахождения минимума функций нескольких переменных

Трудности задачи поиска экстремумов, характерные для функции нескольких переменных, проявляются уже при решении задачи поиска минимума функции двух переменных F(x,y). Графически функцию F(x,y) можно изобразить не только в виде плоской поверхности в трехмерном пространстве, но и в виде «плоских» линий уровня , являющихся проекциями на плоскость OXY сечения поверхности z = F(x,y) плоскостью z0 = F0.

Выделяют три основных типа рельефа поверхности:

  1. Котловинный – линии уровня похожи на концентрические эллипсы (рис. 6.1).

  2. Овражный – линии уровня кусочно-гладкие. Геометрическое место точек излома по всем линиям уровня называют истинным оврагом, если угол излома направлен в сторону возрастания функции, или истинным гребнем, если угол излома направлен в сторону убывания функции. К этому же типу относят функции, линии уровня которых имеют не изломы, а участки с очень большой кривизной, называемых разрешимыми оврагами. Например, функция Розенброка - одна из стандартных тестовых функций многомерной оптимизации (рис 6.2).

  3. Неупорядоченный тип рельефа – характеризуется наличием многих максимумов и минимумов (рис. 6.6).

а b

Рис. 6.1. Поверхность (а) и линии уровня (b)

функции с котловинным рельефом

а b

Рис. 6.2. Поверхность (а) и линии уровня (b) функции Розенброка

с овражным рельефом

а b

Рис. 6.6. Поверхность (а) и линии уровня (b) функции

с неупорядоченным рельефом

Рассмотрим несколько методов поиска минимума функции нескольких переменных.

Изучение алгоритмов численного нахождения минимума функции нескольких переменных в Excel

Найдем минимум функции F(x,y)=sin(y)*cos(x) в области x[‑3,3], y[-3,0]. Чтобы представить себе тип исследуемой поверхности, постройте в программе MathCAD её график.

Метод покоординатного спуска.

Задание 1: Начинать можно с любой точки (x0,y0), принадлежащей указанной области.

1 шаг: фиксируем одну координату (присваиваем ей некоторое конкретное значение), например, координату x. Находим экстремум получившейся функции одной переменной y либо аналитически, либо любым из изученных численных методов. В результате получили некоторое промежуточное значение ymin1.

2 шаг: фиксируем другую координату y = ymin1. Находим экстремум получившейся функции одной переменной x. В результате получили некоторое промежуточное значение xmin1.

3 шаг: снова фиксируем первую координату x = xmin1. Находим экстремум получившейся функции одной переменной y любым из изученных методов. В результате получили некоторое промежуточное значение ymin2.

4 шаг: получаем значение xmin2.

И т.д.

Расчет заканчиваем в том случае, когда расстояние d от предыдущей точки (xmini-1, ymini-1) до точки, полученной в результате последней итерации (xmini, ymini), станет меньше выбранной вами точности. Результаты промежуточных вычислений оформите в виде таблицы.

Метод Хука-Дживса.

Задание 2: Исследующий поиск начинать можно с любой точки (x0,y0), принадлежащей указанной области. Далее нужно выбрать величину шага, которая может быть различной для разных координатных направлений. Для удобства выберите одинаковый шаг h=0,1.

1 шаг: считаем значение функции в базовой точке F0=F(x0,y0). Делаем шаг вправо и считаем значение функции в найденной точке F01=F(x0+h,y0). Если F01<F0, то мы сделали шаг в нужном направлении, в обратном случае делаем шаг влево и считаем значение функции в другой точке F02=F(x0-h,y0). Если F02<F0, значит, мы сделали шаг в нужном направлении, в обратном случае координата x на этом шаге не изменяется.

Теперь делаем шаг вверх и считаем значение функции в найденной точке F03=F(x0,y0+h). Если F03<F0, то мы сделали шаг в нужном направлении, в обратном случае делаем шаг влево и считаем значение функции в другой точке F04=F(x0,y0-h). Если F04<F0, значит, мы сделали шаг в нужном направлении, в обратном случае нужно уменьшить значение шага (например, вдвое), так как мы подошли слишком близко к точке минимума.

В результате вышеописанных действий мы получили новое значение базовой точки (x1,y1).

2 шаг: Считаем значение функции в базовой точке F1=F(x1,y1). Попытаемся выполнить поиск по образцу. Делаем такие же шаги в направлении обеих осей, которые привели к успеху на шаге 1. Получаем точку (x2,y2), считаем значение F2=F(x2,y2). Если F2<F1, поиск по образцу завершился успехом, и шаг 2 можно повторить. В противном случае возвращаемся к шагу 1 с базовой точкой (x1,y1).

Результаты промежуточных вычислений можно оформить в виде таблицы со следующими заголовками:

H

x

y

x+h

x-h

y+h

y-h

f(x,y)

f(x+h,y)

f(x-h,y)

f(x,y+h)

f(x,y-h)

[…]

[…]

[…]

[…]

[…]

[…]

[…]

[…]

[…]

[…]

[…]

[…]

Расчет заканчиваем, когда значение шага будет меньше выбранной вами точности (не более 0,01).

Метод градиентного спуска.

Задание 3: Будем двигаться к минимуму в направлении наиболее быстрого убывания функции (в антиградиентном направлении). Выберите некоторое начальное приближение (x0,y0) и найдите в данной точке значения градиента hx=F/x при x = x0 и hy=F/y при y = y0. Теперь нам нужно сделать шаг в антиградиентном направлении: xi = xi-1 - α·hx, yi = yi-1 - α·hy. Расчет заканчиваем в том случае, когда расстояние d от предыдущей точки (xi-1, yi-1) до точки, полученной в результате последней итерации (xi, yi), станет меньше выбранной вами точности. Результаты промежуточных вычислений оформите в виде таблицы:

α

x

y

d/dx

d/dy

f(x,y)

d

[…]

[…]

[…]

[…]

[…]

[…]

[…]