Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение пакета Mathematica 3-4

.pdf
Скачиваний:
33
Добавлен:
05.06.2014
Размер:
293.23 Кб
Скачать

"Применение пакета Mathematica 3-4.doc"

Применение пакета “Mathematica” при выполнении лабораторных работ

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

Итак, в данной главе рассматриваются следующие вопросы:решение систем уравнений и нахождение корней;нахождение производных от функций;операции над матрицами;безусловная минимизация функций;

условная минимизация функций;построение графиков функций.

1 Основы работы с пакетом “Mathematica”

1.Для того чтобы создать новый проект, необходимо выбрать пункт меню “File\New” или нажав комбинацию клавиш “CTRL–N”.

2.Для загрузки команд из файла, можно воспользоваться пунктом меню

File\Open”.

3.Для ввода специальных символов (специальные константы, символы производных, верхнего или нижнего индекса и т.п.), необходимо нажать соответствующую кнопку на панели основного ввода. Для появления этой панели, необходимо выбрать пункт меню

File\Palettes\ BasicInput”.

4.Для ввода команд необходимо выделить нужный проект (при помощи мыши, или воспользовавшись пунктом меню “Window”), а затем ввести нужные команды с клавиатуры, при необходимости используя панель основного ввода.

5.Для выполнения введенных команд, необходимо поместить курсор на одну из нужных команд и нажать комбинацию клавиш “SHIFT– ENTER” или воспользовавшись пунктами меню

Kernel\Evaluation\Evaluate

cells

или

Kernel\Evaluation\Evaluate

notebook”.

 

6.Для сохранения проекта в файл, можно воспользоваться пунктами меню “File\Save” или “File\Save As”.

7.Для вызова справки и получения более подробной информации нажмите клавишу “F1”. Для получения дополнительной информации можно также воспользоваться литературой, или интерактивно – через

Интернет.

1

"Применение пакета Mathematica 3-4.doc"

2 Решение систем алгебраических уравнений

2.1 Команды Solve и NSolve

Для решения систем уравнений служат команды Solve и NSolve. Первая из команд служит для символьного (аналитического) решения систем уравнений, а вторая – для численного (приближенного) решения систем.

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

Формат команд следующий:

Solve[eqns, vars],

NSolve[eqns, vars],

где eqns – список уравнений системы; vars – список переменных.

Список переменных предназначен для того, чтобы отличать имена переменных от имен коэффициентов.

Результаты решения выводятся в виде:

{{x->значение},{y->значение}},

где x,y – переменные, а значение – результат решения системы.

Список уравнений задается, например, в следующем виде:

{lhs1==rhs1,lhs2==rhs2},

где lhs1 и lhs2 – левые части, а rhs1 и rhs2 – правые части соответствующих уравнений.

Если список уравнений содержит только одно уравнение, то будут найдены все корни этого уравнения, в том числе и комплексные.

Приведем несколько примеров использования команд:

Nsolve[3+3x-7x2-x3+2x4+3x7-3x8-x9+x10==0,x] Solve[{x==1+2ay,y==9+2x},{x,y}]

2.2 Команда FindRoot

Для нахождения корней уравнения применяется команда FindRoot. Эта команда использует для нахождения корней метод Ньютона (метод касательных), где важным является выбор начального приближения.

Формат команды:

FindRoot[eqn,{x1,xstart1},{x2,xstart2},…]

или

FindRoot[eqn,{x1,xstart1,xmin1,xmax1}, {x2,xstart2,xmin2,xmax2},…],

где eqn – уравнение, заданное в том же виде, что и для команд Solve, NSolve, зависящее от i переменных;

xi i-ая переменная;

2

"Применение пакета Mathematica 3-4.doc"

xstarti – начальное значение i-ойпеременной; xmini,xmaxi – минимальное и максимальное значение i-ой переменной.

Параметры для FindRoot:

DampingFactor->n. Длина шага, используемого методом Ньютона (по умолчанию – 1);

MaxIterations->n. Максимальное число выполняемых итераций. По умолчанию – 15.

3 Нахождение производных

Существует два способа нахождения производных с использованием пакета “Mathematica”. Первый из них заключается в применении команд D, а второй – в применении панели основного ввода (в последнем случае при помощи панели вводятся специальные символы). Ниже приводится синтаксис для обоих случаев, а также примеры применения:

 

Применение команды

 

Применение

 

Получаемый результат

 

 

 

 

 

 

D[…]

 

панели

 

 

 

 

 

 

 

 

 

основного

 

 

 

 

 

 

 

 

ввода

 

 

 

 

 

 

 

D[f,x]

 

x f

 

 

 

f

 

 

 

 

 

 

 

 

x

 

 

D[f,{ x,n}]

 

x,x,..,x f

 

 

n f

 

 

 

 

 

 

 

 

xn

 

 

D[f,x1,x2,…xn]

 

x ,x ,..,x

f

 

 

n f

 

 

 

 

1 2

n

 

 

 

 

 

 

 

 

 

 

 

 

