Автор работы: Пользователь скрыл имя, 02 Декабря 2011 в 05:26, практическая работа
Цель: изучить приближённые методы нахождение экстремумов функций двух переменных
Содержание учебного материала:
Функции нескольких переменных.
Частные производные и полный дифференциал 1-го порядка.
Градиент функции. Производная по направлению.
Экстремум функции двух переменных.
Приближённые методы решения задач.
Рассмотрим функцию двух переменных. Ее линии постоянного уровня представлены на рис. 10, а минимум лежит в точке . (Напомним, что линией постоянного уровня называется кривая в двумерном сечении пространства параметров (в данном случае в плоскости (х1, х2), значение функции на которой - константа). Простейшим методом поиска является метод покоординатного спуска. Из точки А мы производим поиск минимума вдоль направления оси х1 и, таким образом, находим точку B, в которой касательная к линии постоянного уровня параллельна оси x1. Затем, производя поиск из точки B в направлении оси x2, получаем точку C, производя поиск параллельно оси x1, получаем точку D, и т.д. Таким образом, мы приходим к оптимальной точке. Любой из одномерных методов, описанных в предыдущей главе, может быть использован здесь для поиска вдоль оси. Очевидным образом эту идею можно применить для функций n переменных.
Рис. 10.
Рассмотрим данный метод более детально на примере некоторой целевой функции.
Пусть
нужно найти наименьшее значение
целевой функции u=f(M)=f(x1,x2
Фиксируем теперь переменные: и рассмотрим функцию f как функцию одной переменной . Изменяя x2, будем опять двигаться от начального значения в сторону убывания функции, пока не дойдем до минимума при . Точку с координатами обозначим через M2, при этом . Проведем такую же минимизацию целевой функции по переменным x3,x4,...,xn. Дойдя до переменной xn, снова вернемся к x1 и продолжим процесс.
Эта процедура вполне оправдывает название метода. С ее помощью мы построим последовательность точек M0,M1,M2,... которой соответствует монотонная последовательность значений функции Обрывая ее на некотором шаге k, можно приближенно принять значение функции f(Mk) за ее наименьшее значение в рассматриваемой области .
Отметим, что данный метод сводит задачу поиска наименьшего значения функции нескольких переменных к многократному решению одномерных задач оптимизации. Если целевая функция f(x1,x2,\ldots,xn задана явной формулой и является дифференцируемой, то мы можем вычислить ее частные производные и использовать их для определения направления убывания функции по каждой переменной и поиска соответствующих одномерных минимумов.
На рис. 11. изображены линии уровня некоторой функции двух переменных u=f(x,y). Вдоль этих линий функция сохраняет постоянные значения, равные 1, 3, 5, 7, 9. Показана траектория поиска ее наименьшего значения, которое достигается в точке O, с помощью метода покоординатного спуска.
При этом нужно ясно понимать, что рисунок служит только для иллюстрации метода. Когда мы приступаем к решению реальной задачи оптимизации, такого рисунка, содержащего в себе готовый ответ, у нас, конечно, нет.
Рис. 11.
Теоретически данный метод эффективен в случае единственного минимума функции. Но на практике он оказывается слишком медленным. Поэтому были разработаны более сложные методы, использующие больше информации на основании уже полученных значений функции. Было предложено несколько функций, которые из-за своих свойств являются тестовыми для таких методов. Ниже приведено несколько примеров таких функций.
Функция Розенброка:
(4.1) |
Функция Пауэлла:
(15) |
Двумерная экспоненциальная функция:
(16) |
Рассмотрим функцию f считая для определенности, что она зависит от трех переменных х, у, z. Вычислим ее частные производные df/dx, df/dy, df/dz и образуем с их помощью вектора, который называют градиентом функции:
Здесь i, j, k - единичные векторы, параллельные координатным осям. Частные производные характеризуют изменение функции по каждой независимой переменной в отдельности. Образованный с их помощью вектор градиента дает общее представление о поведении функции в окрестности точки (x, y, z). Направление этого вектора является направлением наиболее быстрого возрастания функции в данной точке. Противоположное ему направление, которое часто называют антиградиентным, представляет собой направление наиболее быстрого убывания функции. Модуль градиента
определяет
скорость возрастания и убывания
функции в направлении
Перейдем к описанию метода градиентного спуска. Основная его идея состоит в том, чтобы двигаться к минимуму в направлении наиболее быстрого убывания функции, которое определяется антиградиентом. Эта идея реализуется следующим образом.
Выберем каким-либо способом начальную точку, вычислим в ней градиент рассматриваемой функции и сделаем небольшой шаг в обратном, антиградиентном направлении. В результате мы придем в точку, в которой значение функции будет меньше первоначального. В новой точке повторим процедуру: снова вычислим градиент функции и сделаем шаг в обратном направлении. Продолжая этот процесс, мы будем двигаться в сторону убывания функции. Специальный выбор направления движения на каждом шаге позволяет надеяться на то, что в данном случае приближение к наименьшему значению функции будет более быстрым, чем в методе покоординатного спуска.
Метод требует вычисления градиента целевой функции на каждом шаге. Если она задана аналитически, то это, как правило, не проблема: для частных производных, определяющих градиент, можно получить явные формулы. В противном случае частные производные в нужных точках приходится вычислять приближенно, заменяя их соответствующими разностными отношениями:
Отметим, что при таких расчетах , нельзя брать слишком малым, а значения функции нужно вычислять с достаточно высокой степенью точности, иначе при вычислении разности
будет допущена большая ошибка.
На рис. 12 изображены линии уровня той же функции двух переменных u=f(x,y), что и на рис. 11, и приведена траектория поиска ее минимума с помощью метода градиентного спуска. Сравнение рис. 11 и рис. 12 показывает, насколько более эффективным является метод градиентного спуска.
Рис.
11. Поиск наименьшего значения функции
методом градиентного спуска.
Рис. 12. Поиск наименьшего значения
функции методом наискорейшего спуска.
Пример
решения задач
в MathCAD
Экстремум
функции одной
переменной
Поиск экстремума функции включает
в себя задачи нахождения локального и
глобального экстремума. Последние называют
еще задачами оптимизации. Рассмотрим
конкретный пример функции f(x), показанной
графиком на рис. 1 на интервале (-2,5). Она
имеет глобальный максимум на левой границе
интервала, глобальный минимум, локальный
максимум, локальный минимум и локальный
максимум на правой границе интервала
(в порядке слева направо).
В MathCAD с помощью встроенных функций решается
только задача поиска локального экстремума.
Чтобы найти глобальный максимум (или
минимум),требуется либо сначала вычислить
все их локальные значения и потом выбрать
из них наибольший (наименьший), либо предварительно
просканировать с некоторым шагом рассматриваемую
область, чтобы выделить из нее подобласть
наибольших (наименьших) значений функции
и осуществить поиск глобального экстремума,
уже находясь в его окрестности. Последний
путь таит в себе некоторую опасность
уйти в зону другого локального экстремума,
но часто может быть предпочтительнее
из соображений экономии времени.
Рис. 13. График функции f (x)=x4+5-x3-10-x
Для поиска локальных экстремумов имеются
две встроенные функции, которые могут
применяться как в пределах вычислительного
блока, так и автономно.
- Minimize (f, xi, ... ,хм) - вектор значений
аргументов, при которых функция f достигает
минимума;
- Maximize (f, xi,... ,хм) - вектор значений
аргументов, при которых функция f достигает
максимума;
f (xi,... ,хм,...) - функция;
xi, ...,хм- аргументы, по которым производится
минимизация(максимизация).
Всем аргументам функции f предварительно
следует присвоить некоторые значения,
причем для тех переменных, по которым
производится минимизация, они будут восприниматься
как начальные приближения. Примеры вычисления
экстремума функции одной переменной
(рис. 1) без дополнительных условий показаны
в листингах 2-3. Поскольку никаких дополнительных
условий в них не вводится, поиск экстремумов
выполняется для любых значений х от -∞
до ∞.
Листинг 2. Минимум
функции одной переменной
Листинг 3. Максимум
функции одной переменной
Условный
экстремум
В задачах на условный экстремум функции
минимизации и максимизации должны быть
включены в вычислительный блок, т. е. им
должно предшествовать ключевое слово
Given. В промежутке между Given и функцией
поиска экстремума с помощью булевых операторов
записываются логические выражения (неравенства,
уравнения), задающие ограничения на значения
аргументов минимизируемой функции. В
листинге 4 показаны примеры поиска условного
экстремума на различных интервалах, определенных
неравенствами. Сравните результаты работы
этого листинга с двумя предыдущими.
Листинг
4. Три примера поиска
условного экстремума
функции
Экстремум
функции многих переменных
Вычисление экстремума функции многих
переменных не несет принципиальных особенностей
по сравнению с функциями одной переменной.
Поэтому ограничимся примером (листинг
5) нахождения максимума и минимума функции,
показанной в виде графиков трехмерной
поверхности илиний уровня на рис. 2. Привлечем
внимание читателя только к тому, как с
помощью неравенств, введенных логическими
операторами, задается область на плоскости
(X,Y).
Рис. 14. График функции f (х,у)и отрезок
прямой х+у=10
Листинг 5. Экстремум
функции двух переменных
Дополнительные условия могут быть заданы
и равенствами. Например, определение
после ключевого слова Given уравнения х+у=0
приводит к такому решению задачи на условный
экстремум:
Как нетрудно сообразить, еще одно дополнительное
условие привело к тому, что численный
метод ищет минимальное значение функции
f(x,y)вдоль отрезка прямой, показанного
на рис. 2.
Поиск экстремума функции нескольких переменных c помощью функции Minerr:
Задание:
Информация о работе Нахождение экстремумов функций двух переменных приближёнными методами