Как на маткаде найти максимум функции

На чтение 6 мин Просмотров 1.9к.

Содержание

  1. 1. Поиск экстремума функции
  2. 2. Экстремум функции одной переменной
  3. 3. Условный экстремум
  4. Александр Малыгин
  5. 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 переменных такая же функция и такой же принцип используется?

Функция будет другая. Вы сами подбираете вид функции, остальное аналогично.

Пример решения задачи оптимизации в программе Mathcad

Пример
Дана нелинейная целевая функция

f(x,y)=x4–2y→min

Ограничения

4x+y–2=0

x2+y2≤50

Решение

Для поиска минимального или максимального значения функции в Mathcad имеются функции:

Minimize(f, x1, x2, …xn)

Maximize(f, x1, x2, …xn)

f — функция без аргументов для максимизации и минимизации значений;

x1, x2, …xn — скалярные переменные, найденные в системе уравнений.

Записываем решение в пакете Mathcad

Решение задачи в Mathcad

3088


Теперь рассмотрим решение задачи на поиск минимума и максимума с применением функций Maximize и Minimize. Первая часть документа, реализующая решение данной задачи, представлена на рисунке 4.2. Здесь показано задание самого уравнения, построение графика функции и геометрическое представление ограничительных условий. Тут полезно особо отметить, что решение задачи оптимизации с ограничениями в принципе намного сложнее, чем без таковых. Алгоритм решения данной задачи с применением средств Mathcad  показан на рисунке 4.3. Следует отметить, что функция Minimize (или Maximize) может вычислять минимум (или максимум) как при отсутствии ограничений, так и при их наличии.

Рис. 4.2 Начало документа с решением задачи поиска минимума и максимума функции с учетом ограничений

Объективности ради надо заметить, что результаты решения сильно зависят от выбора начальных значений переменных и далеко не всегда имеют устраивающую пользователя погрешность.

Рис. 4.3 Конец документа с решением задачи поиска минимума и максимума функции с учетом ограничений

4.4. Задачи оптимизации

В программе MathCAD с успехом решаются задачи оптимизации. Задача оптимизации (линейного программирования) — определение значений аргументов функции, при которых функция имеет экстремальное (минимальное, максимальное) значение. Условия, налагаемые на аргументы функции — заданные ограничения. Используется методика решения системы уравнений помощью блока Given. При этом вместо функции Find используется функция Maximize(), если определяется максимум, и функция Minimize() , если определяется минимум оптимизируемой функции. Последовательность действий следующая:

  • ввести оптимизируемую функцию,
  • определить начальные значения аргументов,
  • в блоке Given ввести уравнения (неравенства) ограничений,
  • ввести функцию Maximize () (Minimaze() ),
  • определить решение.

Задача решается в алгебраическом и матричном виде. В матричном виде начальное значение корней, ограничения задаются в виде матриц. Решение в обоих случаях получается в виде матрицы.

Пример 4.11

Найти максимум функции

f=500y1+800y2+400y3+200y4