x1, x2,..., xn

 

 

 

D[Sin[x],x]

 

xSin[x]

 

 

Cos[x]

 

 

D[xn,{x,4}]

 

x,x,x,xxn

 

( 3 n)( 2 n)( 1 n)nx 4 n

 

 

D[Sin[x*y],x,x,y]

 

x,x,ySin[x* y]

 

xy2Cos[xy] 2ySin[xy]

 

 

D[Sin[x*y],{x,2},y]

 

 

 

 

 

 

 

 

4 Операции над матрицами

При исследовании функций и их оптимизации зачастую необходимы операции над матрицами: обращение, транспонирование, вычисление детерминанта. Часто такие операции отнимают много времени, поэтому целесообразно в таких случаях использование средств пакета “Mathematica”.

3

"Применение пакета Mathematica 3-4.doc"

Матрица может быть задана двумя способами. Например, так может быть задана квадратная матрица, состоящая из элементов a,b,c,d:

a

b

m = {{a,b},{c,d}} или m

.

c

d

Рассмотрим операции обращения, транспонирования и вычисления детерминанта:

Для обращения квадратной матрицы m матриц можно воспользоваться командой Inverse:

Inverse[m].

Заметим, что матрица должна быть квадратной. В случае, если матрица не является квадратной, либо не может быть обращена, будет выдано соответствующее предупреждение.

Для транспонирования матрицы m матриц можно воспользоваться командой Transpose:

Transpose[m].

За нахождения детерминанта матрицы m отвечает команда Det:

Det[m].

5 Минимизация функций

5.1 Безусловная минимизация функций

Для нахождения минимума функции f при заданном начальном приближении xstart можно воспользоваться командой FindMinimum, которая использует для поиска градиентные методы:

FindMinimum[f,{x1,xstart1},{x2,xstartили2},…]

FindMinimum[f,{x1,xstart1,xmin1,xmax1}, {x2,xstart2,xmin2,xmax2},…],

где f – минимизируемая функция, зависящая от i переменных; xi i-ая переменная;

xstarti – начальное значение i-ой переменной; xmini,xmaxi – минимальное и максимальное значение i-ой переменной.

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

5.2 Условная минимизация функций

Если требуется найти решение задачи условной оптимизации, то существенную помощь могут оказать средства пакета “Mathematica”, например,

команды ConstrainedMin и ConstrainedMax. Формат команд: ConstrainedMin[f,{inequal},{vars}]

4

"Применение пакета Mathematica 3-4.doc"

или

ConstrainedMax[f,{inequal},{vars}],

где f – оптимизируемая функция;

inequal– список неравенств-ограничений; vars – список переменных.

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

Приведем пример использования команд:

ConstrainedMin[x+3y+7z,{x-3y<7, 2x+3>=5,x+y+z<10},{x,y,z}]

Начиная с версии Mathmatica 4, эти команды называются Minimize, Maximize.

5.3 Нахождение решения задач линейного программирования

Если требуется найти решение задачи линейного программирования используя пакет “Mathematica”, то можно воспользоваться командами из предыдущего раздела. Однако, существует и другая команда, специально предназначенная для нахождения решений такого рода задач. Это команда LinearProgramming. Данная команда позволяет решить задачу линейного программирования вида:

(F(X) CX) min

x

AX B

: Xi 0, i 1,2,...,n.

Форматкоманды:

LinearProgramming[С,A,B],

где С,A,B – элементы матричного представления задачи линейного программирования.

Результатом выполнения команд является точка, в которой достигается минимум.

Приведем пример использования команды, а также отличие от команды ConstrainedMin (решим двумя способами одну и ту же задачу):

ConstrainedMin[2x-3y,{x+y<10,x-y>2,x>1},{x,y}]

 

1

1

LinearProgramming[{2,-3},

1

1 ,{-10,2,1}],

 

1

 

 

0

Результат: {6,4}

5

"Применение пакета Mathematica 3-4.doc"

6 Построение графиков функций

6.1 Построение графиков функций, заданных на плоскости

Для построения графиков функций в пространстве R2 можно воспользоваться командой Plot, предназначенной как раз для таких целей. Формат команды:

Plot[f, {x, xmin, xmax},Op1,Op2,…]

или

Plot[{f1,f2,…}, {x, xmin, xmax},Op1,Op2,…],

где f,f1,f2,…– функции для построения;

x – переменная, от которой зависит функция;

xmin, xmax – ограничение, график будет построен на промежутке от x=xmin до x=xmax;

Op1,Op2,…– параметры для построения графика.

Параметры могут быть пропущены, тогда берутся значения, принятые по умолчанию. Наиболее полезными являются следующие параметры:

PlotPoints. Число вычисляемых точек. Например,

PlotPoints->n

позволяет вычислять n точек на выбранном промежутке при построении

графика, а

PlotPoints->{nx,ny}

позволяет вычислить nx точек по оси X и точек ny по оси Y. Значение по умолчанию:

PlotPoints->25.

