Начальное знакомство с системой Mathematica

Ознакомимся с работой системы на практике. Запустим программу из меню Пуск. Автоматически откроется новое рабочее поле в виде автономного окна (в Mathematica оно называется Notebook – блокнот). Можно открыть второе и большее количество таких окон. На рисунке 3.1 открыто два окна, и в них проведены простейшие вычисления.

Самое главное, что надо знать о Mathematica в отношении сравнения ее с другими системами компьютерной алгебры: ее язык внешне достаточно сильно отличается от языка Maple, но по внутреннему «устройству» и по приемам работы с интерфейсом весьма похож на него. Так что пользователь, владеющий, допустим, навыками работы с Maple, не испытает принципиальных неудобств при переходе на Mathematica, в отличие от MATLAB, который потребует от него значительной перестройки. А именно: в Mathematica, так же как в Maple, вы набираете оператор в командной строке и для его выполнения нажимаете Shift–Enter (отличие от Maple и MATLAB, где нажимается просто Enter – сравнение, конечно, не в пользу Mathematica, но при длительном пользовании это входит в привычку).

Рис. 3.1. Окно системы Mathematica после запуска, открытия второго окна и выполнения простейших вычислений

А далее, в отличие от MATLAB и подобно Maple, если вы захотите повторить какое-то вычисление, то можно установить курсор вставки в соответствующей строке щелчком и нажать Shift–Enter. Это же можно сделать иначе: установите I-образный курсор на квадратную скобку справа от формулы (курсор при этом изменит свой вид) и щелкните один раз. Скобка «почернеет». Тем самым выделена ячейка, содержащая нужную формулу. Теперь достаточно нажать Shift + Enter. Нужное вычисление будет выполнено. При желании выделенные ячейки можно копировать и размножать обычными для систем с графическим интерфейсом приемами (кнопками или меню). Повторим, все перечисленное является совершенно естественным для пользователя Maple и составляет одно из основных неудобств при его переходе на MATLAB. А вот что очень непривычно для тех, кто привык иметь дело с Maple и является одним из проявлений различий в языках: а) аргументы функций заключаются в квадратные скобки; б) имена функций, встроенных в систему Mathematica, начинаются с заглавных букв.

    Как обычно в Windows, для сохранения из меню File выбирается пункт Save As и записывается протокол проведенных расчетов в файл (для Mathematica 5 с расширением.nb – от слова Notebook).

    Как видно из рисунка 3.1, арифметические действия в системе Mathematica изображаются обычным образом: +, -, *, ^, но вместо знака умножения можно набирать пробел. Подобно MATLAB и в отличие от Maple, точка с запятой означает команду выполнить оператор и распечатать результат его выполнения, а команда «печатать» – это отсутствие какого-либо знака после оператора.

    Внешне отличаются, а по сути применяются точно так же, многие операторы Maple, например evalf: в Mathematica это просто буква N:

N[Pi/2]

  1.5708

N[33/7-Sqrt[2]]

  3.30007.

Или, например, оператор подстановки (subs в Maple) имеет весьма непривычный и громоздкий вид:

r/.{x®w,y®u}

  u+w.

Из следующей строчки проясняется синтаксис этого оператора:

1+x^2+x^4/.x®2

  21.

    Интересно, что некоторые операторы имеют такой же вид, что и в Maple, но в их действиях есть различия. Например, это относится к simplify: в обеих системах это оператор, упрощающий выражения, но, видимо, понятие «упрощение» создатели двух систем понимают несколько по-разному. Так, в Mathematica разложим степень разности на отдельные слагаемые с помощью оператора Expand, а затем применим к результату Simplify:

q=Expand[(x-y)^3]

 

 Simplify[q]

.

А вот что в такой ситуации сделает Maple:

> q:=expand((x-y)^3);

> simplify(q);

.

Т.е. expand «сработал» так же, а упрощение в Maple понимается как разложение, а в Mathemanica – наоборот, как представление в свернутом виде. Кстати, в Mathematica, помимо обычного Simplify, есть еще «более мощный» оператор FullSimplify. Например, в нижеследующей ситуации Simplify не справляется, а его усиленный аналог – да:

Simplify[Gamma[z] Gamma[1-z]]

  Gamma[1-z] Gamma[z]

FullSimplify[Gamma[z] Gamma[1-z]]

  p Csc[p z].

Впрочем, в Maple с этой задачей упрощения произведения гамма-функций справится и обычный оператор:

> q:=GAMMA(z)*GAMMA(1-z);

> simplify(q);

.

    Для первичного знакомства с системой, читателю настоятельно рекомендуется проработать все пункты превосходно написанного Tutorial из меню Help в Mathematica. Как неоднократно указывалось, подробное изложение языков и структуры систем выходит за рамки данного пособия. Ограничимся тем, что разберем примеры, решенные выше в Maple и MATLAB.

    Функции описываются с помощью знака:=

a=2;f[x_]:=Sin[a*x]/x;g[y_]:=Sin[b*y]

 f[1]

  Sin[2]

 g[3]

  Sin[3 b].

Причем x_, y_ означают произвольные переменные под именами x, y. Численные значения выражений и подстановка параметров:

N[f[1]]

  -0.378401

 N[g[3]/.b®Pi/9]

  0.909297.

Построение графиков описанных функций:

Plot[{f[x],g[x]/.b®2},{x,-15,15}]

Рис. 3.2. Пример построения графика функций в Mathematica

 

    Построим график функции sin(x+y):

Plot3D[S in[x+y],{ x, -2, 2 },{ y, -2, 2 }].

Рис. 3.3. Пример построения графика функции от двух переменных

 

       Решим задачу (1.1) о нахождении емкости трех последовательно включенных емкостей (конденсаторов) C1, C2 и C3 произвольной величины, разобранную в Maple и MATLAB.

eq=1/C0==1/C1+1/C2+1/C3;r=Solve[eq,C0]

 r/.{C1®2,C2®1,C3®4}

 N[r/.{C1®2,C2®1,C3®4}]

  {{C0®0.571429}}

Операцию присваивания полученных в процедуре решения функции (в данном случае одной – C0) можно провести следующим образом:

C0=C0/.r

 s=C0/.{C1®2,C2®1,C3®4}

.

Видно, что теперь С0 определена как функция трех переменных. Результат подстановки в нее значений емкостей 2, 1 и 4 обозначен как s. С ним можно производить действия:

N[s]+1

 {1.57143}

    Вычисление производных и интегралов:

D[Sin[x]^2+Cos[x]^3,x]

Integrate[Sin[x],x]

 -Cos[x]

 Integrate[Sin[x],{x,0,Pi}]

 2.

Неберущиеся интегралы в численном виде:

q1=Integrate[Exp[-x^2],{x,-1,1}]

 q2=Integrate[Exp[-x^3],{x,-1,1}]

 N[q1]

 1.49365

 N[q2]

Интересно отметить, что в случае интеграла q2, в отличие от Maple и MATLAB, система Mathematica пыталась как-то вычислить его, преобразовав к сумме гамма-функций и интегральной экспоненты.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: