Следующая: , Предыдущая: Top, Вверх: Top


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

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

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

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

В рабочем листе (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
Мнимая единица i
exp(1)
Основание натуральных логарифмов e
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 .

Упражнения

  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. Решите уравнение 3x-(18x+1)1/2+1=0
  9. Решите уравнение ||2x-3|-1|=x.
  10. Решите уравнение (найдите все решения) sin x - cos x=1/sin x.
  11. Решите систему уравнений:

    10(xy)1/2+3x-3y=58

    x-y=6