при ограничениях left{
begin{aligned}
3y1+3y2+6y3le30000\
4y1+8y2+3y3+2y4le24000\
4y1+3y3+5y4le12000\
y1ge0\
y2ge0\
y3ge0\
y4ge0
end{aligned}
right.

Листинги решения в алгебраическом и матричном виде.

ORIGIN:=1

Оптимизируемая функция – поиск максимума, f(y1,y2,y3,y4):=500y1+800y2+400y3+200y4

Начальные значения:

y1:=1, y2:=1, y3:=1, y4:=1

Given

3y1+y2+6y3le30000

4y1+8y2+y3+2y4le24000

y1+3y2+5y4le12000

Ограничения:

y1ge0, y2ge0, y3ge0, y4ge0

y:=Maximize(f,y1,y2,y3,y4)

Решение:

y=begin{pmatrix} 4.168times10^3 \ 1.827times10^3 \ 3.511times10^3 \ 0 end{pmatrix}

Максимальное значение функции: f(y1,y2,y3,y4)=3.6times10^6

ORIGIN:=1

Матрица коэффициентов функции: C:=begin{pmatrix} 500 \ 800 \ 400 \ 200 end{pmatrix}

Матрица левых частей ограничений: A:=begin{pmatrix} 3 & 1 & 6 & 0 \ 4 & 8 & 1 & 2 \ 1 & 0 & 3 & 5end{pmatrix}

Матрица правых частей ограничений: B:=begin{pmatrix} 30000 \ 24000 \ 12000 end{pmatrix}

Начальные значения: x:=begin{pmatrix} 1 \ 1 \ 1 \ 1 end{pmatrix}

f(x):=Ccdot x

Given

Acdot xle B

xge 0

x:=Maximize(f,x)

Решение:

x=begin{pmatrix} 4.168times10^3 \ 1.827times10^3 \ 3.511times10^3 \ 0 end{pmatrix}

Максимальное значение функции:

f(x)=3.6times10^6

Основные итоги

В лекции представлены методы численного решения уравнений и систем уравнений с использованием функций MathCAD. Рассмотрены функция Root (), функция для поиска корней полинома polyroots(), вычислительные блоки Given .Find() и Given Minerr().. Описано численное решение систем линейных уравнений, а также способы аналитического решения : с помощью матриц, функции lsolve(), символьного оператора solve. Показано решение задач оптимизации.

Задания для самостоятельного выполнения

  1. Построить графики функций. Решить уравнения с применением функции root()

    а) frac{sin{(2x)}}{1-cos{(2x)}} для -5 le x le 5

    б) 2ln{(y+4)}-3ln{(y+2)}+ln{(y+1)}=0

    в) e^{z-8}-8z=0 (2 корня)

  2. Решить с применением функции polyroots() следующие уравнения

    а) x^3-6x^2-52=0

    б) x^5+23x^3-3x^2+15=0

  3. Решить системы уравнений с использованием блока Given Find(.)

    а) left{
begin{aligned}
e^{frac{x}{2}}-y=0\
x^2-y+1=0
end{aligned}
right.
найти 3 корня

    б) left{
begin{aligned}
frac{2}{x}+3y=16\
-x^2+2sqrt{y}=2
end{aligned}
right.
найти 2 корня

    в) tan{x}+sin{x}=3x+3

    г) left{
begin{aligned}
x^3-y^3=61(x-y)\
(x-1)(y-1)=12
end{aligned}
right.

    д) left{
begin{aligned}
x1+x2+x3=0\
x1^2+x2^2+x3^2=20\
x1^4+x2^4+x3^4=220
end{aligned}
right.

  4. Решить систему уравнений тремя способами.
    left{
begin{aligned}
6x_1+8x_2-5x_3=7\
x_1+3x_2+9x_3=6\
3.8x_1+2x_2-8.8x_3=5
end{aligned}
right.

Ключевые термины

root() функция для численного решения нелинейного уравнения с одним неизвестным. Возвращает с заданной точностью значение переменной, при котором функция равна нулю.

polyroot() функция для численного поиска корней полинома. Возвращает вектор длиной n+1 всех корней полинома степени n.

Given Find() – вычислительный блок для численного решения нелинейных уравнений и систем уравнений.

Given Minerr() вычислительный блок для приближенного численного решения нелинейных уравнений и систем уравнений.

Maximize () функция для поиска значений переменных функции, при которых функция имеет максимальное значение.

Minimaze() — , функция для поиска значений переменных функции, при которых функция имеет минимальное значение.

lsolve(A,B)функция аналитического решения системы линейных уравнений, представленной в виде AX=B.

Mathcad: ищем экстремум функции двух переменных

Поиск экстремума функции двух переменных принципиально не отличается от случая одной переменной и выполняется стандартными функциями Minimize и Maximize. Проблема состоит в том, как правильно выбрать начальную точку (x,y), от которой будет выполняться поиск решения. Если у анализируемой функции несколько стационарных точек, может быть найден только «мусор», точней, найдётся ближайшая к начальной стационарная точка, не являющаяся экстремумом, или не найдётся ничего:

экстремум функции 2 переменных не находится - неверные начальные точки

экстремум функции 2 переменных не находится — неверные начальные точки

Поэтому более правильным путём представляется реализация анализа функции на экстремум, ведь Mathcad математики не отменял :)

Для заданной функции Z(x,y) = x3+2xy+y2 найдём первые и вторые частные производные, определим стационарные точки, в которых обращаются в ноль первые частные производные, затем выполним проверку достаточных условий локальных экстремумов:

  • D=Zxx*Zyy-Zxy2>0, Zxx>0 — точка локального минимума,
  • D>0, Zxx<0 — точка локального максимума.

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

правильный поиск экстремума функции 2 переменных в Mathcad

правильный поиск экстремума функции 2 переменных в Mathcad

 Скачать этот пример в архиве .zip с документом .xmcd для Mathcad 14/15 (58 Кб)

22.03.2017, 13:27 [16171 просмотр]


Понравилась статья? Поделить с друзьями:
  • Как найти спонсоров для поездки
  • Как исправить ошибка 9006
  • Как найти кому продать товар оптом
  • Как можно найти человека по майлу
  • Как студентка нашла деньги