Maple – специализированный математический пакет, которым пользуются профессиональные математики во всем мире. Подобные пакеты также называются системами компьютерной алгебры. Из множества подобных систем (Maple, Matlab, Mathcad, Mathematica, Macsyma, Derive, Axiom, MuPAD) Maple является признанным лидером в области символьных вычислений (то есть в преобразовании выражений с использованием переменных, многочленов, функций и т.д.). Помимо этого в Maple входят модули, облегчающие работу в таких разделах математики, как высшая алгебра, линейная алгебра, аналитическая геометрия, теория чисел, математический анализ, дифференциальные уравнения, комбинаторный анализ, теория вероятностей, статистика и многих других.
Для получения справки по той или иной команде необходимо в окне Maple ввести ?command
(заменив command
на имя команды).
В рабочем листе (worksheet) системы Maple можно вводить команды после приглашения ">
".
Команда должна завершаться символом ";
", ее результат немедленно выводится на экран.
Если вместо ";
" поставить ":
", то команда будет выполнена, но результат ее работы
не будет напечатан. Например:
> 2+2;4> 57/179+91/1543;
104240/276197
Как мы видим, Maple выдает ответ в точном виде в виде рационального выражения. Если хочется представить
его в виде десятичной дроби (с некоторой точностью) воспользуйтесь функцией evalf
. Ее первый обязательный
параметр – вычисляемое выражение, второй (необязательный) – количество значащих десятичных знаков
(учтите, что при этом выражение округляется для вывода соответствующего количества знаков):
> evalf(%);0.3774117749> evalf(%%,30);
0.377411774928764613663435880911
Символ %
обозначается последнее вычисленное Maple выражение, %%
– предпоследнее,
%%%
— предпредпоследнее (а вот обозначения %%%%
уже не существует).
Если в выражении встречается число, записанное с плавающей точкой (например, 3.14
или
5.6e-17
), то все вычисления выполняются приближенно, в противном случае вычисления проводятся
точно. В Maple есть следующие константы:
Pi
I
exp(1)
infinity
true
false
Вычисления с участием констант выполняются точно (если только их значение не будет переведено к действительному значению), например
> sin(Pi/3);31/2/2> sin(Pi);
0> sin(3.1415926);
0.5358979324 10-7
В Maple существуют следующие операторы:
Арифметические: +
, -
, *
, /
, ^
(возведение в степень), !
(факториал).
Логические: <
, >
, >=
, <=
, =
(равно), <>
(не равно).
Оператор присваивания: :=
.
Переменной является любой идентификатор (состоящий из латинских букв и цифр, начинающийся с цифры). Переменной может быть присвоено любое значение при помощи оператора присваивания :=
. Переменная, которой не присвоено никакое значение считается свободной переменной и ее имя сохраняется в арифметических вычислениях. Например:
> a:=2: b:=3: > (a+b)^2;25> (a+c)^2;
(2+c)2
x1/2 – sqrt(x)
|x| – abs(x)
Знак x (возвращает 1, -1 или 0) – sign(x)
Тригонометрические функции: sin(x)
, cos(x)
, tan(x)
, cot(x)
Обратные тригонометрические: arcsin(x)
, arccos(x)
, arctan(x)
, arccot(x)
Экспонента: exp(x)
Натуральный, десятичный логарифм и логарифм по данному основанию: ln(x)
, log10(x)
, log[a](x)
В выражение могут входить константы, свободные переменные, математические функции. Пример выражения:
> A:=sin(sqrt(Pi)+exp(2));A:=sin(Pi1/2+e2)
Довольно часто в качестве выражений выступают многочлены от одной или нескольких переменных или рациональные выражения. Maple содержит различные функции для преобразования таких выражений.
Функция factor(eq)
разлагает выражение eq
на множители.
> P:=x^4+2*x^3+2*x^2+2*x+1: > factor(P);(x2+1)(x+1)2
Функция expand(eq)
раскрывает скобки в выражении. Если указать один или несколько
дополнительных параметров в виде expand(eq,a,b,c)
, то выражения a
, b
,
c
раскрываться не будут. Это полезно, если необходимо каждое слагаемое умножить
на какое-то выражение.
Примеры:
> expand((x+1)*(x+2));x2+3x+2> expand(sin(x+y));
sin(x)cos(y)+cos(x)sin(y)> expand((x+1)*(y+z),x+1);
(x+1)y+(x+1)z
Для приведения дробей к общему знаменателю с последующим сокращением используется функция normal(eq)
.
> normal(1/x+1/y);(x+y)/(xy)> (a^4-b^4)/((a^2+b^2)*a*b);
(a4-b4)/((a2+b2)ab)> normal(%);
(a2-b2)/(ab)
Функция simplify(eq)
упрощает выражение eq
. В качестве второго (необязательного) параметра, ей
можно указать, какие выражения преобразовывать: trig
– тригонометрические,
power
– степенные, radical
– радикалы, exp
– экспоненты, ln
– логарифмы.
Пример:
> simplify(sin(x)^2+cos(x)^2);1
Для решения уравнений используется функция solve(eq,x)
, где eq
– решаемое уравнение,
x
– имя переменной, относительно которой разрешается уравнение. Пример:
> solve(x^2+x-1=0,x);-1/2-51/2/2 ,-1/2+51/2/2> solve(a*x+b=0,x);
-b/a> solve(a*x+b=0,b);
-ax
Если уравнение имеет несколько решений, то решение уравнения можно присвоить некоторой переменной, например p
.
Далее можно использовать k
-е решение уравнения в виде p[k]
:
> p:=solve(x^2+x-1=0,x): p[1];-1/2-51/2/2> simplify(p[1]*p[2]);
-1
Системы уравнений решаются с помощью такой же функции solve({eq1,eq2,...},{x1,x2,...})
,
только теперь в параметрах функции следует указывать в первых фигурных скобках через запятую уравнения,
а во вторых фигурных скобках перечисляются через запятую переменные, относительно которых требуется решить систему.
Если необходимо использовать полученные решения уравнений для дальнейших вычислений, то необходимо результат,
возвращаемый функцией solve
присвоить какой-нибудь переменной, например, p
, а затем
выполнить команду assign(p)
. Пример:
> p:=solve( {x+y=a,x-y=b}, {x,y} ): > assign(p); > x;a/2+b/2
Попробуем решить уравнение: x6-2x+1=0.
Использование функции solve
даст нам один корень -1 и еще набор выражений вида
RootOf(_Z^5+_Z^4+_Z^3+_Z^2+_Z-1,index = 1).
Дело в том, что произвольное уравнение степени выше 4 с рациональными коэффициентами
может не иметь корней, выразимых в виде радикалов над рациональными числами. Решения
всевозможных таких уравнений называются алгебраическими числами.
Данное уравнение также неразрешимо в радикалах,
и Maple нашла нам единственный корень, выразимый в радикалах (1) и сообщила, что оставшиеся
корни являются алгебраическими числами: корнями многочлена z5+z4+z3+z2+z-1=0 (именно этот многочлен указан в аргументе функции RootOf
). Maple умеет работать с алгебраическими числами, но можно также найти приближенное численное решение при помощи функции fsolve
:
> fsolve(x^6-2*x+1=0,x);.5086603916, 1.000000000
Иногда Maple при решении трансцендентных уравнений не выводит сложные выражения в виде радикалов, а оставляет их в форме RootOf.
Чтобы заставить Maple выводить все решения в виде радикалов (естественно, если они представимы в такой форме), необходимо присвоить
значение true
системной переменной _EnvExplicit
(_EnvExplicit:=true
).
Команда solve
, применяемая для решения тригонометрических уравнений, находит только главные решения,
то есть выводит только одно решение из серии периодических решений:
> solve(sin(2*x)+cos(2*x)=1,x);Pi/4 ,0
Для того, чтобы Maple находила все решения, необходимо предварительно присвоить значение true
системной переменной
_EnvAllSolutions
. Тогда мы получим результат в другом виде, в котором будут фигурировать переменные
Z1~
и Z2~
. Эти переменные обозначают произвольную константу целого типа, в более привычном виде
решения можно будет записать, как π/4+πn , πk .
10(xy)1/2+3x-3y=58
x-y=6