Опубликован: 27.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 8:

Системы компьютерной алгебры

Аннотация: В данной лекции рассматриваются программы Mathematica и Maxima, позволяющие проводить обработку как числовой, так и символьной информации, а также осуществлять вычисления с большой степенью точности и оперировать огромными числами.
Ключевые слова: программные средства, тождество, выражение, программа, Windows, компьютерная алгебра, GNU, интерфейс, первообразная, значение, функция, MathCAD, mapl, описание системы, фирма, место, машинно-независимость, ядро, пользователь, вычисление, правильный ответ, algebraic, calculus, geometry, statistics, подпакет, сумма ряда, соответствие шаблону, аннулирование, simplify, expandability, polys, многочлен, plotting, HSB, hue, saturation, brightness, thickness, 'dashed, tick, automatic, график функции, список переменных, equation, мнимая единица, бесконечное множество, натуральный логарифмы, приближенное решение уравнения, infinity, предел функции, аналитические функции, Series, производная функции, дифференцирование, вторая производная, определенный интеграл, матричная форма, определитель, inverse, transpose, транспонирование, линейное уравнение, умножение матриц, импликация, упрощение логического выражения, GPL, shell, меню, сеанс, оболочка, информация, метка, вывод, Command, регистр, запись, присваивание, kill, параметр, прерывание, DESCRIBE, имя функции, иррациональное число, non-numerical, COTS, ACO, divide-by-zero, gcd, обыкновенное дифференциальное уравнение, кратность, неопределенный интеграл, интеграл, divergent, determine, определитель матрицы, invertible, Алгебраическим дополнением, система линейных уравнений, коэффициентами системы, свободными членами, Единичная матрица, batch

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

Большинство компьютерных программ, предназначенных для вычислений, работают только с числовыми выражениями. Как правило их результаты бывают приближенными, ведь при операциях с вещественными числами происходит их округление. В последнее время все большее распространение приобретают системы для научных и инженерных расчетов, избавленные от подобных недостатков. Они способны использовать в процессе вычислений математические теоремы и факты. Так, широко известное тригонометрическое тождество гласит, что sin2x+cos2x=1 для любого x. Ни один калькулятор не способен применить это тождество в процессе преобразований, в то время как такие программы, как Mathematica или Maxima, предназначенные для символьных вычислений, легко справляются с подобными задачами.

Там, где необходимо выполнить вычисления точно, либо осуществить аналитическое преобразование, например, упростить сложное математическое выражение, вычислить в символьном виде производную или первообразную заданной функции, разложить ее в ряд Тейлора, найти корни уравнения, заданного в достаточно общем виде и т. д., применяются так называемые системы компьютерной алгебры (системы символьных вычислений). Отметим также особую роль подобных систем в техническом и математическом образовании. Они позволяют проверить результаты громоздких математических расчетов и наглядно представить сложные математические объекты.

Мировым лидером среди подобного рода систем справедливо считается программа Mathematica. Ее версии доступны пользователям различных операционных систем, в том числе Windows и Linux. Следует отметить, что эта программа, заслуженно пользующаяся популярностью, стоит достаточно дорого.

Другой системой компьютерной алгебры, рассматриваемой в этом курсе, является Maxima. Эта программа распространяется под лицензией GNU, что позволяет рекомендовать ее широкому кругу пользователей. У каждой из этих двух программ есть свои сильные и слабые стороны. Удобный графический интерфейс является несомненным достоинством программы Mathematica, в то время как Maxima зачастую дает более корректные ответы. Так, например, при вычислении первообразной функции xn Maxima просит уточнить значение n, так как при n = -1 результатом является функция ln x, а при других n первообразная равна xn+1/(n+1). Программа Mathematica для такой функции всегда в качестве первообразной выдает значение xn+1/(n+1), хотя если в качестве функции задать 1/x, то получим верный результат - ln x. Другими представителями систем такого рода являются программы Mathcad и Maple, но в данном курсе они рассмaтриваться не будут.

Mathematica

Этот раздел посвящен описанию системы компьютерной алгебры Mathematica. Многие считают ее мировым лидером среди систем подобного класса. Разработкой этой программы занимается компьютерная фирма Wolfram Research, Inc. Число легальных пользователей программы Mathematica во всем мире превысило миллион человек. К сожалению, достаточно высокая для индивидуального пользователя нашей страны цена этой программы делает практически невозможным ее легальное использование в России.

