Давайте посмотрим, как система Mathematica справляется с раскрытием скобок в степенях. Для этого служит функция Expand.
Хотя систему Mathematica и подобные ей называют системами компьютерной алгебры, обычно в них так или иначе представлены все фундаментальные разделы математики. Возможности системы Mathematica в области математического анализа очень велики, и надо полагать, что Лейбниц, Ньютон и Эйлер были бы счастливы поэкспериментировать в области анализа с таким инструментом. Мы же в этой главе ограничимся простейшими примерами.
Арифметические действия в системе Mathematica обозначаются как обычно: + (сложение), - (вычитание), * (умножение), / (деление), ^ (возведение в степень).
Впрочем, иногда вместо * достаточно набрать пробел. С делением, правда, есть одна закавыка. Вычислим, например, 10/2.
10/2 5
Получилось! (Здесь и далее опускаются эти надоедливые In [...]:= и Out [...]=.) Но вот вычисление 22/7 даст
22/7 22/7
Результат, конечно, точный, но несколько тавтологичный. Как же получить десятичное приближение? Для этого достаточно сделать хотя бы одно число вещественным, поставив, например, точку после 22 или 7.
22/7. 3.14286
Есть и другой способ: явно применить функцию N, дающую приближенное численное значение аргумента. (Аргументы функций заключаются в квадратные скобки.)
Для этого введите N[22/7] и в результате получится 3.14286
Функция N позволяет с необходимой точностью вычислять некоторые математические константы и использовать их. Например:
N[Pi] 3.14159
Чтобы вычислить число n со 100 значащими цифрами, укажите нужное количество значащих цифр вторым аргументом функции N.
N[Pi,100] 3.14159265358979323846264338327950288419716939937510582097494459230781 6406286208998628034825342117068
Вот как, например, можно решить известную классическую задачу: какое число больше, е? или ?e.
N[Е^Pi-Рi^Е, 10] 0.6815349144
Как видите, е? > ?е. Провести соответствующие вычисления (вместе с оценками точности) вручную не так уж и просто, поэтому обычно первокурсники при решении этой задачи используют свойства функций. Конечно же, в системе Mathematica предусмотрены и функции.
Чтобы упростить набор и вычисление выражений, рассмотрим возможности интерфейса (оболочки) системы Mathematica. Чтобы сохранить протокол расчетов (блокнот), из меню Файл (File) выберите пункт Сохранить Как (Save As) и запишите блокнот в файл, например в файл myl (желательно в своем каталоге). Чтобы повторить какое-либо вычисление, достаточно двойным щелчком установить курсор вставки в соответствующую строку и нажать <Shift+Enter>. Это же можно сделать иначе: установите I-образный курсор на квадратную скобку справа от формулы (курсор при этом изменит свой вид) и щелкните один раз. Скобка "почернеет". Это значит, что вы выделили ячейку, содержащую нужную вам формулу. Теперь выберите в меню системы Mathematica пункт Ядро<=>Вычисление^Вычислить Ячейки. После этого будут вычислены выделенные ячейки. При желании выделенные ячейки можно копировать и размножать обычными для систем с графическим интерфейсом методами (с помощью кнопок или меню). То же самое относится не только к ячейкам целиком, но и к их частям. Эти методы помогают записывать алгебраические выражения.
Дифференцировать в системе Mathematica. не просто, а очень просто! В качестве аргументов команды (функции) дифференцирования D [., . ] нужно указать ту функцию, которую мы намерены продифференцировать, и ту переменную (или переменные), по которой (которым) берется производная. Вот как вычисляется производная функции хn.
D[х^n,х] nx-1+n
А вот так вычисляется частная производная функции sin(xyz) по переменной z.
D[Sin[x у z],z] х у Cos[х у z]
Смешанные частные производные также вычисляются без проблем.
D[Sin[x у z],z,y,x,x] -5 х у2 z2 Cos [х у z] - 4 у z Sin [х у z] + х2 у3 z3 Sin [х у z]
Это же можно записать иначе.
D[Sin[x у z], {x,2},y,z] -5 х у2 z2 Cos [х у z] - 4yzSin[xyz]+x2y3z3Sin[xyz]
Полный дифференциал вычисляется посредством команды Dt:
Dt[Sin[x у z] ] Cosfx у z](у z Dt[x]+x z Dt[y]+x у Dt[z])
где Dt [x], Dt [у] и Dt [z] — дифференциалы переменных х, у и z.
Естественно, что команда Dt применяется и для вычисления полных производных функций многих переменных.
Dt[f[Sin[х у z]],х]
Cos[xyz](yz + xzDt[y, x] +xyDt[z, x] ) f [Sin[xyz]]
Здесь Dt [y,x] и Dt [z,x] — полные производные переменных у и г по переменной х. Но следующий результат можно назвать правильным лишь формально.
D[Abs[x],x]/.x->l Abs'[l]
Тут система Mathematica села в калошу. Она знает, что функция [x] — недифференцируемая в точке х = 0, но фактически отказывается вычислять ее производную даже в тех точках, где она дифференцируема. Так спокойнее!?
В системе Mathematica имеется множество математических функций, их имена вполне естественны, за тем исключением, что имена всех встроенных функций начинаются с прописной буквы. Кроме того, не забывайте, что аргументы функций заключаются в квадратные скобки. Ну, и, конечно же, помните о том, что здесь тригонометрические функции называются так, как к этому привыкли американцы: например, вместо привычного для нас tg (тангенса) в системе Mathematica указывается Tan. Ниже приведены некоторые примеры — выполните сами те из них, которые сочтете интересными.
Ехр[3]-Е^3 0
Ничего неожиданного. Но это не арифметика. Числовые значения здесь не вычислялись. Поэтому сразу получился точный результат. Если бы вычислялись значения, получилось бы нечто совсем иное.
N[Exp[3] ,20]-N[Е^3,20] 0. х10-19
А вот модуль перехода от натуральных логарифмов к десятичным.
N[Log[10,E],100] 0.43429448190325182765112891891660508229439700580366656611445378316586 46492088707747292249493384317483
А ниже вычислены sin 1° и cos 1° (Улугбеку они бы очень пригодились).
N [Sin [Pi/180] ,100] 0.0174524064372835128194-1897851631619247225272030713964268361242764059 738420392807004200192679102134691 N[Cos[Pi/180],100] 0.99984769515639123915701155881391485169274031058318593965832071451153 91811033372153972993952881103455
Как видим, с тригонометрией все в ажуре! Давайте теперь проведем вычисление с корнями, — вычислим приближенное значение числа 2v2, столь излюбленного специалистами по математической логике.
N[2ASqrt[2],100] 2.66514414269022518865029724987313984827421131371465949283597959336492 0446178705954867609180005196417
Конечно, то же самое можно сделать и иначе.
N[2^(2^(1/2) ),100] 2.66514414269022518865029724987313984827421131371465949283597959336492 0446178705954867609180005196417
Можно также ввести переменную и написать так:
х=2^(1/2);N[2^х,100] 2.66514414269022518865029724987313984827421131371465949283597959336492 0446178705954867609180005196417
Говоря о корнях, не могу удержаться, чтобы не показать вам вот это:
(-1)^(1/2) i
Так что этот калькулятор и с комплексными числами справляется без труда! Но прежде чем переходить к алгебре, полезно хотя бы бегло познакомиться с блокнотом и меню системы Mathematica.
Неопределенные интегралы, или первообразные
Интегрирование в системе Mathematica (как и в жизни) сложнее дифференцирования. Впрочем, формально все просто: неопределенный интеграл вычисляют посредством команды Integrate:
Система Mathematica позволяет найти экстремумы функций одной и нескольких переменных. Вот как, например, можно найти локальный минимум функции excosx.
FindMinimum[Exp[x]*Cos[x],(х,0}] {-0.0670197,{х>-2.35619}}
А вот как можно найти минимум функции sinxcosy .
FindMinimum[Sin[x]*Cos[у],{х,0},{у,0}] {-1.,{x>-1.5708,y>0.}}
Ну и раз уж речь зашла об экстремумах функций, рассмотрим случай линейных функций.
Используя систему Mathematica, нетрудно решить задачи линейного программирования небольшой размерности. Рассмотрим пример.
В системе Mathematica матрицы представляются в виде списков строк, т.е. в виде списков списков. Вот пример задания матрицы. Матрица задается как список списков.
m1={{1,1,1,1},{а,Ь,с,d},{а^2,b^2,с^2,d^2}} {{1,1,1,1},
{а,b,с,d}, {а2,b2,с2,d2}}
Конечно, привычнее ее видеть как матрицу.
Система Mathematica богата графическими возможностями. Рассмотрим на примерах построение хотя бы некоторых, наиболее часто встречающихся типов графиков.
Построим, например, график поверхности z — sin(x2 у).
Построение графика одной функции, заданной аналитически
Вот как можно построить график функции синус.
Вот как система Mathematica разлагает функцию Sin в ряд Тейлора.
Список — это заключенная в фигурные скобки произвольная последовательность объектов, в которой объекты отделяются друг от друга запятыми. Именно списки используются для конструирования составных объектов. Иными словами, все составные объекты являются списками, причем конструкция объекта отражается в конструкции списка. Самый простой список — линейный. Строка (или столбец) представляется в виде линейного списка. Матрица, являющаяся списком строк (или столбцов), представляется в виде линейного списка линейных списков. Конечно же, с помощью списков можно строить и более сложно устроенные объекты, такие как деревья или различные разновидности графов.
В линейной алгебре часто рассматриваются объекты, сконструированные из других объектов. Вектор, например, часто представляется в виде списка чисел (являющихся его координатами в некотором базисе). Матрицы — это прямоугольные таблицы, в каждой клетке которых находится элемент некоторого кольца. Тензоры же являются просто многомерными таблицами. Как же такие составные объекты представляются в системе Mathematica? Оказывается, что для конструирования составных объектов произвольной сложности в системе Mathematica используются списки. Именно их мы и рассмотрим сейчас.
Для вычисления сумм в системе Mathematica имеется команда Sum. Вот как вычисляется, например,
Система Mathematica классно решает разнообразные уравнения и их системы.
В системе Mathematica знак равенства (=) в уравнениях представляется посредством
двойного знака равенства (= =). Вот как можно решить уравнение х3 + х - 2 = 0.
Из всего многообразия составных объектов линейной алгебры проще всего устроены векторы. Поэтому не удивительно, что именно они представляются самым простым видом списков — линейными списками. Фактически вектор представляется как список своих координат. Вот как, например, представляется стандартный базис в R3: e1 = {1, 0, 0}; е2 = {0, 1, 0}; е3 = {0, 0, 1}. А вот так представляется вектор u = {а,b,с} с координатами u = {а,b,с}: u = {а,b,с}. Давайте разложим этот вектор по стандартному базису и посмотрим, что получится.
е1={1,0,0}; е2={0,1,0 };е3={0,0,1),u={a,b, с}; v=a*e1+b*e2+ с*е3 (а,b,с)
Как видите, мы записали разложение вектора u = (а,b,с) по стандартному базису и, выполнив сложение трех векторов (проекций вектора u = {а,b,с) на оси координат), получили вектор v = {a,b,c}. (Как и следовало ожидать, вектор v = u.) Как видим, операции над векторами обозначаются естественным образом. Давайте теперь вычислим скалярное произведение векторов v и u.
u.v
а2 + b2 + с2
Естественно, это скалярный квадрат вектора u. Теперь давайте вычислим скалярное произведение вектора u и единичного орта е3.
u.е3 с
Как и следовало ожидать, оно равно соответствующей координате вектора u.
Система Mathematica может вычислять пределы — замечательные и не очень.
После того как запустим систему Mathematica 5, получится примерно то что изображено на Рисунок 2.1. Большое белое окно слева- блокнот. Именно в него вводится информация, и именно в нем отображаются результаты. Окно в середине - заставка-приветствие и справка. Окно справа - панель для ввода математических символов греческих букв и т.п. После запуска системы Mathematica в блокнот можно вводить информацию.
Если же по каким-либо причинам активным оказалось другое окно, щелкнув в белом рабочем поле, переключитесь на окно ввода системы Mathematica Введите 2+2 и нажмите комбинацию клавиш <Shift+Enter> (т.е. одновременно клавиши <Shift> и <Enter>).
В окне системы вы увидите следующее (Рисунок 2.2).
In[1]:=2+2 Out[l]=4