Иллюстрированный самоучитель по Mathematica 5

Экстремумы функций. Линейное программирование.

Система 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, нетрудно решить задачи линейного программирования небольшой размерности. Рассмотрим пример.

Иллюстрированный самоучитель по Mathematica 5 › Первое знакомство. Калькулятор. › Экстремумы функций. Линейное программирование.

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

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

Иллюстрированный самоучитель по Mathematica 5 › Первое знакомство. Калькулятор. › Экстремумы функций. Линейное программирование.

Впрочем, для решения задачи можно воспользоваться и функцией 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 в качестве калькулятора. Но даже из этого беглого знакомства видно, что если это и калькулятор, то очень мощный и интеллектуальный. Немного позже мы узнаем, что он еще и программируемый. Как бы то ни было, с ним стоит познакомиться поближе. И если вы запомнили не все, не огорчайтесь. Ведь начнем мы с самого начала – с чисел.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.