Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие (MathCad).doc
Скачиваний:
95
Добавлен:
27.11.2019
Размер:
3.98 Mб
Скачать

2.6.3. Поиск минимума тестовой функции Розенброка

Описанные выше приемы можно распространить и на случаи оптимизации функций двух и более переменных. При этом приходится переходить от решения одного уравнения к решению системы уравнений, что в Mathcad не принципиально.

Для проверки алгоритмов оптимизации математики придумали множество каверзных функций, называемых тестовыми функциями. Обычно эти функции имеют какие-то особенности, вызывающие большие трудности при реализации типовых алгоритмов оптимизации. Тестирование их по этим функциям дает наибольшую гарантию в получении правильных результатов оптимизации. Одной из таких функций является функция Розенброка.

П ример 2.30. Найти минимум функции Розенброка, представленной на рис. 2.7. Там же показано решение этой задачи с помощью функции Minerr.

Рис. 2.7. Минимизация функции Розенброка с помощью функции Minerr системы Mathcad

Из этого документа хорошо видно, что примененный для функции одной переменной прием (приравнивание к нулю производной функции) вполне применим и для функции двух переменных. Точное значение функции 0 при x=y=1. На рис. 2.7 построен также график трехмернойповерхности, описываемой функцией Розенброка. Из это го графика видно, что эта поверхность и впрямь напоминает овраг с очень пологим дном, что и затрудняет поиск ее минимума, значение которого 0 при x=y=1 видно при первом взгляде на функцию. К сожалению, по осям x и y у графика функции отложены не реальные значения x и y, а значения индексов матрицы поверхности M.

2.6.4. Функции maximize и minimize системы Mathcad

Начиная с Mathcad 8.0/8.02 были введены специальные функции для поиска максимума и минимума функций ряда переменных f(x1, x2,...,xn. Это следующие функции:

maximize(f,x1, x2,...,xn)

minimize(f,x1, x2,...,xn).

Обе эти функции реализованы достаточно универсальными алгоритмами оптимизации, которые не требуют вычисления производных функции f(x1, x2,...,xn), что не только упрощает запись алгоритмов, но и позволяет решать задачи, у которых вычисления производных по тем или иным соображениям нежелательны.

Эти функции должны использоваться в составе блока решения, открываемого словом Given, и возвращать вектор неизвестных, при котором заданная функция имеет максимальное или минимальное значение соответственно. Внутри блока могут быть различные ограничительные условия в виде равенств или неравенств. Пример на минимизацию функций с ограничениями можно найти в справке по системе Mathcad.

Особое место занимают задачи, в которых целевая функция линейна, а при ее оптимизации учитываются различные ограничивающие условия в виде неравенств или равенств. Эти задачи относятся к разделу линейного программирования. Они широко используются при решении экономических и организационных вопросов, например для минимизации затрат на производство изделий, оптимизации транспортных путей и так далее (см. Главу 4).

2.7. Разложение функций в ряды

2.7.1. Определение рядов Тейлора и Маклорена

Очень часто желательно представление тех или иных функций f(x) в достаточно простом и единообразном виде. Эта задача решается методами аппроксимации, которые мы рассмотрим позже. Пока же зададимся более простой задачей - представления функций в виде степенного многочлена F(x) в окрестности заданной на оси абсцисс точки x=x0. Такое приближенное разложение было впервые получено Тейлором и получило название ряда Тейлора. Его отрезок:

f'(x0) f''(x0) f(n)(x0)

F(x) f(x0) +  (x-x0) +  (x-x0)2 + ...+  (x-x0)n.

1! 2! n!

Если разложение выполняется относительно точки x=0, его принято называть рядом Маклорена. Отрезок такого ряда записывается как:

f'(0) f''(0) f'''(0) f(n)(0)

F(x) f(0) +  x +  x2 +  x3 + ...+  xn.

1! 2! 3! n!

Операции разложения в отрезки рядов Тейлора и Маклорена настолько распространены, что включены в набор функций практически всех математических систем.