Центральное место в системе Mathematica занимает машинно-независимое ядро математических операций Kernel. Оно гарантирует идентичность результатов, полученных при одних и тех же вычислениях в системах Mathematica, установленных на разных платформах. В дальнейшем изложении мы будем рассматривать процесс работы с этой программой в ОС Linux.

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

Следует отметить, что Mathematica позволяет решать корректно поставленные математические задачи, но вся ответственность за их формулировку и перевод на язык этой системы лежит на пользователе. Не понимая постановки задачи, невозможно получить правильный ответ.

Работа с выражениями

Для запуска программы наберите команду mathematica в командном окне, либо в стартовом меню выберите пункт Mathematica.


При старте открывается рабочее окно, в котором отображаются ввод и вывод программы. В верхней его части находится меню, позволяющее выполнять различные действия, в том числе сохранение текущей сессии в файле с расширением nb. Кроме основного окна в работе участвуют так называемые палитры. Если они не появились при старте, то для их открытия можно воспользоваться пунктом Palettes из меню File. Палитра Basic Input предоставляет набор кнопок для ввода наиболее употребительных символов, таких как корни, дроби, интегралы, буквы греческого алфавита и т. д. Палитра Basic Calculations содержит шаблоны для вычисления основных алгебраических функций.

Чтобы инициировать процесс вычисления после набора команды нужно одновременно нажать клавиши Shift и Enter (либо клавишу Enter на числовой клавиатуре справа). После завершения расчета программа присваивает имена вида In[1] и Out[1] исходному выражению и результату. Можно отменить показ имен, отключив в меню Kernel пункт Show In/Out Names.

Mathematica в качестве имен функций почти всегда использует их английские названия. Исключениями являются несколько наиболее употребимых функций: кроме N для определения численного значения, символ D используется для нахождения производной.

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

? Name - помощь по заданному слову Name;

?? Name - расширенная помощь по заданному слову Name.

Большинство функций программы Mathematica являются встроенными, т. е. становятся доступными сразу после загрузки системы. Кроме того, имеется набор так называемых пакетов расширения, содержащих специализированные функции для работы в той или иной области. Среди них Algebra, Calculus, DiscreteMath, Geometry, LinearAlgebra, Miscellaneous, Graphics, NumberTheory, NumericalMath, Statistics и некоторые другие. Каждый из пакетов содержит набор подпакетов, например, в пакет Algebra входят такие подпакеты, как InequalitySolve для решения неравенств, SymbolicSum для вычисления сумм рядов, Trigonometry для работы с тригонометрическими выражениями и другие. Для того чтобы сделать доступными функции, входящие в состав специализированных пакетов, следует их подключить командой типа

Needs["Algebra`Trigonometry`"]

или

<<Algebra`Trigonometry`

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

Mathematica всегда старается упростить введенное выражение. Если вы попробуете вычислить корень квадратный из двадцати, для чего после ввода соответствующего выражения нажмете Shift+Enter, то результатом окажется выражение, равное двум корням из пяти. Программа упростит выражение, оставив его в символьном виде. Для того чтобы получить численное значение выражения expr, следует использовать функцию N[expr] или N[expr, n], где n задает точность вычислений. По умолчанию выводится значение выражения с пятью знаками после запятой.

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


Отметим некоторые особенности синтаксиса системы, используемого при записи арифметических выражений:

  • знак умножения может быть заменен пробелом;
  • имена встроенных функций начинаются с большой буквы;
  • параметры функций задаются в квадратных скобках, например Sin[2] ;
  • круглые скобки используются для того, чтобы выделить части выражений и изменить порядок выполнения операций;
  • фигурные скобки используются при задании списков, например, при перечислении уравнений, входящих в систему.
Дмитрий Фаттахов
Дмитрий Фаттахов
При задании различных оттенков цвета при кодировании графической информации, широко применяется следующая система счисления:
Виктория Бельгесова
Виктория Бельгесова
Документ об образовании
Андрей Лучицкий
Андрей Лучицкий
Россия
Сергей Абрамец
Сергей Абрамец
Россия, Североморск