На чтение 6 мин Просмотров 1.9к.
Содержание
- 1. Поиск экстремума функции
- 2. Экстремум функции одной переменной
- 3. Условный экстремум
- Александр Малыгин
- 2 Комментарии “ Оптимизация функций одной и нескольких переменных в PTC MathCAD ”
9. Нахождение экстремумов функций
MathCAD позволяет находить экстремумы функций, которые имеют конечное количество экстремумов. Для нахождения экстремума используются функции Minimize и Maximize .
На рис.14 показан пример использования функции нахождения минимума. Нахождение максимума происходит аналогично, за исключением того, что функцию Minimize необходимо заменить на Maximize . В данном примере показан случай, когда максимум функции не может быть найден.
8.6.1. Экстремум функции одной переменной
Поиск экстремума функции включает в себя задачи нахождения локального и глобального экстремума. Последние называют еще задачами оптимизации. Рассмотрим конкретный пример функции f(x), показанной графиком на рис. 8.8 на интервале (-2,5). Она имеет глобальный максимум на левой границе интервала, глобальный минимум, локальный максимум, локальный минимум и локальный максимум на правой границе интервала (в порядке слева направо).
В Mathcad с помощью встроенных функций решается только задача поиска локального экстремума. Чтобы найти глобальный максимум (или минимум), требуется либо сначала вычислить все их локальные значения и потом выбрать из них наибольший (наименьший), либо предварительно просканиро-вать с некоторым шагом рассматриваемую область, чтобы выделить из нее подобласть наибольших (наименьших) значений функции и осуществить поиск глобального экстремума, уже находясь в его окрестности. Последний путь таит в себе некоторую опасность уйти в зону другого локального экстремума, но часто может быть предпочтительнее из соображений экономии времени.
Рис. 8.8. График функции f(х)=х 4 +5х 3 -10х
Для поиска локальных экстремумов имеются две встроенные функции, которые могут применяться как в пределах вычислительного блока, так и автономно.
- Minimize (f, x1, . ,хм) — вектор значений аргументов, при которых функция f достигает минимума;
- Maximize (f, х1, . ,хм) — вектор значений аргументов, при которых функция f достигает максимума;
- f (x1, . , хм. ) — функция;
- x1, . , xм — аргументы, по которым производится минимизация (максимизация).
Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Примеры вычисления экстремума функции одной переменной (рис. 8.8) без дополнительных условий показаны в листингах 8.11- 8.12. Поскольку никаких дополнительных условий в них не вводится, поиск экстремумов выполняется для любых значений.
Листинг 8.11. Минимум функции одной переменной
Листинг 8.12. Максимум функции одной переменной
Как видно из листингов, существенное влияние на результат оказывает выбор начального приближения, в зависимости от чего в качестве ответа выдаются различные локальные экстремумы. В последнем случае численный метод вообще не справляется с задачей, поскольку начальное приближение х=-10 выбрано далеко от области локального максимума, и поиск решения уходит в сторону увеличения f (х).
1. Поиск экстремума функции
Задачи поиска экстремума функции означают нахождение ее максимума (наибольшего значения) или минимума (наименьшего значения) в некоторой области определения ее аргументов. Ограничения значений аргументов, задающих эту область, как и прочие дополнительные условия, должны быть определены в виде системы неравенств и (или) уравнений. В таком случае говорят о задаче на условный экстремум.
Для решения задач поиска максимума и минимума в Mathcad имеются встроенные функции Minerr, Minimize и Maximize. Все они используют те же градиентные численные методы, что и функция Find для решения уравнений.
2. Экстремум функции одной переменной
Поиск экстремума функции включает в себя задачи нахождения локального и глобального экстремума. Последние называют еще задачами оптимизации. Рассмотрим конкретный пример функции f(x), показанной графиком на рис.2 на интервале (-2,5). Она имеет глобальный максимум на левой границе интервала, глобальный минимум, локальный максимум, локальный минимум и локальный максимум на правой границе интервала (в порядке слева направо).
В Mathcad с помощью встроенных функций решается только задача поиска локального экстремума. Чтобы найти глобальный максимум (или минимум), требуется либо сначала вычислить все их локальные значения и потом выбрать из них наибольший (наименьший), либо предварительно просканировать с некоторым шагом рассматриваемую область, чтобы выделить из нее подобласть наибольших (наименьших) значений функции и осуществить поиск глобального экстремума, уже находясь в его окрестности. Последний путь таит в себе некоторую опасность уйти в зону другого локального экстремума, но часто может быть предпочтительнее из соображений экономии времени.
Рис. 1. График функции f(х)=х 4 +5х 3 -10х
Построим график заданной функции (рис.1). По графику видны участки локальных экстремумов функции.
Для поиска локальных экстремумов имеются две встроенные функции, которые могут применяться как в пределах вычислительного блока, так и автономно.
· Minimize (f, x1, … ,хм) — вектор значений аргументов, при которых функция f достигает минимума;
· Maximize (f, х1, … ,хм) — вектор значений аргументов, при которых функция f достигает максимума;
Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Примеры вычисления экстремума функции одной переменной (рис.1) без дополнительных условий показаны в листинге на рис.2. Поскольку никаких дополнительных условий в них не вводится, поиск экстремумов выполняется для любых значений.
Рис.2. Поиск локальных экстремумов функции одной переменной
Как видно из листинга, существенное влияние на результат оказывает выбор начального приближения, в зависимости от чего в качестве ответа выдаются локальные различные экстремумы. В последнем случае численный метод вообще не справляется с задачей, поскольку начальное приближение х=-10 выбрано далеко от области локального максимума, и поиск решения уходит в сторону увеличения f (х).
3. Условный экстремум
В задачах на условный экстремум функции минимизации и максимизации должны быть включены в вычислительный блок, т. е. им должно предшествовать ключевое слово Given. В промежутке между Given и функцией поиска экстремума с помощью булевых операторов записываются логические выражения (неравенства, уравнения), задающие ограничения на значения аргументов минимизируемой функции. На рис.3 показаны примеры поиска условного экстремума на различных интервалах, определенных неравенствами. Сравните результаты работы этого листинга с двумя предыдущими.
Рис. 3. Три примера поиска условного экстремума функции
Не забывайте о важности выбора правильного начального приближения и в случае задач на условный экстремум. Например, если вместо условия — 3 Скачать пример
Александр Малыгин
Объект обсуждения – программное обеспечение для выполнения автоматизированного конструкторского и технологического проектирования, разработки управляющих программ, вопросы, связанные с разработкой прикладных САПР.
2 Комментарии “ Оптимизация функций одной и нескольких переменных в PTC MathCAD ”
Спасибо, очень информативано! Скажите, а для 9 переменных такая же функция и такой же принцип используется?
Функция будет другая. Вы сами подбираете вид функции, остальное аналогично.
Г Л АВ А 6
Оптимизация
В этой главе рассматриваются задачи на поиск экстремума функций и близкие к ним задачи приближенного решения алгебраических нелинейных уравнений и систем. Задачи поиска экстремума функции означают нахождение ее максимума (наибольшего значения) или минимума (наименьшего значения) в некоторой области определения ее аргументов. С вычислительной точки зрения две задачи являются практически одинаковыми, так как, например, задача поиска максимума f(x) тождественна проблеме отыскания минимума -f(x). Поэтому ниже будем часто называть задачу поиска экстремума функции задачей минимизации.
Общая проблема поиска экстремума функции включает в себя задачи нахождения
локального и глобального минимума. Последние называют еще задачами оптими-
зации, и решить их, как правило, намного труднее, поскольку они подразумевают локализацию всех минимумов f(x) и выбор из них наименьшего. (На рис. 6.1 показаны два локальных минимума функции, из которых левый является глобальным.) Ограничения значений аргументов, задающих область определения f(x), как и прочие дополнительные условия, могут быть определены в виде системы неравенств и (или) уравнений. В таком случае говорят о задаче на условный экстремум.
Численные методы, применяемые для минимизации, сходны с методами решения нелинейных уравнений, и поэтому материал этой главы близок по содержанию к предыдущей.
ПРИМЕЧАНИЕ
Решение задач минимизации в Mathcad реализовано только при помощи численного алгоритма. Таким образом, непосредственное символьное нахождение минимума невозможно. Однако аналитический поиск экстремума функции несложно запрограммировать, опираясь на соответствующие сведения математического анализа (см. разд. 6.1.5).
Для численного решения задач поиска локального максимума и минимума в Mathcad имеются встроенные функции Minerr, Minimize и Maximize. Принцип их
178 |
Глава 6 |
|
Рис. 6.1. К пояснению задач поиска локального и глобального экстремума
действия очень близок к принципу расчетов, заложенных во встроенной функции Find, предназначенной для решения алгебраических уравнений (см. главу 5). В частности, все встроенные функции минимизации используют те же градиентные численные методы, что и функция Find, поэтому допускается “вручную” выбирать численный алгоритм минимизации из уже рассмотренных нами численных методов (см. разд. 5.3.2). Кроме того, как и в случае решения уравнений, применение градиентного алгоритма, во-первых, требует задания некоторого начального приближения к точке минимума и, во-вторых, позволяет отыскать лишь один (т. е. локальный) из минимумов функции.
Таким образом, как и в случае решения уравнений (см. разд. 5.2.4), чтобы найти глобальный максимум (или минимум), требуется сначала просканировать с некоторым шагом рассматриваемую область и вычислить все локальные значения и потом выбрать из них наибольший (наименьший). Другим вариантом будет простое сканирование с вычислением значений функции, позволяющее выделить из нее подобласть наибольших (наименьших) значений функции и осуществить поиск глобального экстремума, уже находясь в его окрестности. Последний путь таит в себе некоторую опасность уйти в зону другого локального экстремума, но часто может быть предпочтительнее из соображений экономии времени.
6.1.1. Локальный экстремум
Для поиска локальных экстремумов имеются две встроенные функции, которые могут применяться как в пределах вычислительного блока, так и автономно:
Minimize(f,x1,…,xM) — вектор значений аргументов, при которых функция f достигает минимума;
ся для любых значений x от –
Maximize(f,x1,…,xM) — вектор значений аргументов, при которых функция f достигает максимума:
f(x1,…,xM,…) — функция;
x1,…,xM — аргументы, по которым производится минимизация (максимизация).
ПРИМЕЧАНИЕ
Вычислительный блок (ключевое слово Given со следующими после него логическими выражениями) обычно используется в задачах на условный экстремум (см. следующий раздел).
В качестве примера рассмотрим задачу численного поиска экстремумов полинома четвертой степени f(x), график которого был приведен на рис. 6.1. Как известно, парабола четвертой степени имеет три точки экстремума, и все они видны на рис. 6.1.
Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Примеры вычисления локальных экстремумов функции одной переменной показаны в листингах 6.1 и 6.2. Поскольку никаких дополнительных условий в них не вводится, поиск экстремумов выполняет-
до .
Листинг 6.1. Поиск минимума функции одной переменной (для трех начальных значений x)
f(x) x4 3x3 2x2 x 0.5 x 0
Minimize (f x) 0.175 x 100
Minimize (f x) 1.425 x 1.426
Minimize (f x) 0.175
Листинг 6.2. Поиск максимума функции одной переменной
f(x) x4 3x3 2x2 x 0.5 x 5
Maximize (f x) 1 x 10
Maximize (f x)
Как видно из листингов, существенное влияние на результат оказывает выбор начального приближения, в зависимости от чего в качестве ответа выдаются различ-
ные локальные экстремумы. Очень полезно сопоставить результаты минимизации (листинг 6.1) с графиком функции f(x) (см. рис. 6.1). Как видно, функция Minimize очень уверенно находит глубокий минимум x=-0.75. А вот на второй (плохо выраженный) минимум можно набрести лишь случайно, выбирая определенные начальные значения x. В последнем из трех примеров демонстрируется, что если взять начальное приближение x даже в непосредственной близости от этого локального минимума, численный метод все равно “сваливается” в первый, более глубокий минимум f(x). Попробуйте повторить расчеты, выбирая различные начальные значения, чтобы в этом убедиться.
В листинге 6.2 показаны аналогичные свойства функции Maximize. Если начальное приближение выбрать удачно, то итерационный процесс алгоритма сойдется к максимуму функции, а вот если выбрать его вдали от него, на участке f(x), где неограниченно возрастает (при x ± ), численный метод вообще не справится с задачей, выдавая сообщение об ошибке. Это происходит, поскольку начальное приближение x=-10 выбрано далеко от области локального максимума, и поиск решения уходит в сторону увеличения f(x), т. е. расходится при x .
ПРИМЕЧАНИЕ
Помните о возможности выбора численного алгоритма минимизации, который осуществляется при помощи контекстного меню (рис. 6.2). Не забывайте также, что, начиная с версии Mathcad 11, имеется возможность управлять параметром Сканирование (Multistart), при помощи которого можно попытаться организовать поиск глобального экстремума (см. разд. 5.3.2). Однако не слишком полагайтесь на эту опцию и, если перед вами стоит задача поиска глобального экстремума, постарайтесь организовать сканирование вручную.
Рис. 6.2. Выбор численного метода минимизации
6.1.2. Условный экстремум
В задачах на условный экстремум встроенные функции минимизации и максимизации должны быть включены в вычислительный блок, т. е. им должно предшествовать ключевое слово Given. В промежутке между Given и функцией поиска экстремума
с помощью булевых операторов записываются логические выражения (неравенства, уравнения), задающие ограничения на значения аргументов минимизируемой функции. Листинги 6.3 и 6.4 содержат примеры поиска условного экстремума на различных интервалах, определенных неравенствами. У вас не должны возникнуть сложности с записью условий в Mathcad, а вот разобраться в скрытой от глаз вычислительной стороне будет полезно. С этой точки зрения поучительно сравнить результаты работы приведенных листингов с листингами 6.1 и 6.2 соответственно.
Листинг 6.3. Поиск условного минимума
f(x) x4 3x3 2x2 x 0.5 x 0
Given
1 x
Minimize (f x) 1.425
Листинг 6.4. Поиск условного максимума
f(x) |
x4 |
3x3 |
2 x2 x 0.5 |
|
x |
1 |
|||
Given |
||||
2 |
x |
10 |
||
Maximize (f |
x) |
10 |
Как видно из листинга 6.3, если ограничить значения x интервалом, расположенным в окрестности правого локального максимума, с поиском которого мы встретили большие сложности при решении задачи на безусловный экстремум, то этот максимум будет без труда найден численным методом. Следует помнить также об одной особенности, иллюстрируемой листингом 6.4. А именно (в случае максимизации), если на границе интервала f(x) достигает большего значения, нежели на локальном максимуме внутри интервала, то в качестве решения, скорее всего, будет выдано наибольшее значение (т. е. граница интервала).
Конечно, если на рассматриваемом интервале x расположено несколько локальных максимумов, ответ станет еще менее предсказуемым, поскольку будет напрямую зависеть от выбранного начального приближения. Не забывайте о важности его правильного выбора и в случае задач на условный экстремум. В частности, если вместо начального значения x=-1 задать x=1, то в качестве максимума будет найдена правая граница интервала: Maximize(f,x)=2, что неверно, поскольку максимальное значение достигается функцией f(x) на левой границе интервала при x=-3. Выбор начального приближения x=-4 решает задачу правильно, выдавая в качестве ре-
зультата Maximize(f,x)=-5.
Соседние файлы в папке сведения
- #
- #
- #
- #
- #
- #
- #
- #
- #
Mathcad: ищем экстремум функции двух переменных
Поиск экстремума функции двух переменных принципиально не отличается от случая одной переменной и выполняется стандартными функциями Minimize
и Maximize
. Проблема состоит в том, как правильно выбрать начальную точку (x,y)
, от которой будет выполняться поиск решения. Если у анализируемой функции несколько стационарных точек, может быть найден только “мусор”, точней, найдётся ближайшая к начальной стационарная точка, не являющаяся экстремумом, или не найдётся ничего:
экстремум функции 2 переменных не находится – неверные начальные точки
Поэтому более правильным путём представляется реализация анализа функции на экстремум, ведь Mathcad математики не отменял 🙂
Для заданной функции Z(x,y) = x3+2xy+y2
найдём первые и вторые частные производные, определим стационарные точки, в которых обращаются в ноль первые частные производные, затем выполним проверку достаточных условий локальных экстремумов:
D=Zxx*Zyy-Zxy2>0, Zxx>0
– точка локального минимума,D>0, Zxx<0
– точка локального максимума.
После этого выполним поиск экстремума от точки, близкой к найденной, с помощью стандартной функции MathCAD, которая годится, скорее, для уточнения решений, чем для анализа.
правильный поиск экстремума функции 2 переменных в Mathcad
Скачать этот пример в архиве .zip с документом .xmcd для Mathcad 14/15 (58 Кб)
22.03.2017, 13:27 [16087 просмотров]