Maxima – специализированный математический пакет, которым пользуются профессиональные математики во всем мире. Подобные пакеты также называются системами компьютерной алгебры, среди них наиболее известны Maple, Matlab, Mathcad, Mathematica, Maxima, Derive, Axiom, MuPAD. Maxima — система работы с символьными и численными выражениями, включающая дифференцирование, интегрирование, разложение в ряд, преобразования Лапласа, обыкновенные дифференциальные уравнения, системы линейных уравнений, многочлены, множества, списки, векторы, матрицы и тензоры. Maxima производит численные расчеты высокой точности, используя точные дроби, целые числа и числа с плавающей точкой произвольной точности. Система позволяет строить графики функций и статистических данных в двух и трех измерениях.
Maxima - свободное программное обеспечение, существуют сборки под Windows, Linux, MacOS.
К ядру Maxima существуют различные интерфейсы: простой консольный, графические интерфейс xMaxima и wxMaxima. Мы будем работать с последним.
Для получения справки по той
или иной функции необходимо в окне wxMaxima ввести ?
command
(заменив command
на имя команды).
В рабочей сессии (сохраняемой в файле с расширением 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
%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
find_root
для поиска корня делением пополам и функция newton
для метода Ньютона.xy=3
x+y=5