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 (x1, … , хм,…) — функция;
-
x1, … , xм — аргументы, по которым производится минимизация (максимизация).
Всем аргументам функции f предварительно следует присвоить некоторые значения, причем для тех переменных, по которым производится минимизация, они будут восприниматься как начальные приближения. Примеры вычисления экстремума функции одной переменной (рис.1) без дополнительных условий показаны в листинге на рис.2. Поскольку никаких дополнительных условий в них не вводится, поиск экстремумов выполняется для любых значений.
Рис.2. Поиск локальных экстремумов функции одной переменной
Как видно из листинга, существенное влияние на результат оказывает выбор начального приближения, в зависимости от чего в качестве ответа выдаются локальные различные экстремумы. В последнем случае численный метод вообще не справляется с задачей, поскольку начальное приближение х=-10 выбрано далеко от области локального максимума, и поиск решения уходит в сторону увеличения f (х).
3. Условный экстремум
В задачах на условный экстремум функции минимизации и максимизации должны быть включены в вычислительный блок, т. е. им должно предшествовать ключевое слово Given. В промежутке между Given и функцией поиска экстремума с помощью булевых операторов записываются логические выражения (неравенства, уравнения), задающие ограничения на значения аргументов минимизируемой функции. На рис.3 показаны примеры поиска условного экстремума на различных интервалах, определенных неравенствами. Сравните результаты работы этого листинга с двумя предыдущими.
Рис. 3. Три примера поиска условного экстремума функции
Не забывайте о важности выбора правильного начального приближения и в случае задач на условный экстремум. Например, если вместо условия — 3<х<0 в последнем примере листинга задать -5<х<0, то при том же самом начальном х=-10 будет найден максимум Maximize(f,x) =-0.944, что неверно, поскольку максимальное значение достигается функцией f (х) на левой границе интервала при х=-5. Выбор начального приближения х=-4 решает задачу правильно, выдавая в качестве результата Maximize (f ,x) =-5.
4. Экстремум функции многих переменных
Вычисление экстремума функции многих переменных не несет принципиальных особенностей по сравнению с функциями одной переменной. Поэтому ограничимся примером (рис.4) нахождения минимума функции, показанной в виде графика трехмерной поверхности (рис. 4).
Рис. 4. Минимум функции двух переменных
Поиск минимума можно организовать и с помощью функции Minerr. Для этого в листинге (рис.4) надо поменять имя функции Minimize на Minerr, а после ключевого слова Given добавить выражение, приравнивающее функцию f (х,у) значение, заведомо меньшее минимального, например f (х,у) =0.
Спасибо, очень информативано! Скажите, а для 9 переменных такая же функция и такой же принцип используется?
Функция будет другая. Вы сами подбираете вид функции, остальное аналогично.
Добрый день!
Скажите, если у меня есть интересная задача многокритериального поиска когда целевая функция есть набором других функций, например целевая функция Р=f(y1,y2,y3,y4,y5), где:
y1=f(a,b,c,d);
y2=f(c,d,e,g);
y3=f(c, h,k,);
y4=f(b,d);
y5=f(d,l,m).
Причем есть только один параметр, например d который входит во все значения промежуточных ф-ций y1…y5 и соответственно функционала Р. Остальные параметры между собой не связаны, или связаны косвенно.Задачей оптимизации является поиск таких значений Р при котором, например y1-max, y2>=const, y3…y5-min.
Есть ли возможность решить данную задачу в МАТКАД-е?
Буду очень признателен за внятный ответ.
Спасибо!
Думаю, что автоматически такую задачу решить нельзя нигде. Нужно задачу разбить на более простые части, а их на еще более простые, тогда и решить можно в Matcad.