Алгебра в программе Mathematica

         

Алгебраические преобразования



Алгебраические преобразования



Давайте посмотрим, как система 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 используются списки. Именно их мы и рассмотрим сейчас.




Суммы



Суммы



Для вычисления сумм в системе 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



Знакомство с системой Mathematica



После того как запустим систему Mathematica 5, получится примерно то что изображено на Рисунок 2.1. Большое белое окно слева- блокнот. Именно в него вводится информация, и именно в нем отображаются результаты. Окно в середине - заставка-приветствие и справка. Окно справа - панель для ввода математических символов греческих букв и т.п. После запуска системы Mathematica в блокнот можно вводить информацию.

Если же по каким-либо причинам активным оказалось другое окно, щелкнув в белом рабочем поле, переключитесь на окно ввода системы Mathematica Введите 2+2 и нажмите комбинацию клавиш <Shift+Enter> (т.е. одновременно клавиши <Shift> и <Enter>).

В окне системы вы увидите следующее (Рисунок 2.2).
In[1]:=2+2 Out[l]=4