Axes. Указывает, выводить ли на графике оси координат. Значения: True, False. По умолчанию: Axes->True.

AxesOrigin. Выбор точки пересечения осей координат. По умолчанию устанавливается автоматически:

AxesOrigin->Automatic.

Выбор точки (x,y) пересечения осей координат:

AxesOrigin->{x,y}.

AxesLabel. Выбор подписей к осям координат. По умолчанию подписи не выводятся:

AxesLabel->Automatic.

Выбор подписей ”x”,”y” к осям координат:

AxesLabel->{”x”,”y”}.

AspectRatio. Относительные размеры выводимого графика. Например,

график может быть сжат (растянут) по одной из осей:

AspectRatio->x/y,

где x/y – отношение, указывающее размеры графика по осям.

6

"Применение пакета Mathematica 3-4.doc"

Для автоматического выбора используется

AspectRatio->Automatic.

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

(нет ограничений):

PlotRegion->All.

Вывод точек, значение функции в которых лежит в пределах [miny,maxy]:

PlotRegion->{miny,maxy}.

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

“Mathematica”.

Приведем примеры работы с командой Plot:

Plot[Sin[x],{x,-3 ,3 }]:

Результат:

x2 x3

Plot[ x2 4 ,{x,-10,10},PlotRange->{-1,1},

AxesOrigin->{-2,0},AspectRatio->1/1, Axes->True,AxesLabel->{"X","Y"}]:

Результат:

7

"Применение пакета Mathematica 3-4.doc"

Y

1

0 . 7 5

0 . 5

0 . 2 5

- 4

0

2

4

X

 

-0 . 2 5

-0 . 5

-0 . 7 5

- 1

6.2 Построение графиков функций, заданных в пространстве R3

Для построения графиков функций, заданных в пространстве R3, можно воспользоваться командами Plot3D или ContourPlot. Первая из них строит поверхность, а вторая – линии уровня функции, задавая, таким образом,

представление функции в двумерном пространстве. Формат команд:

Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}], ContourPlot[f,{x,xmin,xmax},{y, ymin,ymax}],

где f – функция;

x,y – переменные, от которых зависит функция f; xmin,xmax,ymin,ymax – минимальные и максимальные значения

соответствующих переменных.

Параметры Plot3D аналогичны параметрам команды Plot. Кроме того, имеются некоторые дополнительные параметры, но т.к. их использование не обязательно, то о них можно всегда прочитать в файле справки пакета

“Mathematica”.

Пример использования Plot3D:

Plot3D[Sin[xy],{x,0,4},{y,0,4}].

Результат:

8

"Применение пакета Mathematica 3-4.doc"

1

 

0.5

4

0

 

-0.5

3

-1

2

0

1

1

2

 

3

 

4 0

Команда ContourPlot, используемая для построения линий уровня функций, имеет параметры, аналогичные параметрам команды Plot, а также дополнительными:

Frame. Возможные значения – True,False. По умолчанию – Frame->True. Указывает, строить ли рамку вокруг области построения.

ContoursShading. Возможные значения – True,False. По умолчанию –

ContoursShading->True. Если параметр имеет значение True, то при построении линий уровня будет использована заливка градиентом серого цвета, т. е. В направлении роста функции заливка будет светлеть, и наоборот.

ContourStyle.

По умолчанию ContourStyle–>Automatic. Позволяет изменить

стиль прорисовки линий уровня. Например,

ContourStyle–>Dashing[{0.01,0.01}]

позволяет выводить линии уровня в виде пунктирных линий. Более подробно о данном параметре смотрите файл помощи пакета

“Mathematica”;

Contours. Этот параметр позволяет указать число линий уровня, которые будут построены, либо вручную указать значения функции, задающие только определенные линии уровня, которые и будут построены:

Contours–>Automatic: строятся все возможные в заданной области линии уровня;

Contours–>n: строятся только n линий уровня;

9

"Применение пакета Mathematica 3-4.doc"

 

 

 

 

 

 

 

Contours–>{cont1,cont2,…}: строятся только линий

уровня, соответствующие определенным значениям

функции, линии уровня которой строятся.

Пример использования ContourPlot:

 

ContourPlot[

2

3

1

3

2

2

,-5,5},

3x1

3x2

x1 x2

x1x2 5x1,{x1

{x2,-5,5},AspectRatio->1/1,

 

Contours–>{-6.42,-6,-3,-2,0,2,3,6,6.42},

PlotPoints->60,Frame->False,

 

Axes->True,AxesOrigin->{0,0},

 

ContourShading->False,

 

ContourStyle->Dashing[{0.01,0.01}]]

Результатом выполнения данной команды станет график, изображенный

ниже:

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

2

 

 

-4

-2

 

 

 

2

4

 

 

 

 

 

-2

 

 

 

 

 

 

 

-4

 

 

 

 

 

ЛИТЕРАТУРА

 

Аладьев В. З., Шишаков М. Л. Введение в среду пакета Mathematica 2.2. –

М.: Инф.-издат. дом "Филинъ", 1997. – 368 с.

 

10