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

Maxima – специализированный математический пакет, которым пользуются профессиональные математики во всем мире. Подобные пакеты также называются системами компьютерной алгебры, среди них наиболее известны Maple, Matlab, Mathcad, Mathematica, Maxima, Derive, Axiom, MuPAD. Maxima — система работы с символьными и численными выражениями, включающая дифференцирование, интегрирование, разложение в ряд, преобразования Лапласа, обыкновенные дифференциальные уравнения, системы линейных уравнений, многочлены, множества, списки, векторы, матрицы и тензоры. Maxima производит численные расчеты высокой точности, используя точные дроби, целые числа и числа с плавающей точкой произвольной точности. Система позволяет строить графики функций и статистических данных в двух и трех измерениях.

Maxima - свободное программное обеспечение, существуют сборки под Windows, Linux, MacOS.

К ядру Maxima существуют различные интерфейсы: простой консольный, графические интерфейс xMaxima и wxMaxima. Мы будем работать с последним.

Для получения справки по той или иной функции необходимо в окне wxMaxima ввести ? command (заменив command на имя команды).

Maxima как суперкалькулятор

В рабочей сессии (сохраняемой в файле с расширением wxm) системы Maxima можно вводить команды в поле ввода.

После ввода команды она печатается в рабочем листе, причем введенная команда помечается, как (%i1), после чего печатается результат ее исполнения, помеченный как (%o1). С каждой новой введенной командой ее номер будет увеличиваться на 1:

(%i1) 2+2;
(%o1) 4

(%i2) 57/179+91/1543;
(%o2) 104240/276197

Как мы видим, Maxima выдает ответ в точном виде в виде рационального выражения. Если хочется представить его в виде десятичной дроби (с некоторой точностью) воспользуйтесь функцией float от некоторого выражения:

 (%i3) float(%o2)
(%o3) 0.37741177492876

Здесь мы использовали выражение %o2 для ссылки на результат ранее вычисленного выражения. Таким образом можно ссылаться на результат любого ранее вычисленного выражения.

Кроме типа float существует тип big float, в котором можно работать с действительными числами произвольной точности. Точность задается путем присваивания значения глобальной переменной fpprec. Для преобразования в тип big float используется функция bfloat:

(%i4) bfloat(%o2)
(%o4) 3.774117749287646b-1

(%i5) fpprec:30
(%o5) 30

(%i6) bfloat(%o2)
(%o6) 3.77411774928764613663435880911b-1

Буква b в записи числа используется вместо e для обозначения типа big float.

Подробней смотрите раздел "Floating Point"справочной системы.

Числа и константы

Если в выражении встречается число, записанное с плавающей точкой (например, 3.14 или 5.6e-17), то все вычисления выполняются приближенно, в противном случае вычисления проводятся точно. В Maxima есть следующие константы:

%pi
Число пи
%i
Мнимая единица i
%e
Основание натуральных логарифмов e
inf
Положительная бесконечность
minf
Отрицательная бесконечность
true
Логическая истина
false
Логическая ложь

Вычисления с участием констант выполняются точно (если только их значение не будет переведено к действительному значению), например

(%i7) sin(%pi/3);
(%o7) sqrt(3)/2

(%i8) sin(%pi);
(%o8) 0

(%i9) sin(3.1415926);
(%09) 5.3589793170053202*10-8

Подробней смотрите раздел "Constants" справочной системы.

Операторы

В Maxima существуют следующие операторы:

Арифметические: +, -, *, /, ^ (возведение в степень), ! (факториал).

Логические: <, >, >=, <=, = (равно), # (не равно).

Оператор присваивания: :.

Подробней смотрите раздел "Operators" справочной системы.

Переменные

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

(%i10) a:2;
(%o10) 2
(%i11) b:3;
(%o11) 3
(%i12) (a+b)^2;
(%o12) 25
(%i13) (a+c)^2;
(%o13) (c+2)2

Стандартные функции

x1/2 sqrt(x)

|x| abs(x)

Знак x  signum(x) (возвращает 1, -1 или 0) или sign(x) (возвращает текстовую строку – смотрите документацию).

Тригонометрические функции: sin(x), cos(x), tan(x), cot(x)

Обратные тригонометрические: asin(x), acos(x), atan(x), acot(x)

Экспонента: exp(x)

Натуральный логарифм: log(x). Для вычисления логарифмов по другим основаниям пользуйтесь свойствами логарифмов для сведения логарифма к натуральному.

Преобразование математических выражений

В выражение могут входить константы, свободные переменные, математические функции. Пример выражения:

(%i14) A:sin(sqrt(Pi)+exp(2));
(%o14) sin(sqrt(Pi) + %e2)

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

Функция factor(eq) разлагает выражение eq на множители.

(%i15) P:x^4+2*x^3+2*x^2+2*x+1;
(%o15) x4 + 2x3 + 2x2 + 2x + 1
(%i16) factor(P);
(%o16) (x+1)2(x2+1)

Функция expand(eq) разлагает скобки в выражении eq.

(%i17) expand(%);
(%o17) x4 + 2x3 + 2x2 + 2x + 1

Функция radcan(eq) приводит рациональные выражения к общему знаменателю и упрощает их.

(%i18) (x+1)/(y-1)+(x-1)/(y+1);
x - 1 x + 1
(%o18) ----- + -----
y + 1 y - 1
(%i19) radcan(%);
2 x y + 2
(%o19) ---------
2
y - 1

Для раскрытия и упрощения тригонометрических выражений используются функции trigexpand(eq) и trigsimp(eq).

(%i20) sin(2*x);
(%o21) sin(2x)
(%i22) trigexpand(%);
(%o22) 2 cos(x) sin(x)
(%i23) sin(x)^2+cos(x)^2;
(%o23) sin(x)2+cos(x)2
(%i24) trigsimp(%)
(%o24) 1

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

(%i25) trigreduce(sin(x)*cos(x))
(%o25) sin(2x)/2

Аналитическое решение уравнений и систем

Используется функция solve.

Численное решение уравнений и систем

Используется функция find_root для поиска корня делением пополам и функция newton для метода Ньютона.

Упражнения

  1. Какая цифра в десятичной записи числа π стоит на сотом месте после запятой?
  2. Сколько цифр в десятичной записи 179! ?
  3. Вычислите значение (6+2×51/2)1/2-(6-2×51/2)1/2.
  4. Вычислите sin4(π/8)+cos4(3π/8)+sin4(5π/8)+cos4(7π/8).
  5. Упростите выражение (1 + sin(2x) + cos(2x))/(1 + sin(2x) - cos(2x)).
  6. Разложите на множители многочлен x3-4x2+5x-2.
  7. Найдите численное решение уравнения cos x=x.
  8. Решите уравнение x3 - x2 - 11x + 15 = 0
  9. Решите систему уравнений:

    xy=3
    x+y=5