Экстремумы функций. Линейное программирование.
Система Mathematica позволяет найти экстремумы функций одной и нескольких переменных. Вот как, например, можно найти локальный минимум функции ex cosx.
FindMinimum[Exp[x]
*
Cos[x],{x,
0
}]
{
-
0.0670197
,{x
>
-
2.35619
}}
А вот как можно найти минимум функции sinxcosy.
FindMinimum[Sin[x]
*
Cos[y],{x,
0
},{y,
0
}]
{
-
1
.,{x
>
-
1.5708
,y
>
0
.}}
Ну и раз уж речь зашла об экстремумах функций, рассмотрим случай линейных функций.
Линейное программирование
Используя систему Mathematica, нетрудно решить задачи линейного программирования небольшой размерности. Рассмотрим пример.
Правда, если экстремум достигается на границе (а в задачах линейного программирования это случается почти всегда), при использовании функции Maximize выдается предупреждение об этом.
Можно, конечно, пользоваться и функцией ConstrainedMax, но она становится все менее популярной, и система Mathematica предупреждает, что в последующих версиях она может быть удалена.
Впрочем, для решения задачи можно воспользоваться и функцией Nmaximize.
NMaximize[{
19x
-
47y
+
28z
,{x
+
y
+
z
>
0
,x
+
y
+
z
<
1
,x
>
0
,y
>
0
,z
>
0
}},{x,y,z}]
{
28
.,{x
>
0
.,y
>
0
.,z
>
1
.}}
Обратите внимание на то, что списки параметров у этих функций разные: у функции Maximize – три параметра, а у NMaximize – только два.
Резюме
Мы бегло ознакомились с применением системы Mathematica в качестве калькулятора. Но даже из этого беглого знакомства видно, что если это и калькулятор, то очень мощный и интеллектуальный. Немного позже мы узнаем, что он еще и программируемый. Как бы то ни было, с ним стоит познакомиться поближе. И если вы запомнили не все, не огорчайтесь. Ведь начнем мы с самого начала – с чисел.