Простейшие преобразования и вычисления


Будучи системой символьных вычислений, Maple должен иметь средства для преобразования алгебраических выражений: приведения подобных членов (это делается по умолчанию), раскрытия скобок (expand), группировки (collect), разложения на множители (factor для многочленов и ifactor для целых чисел) упрощения выражений (simplify) и т.д. Действие перечисленных выше функций станет понятно из следующих примеров:

> collect(x^2+2*x*y-5*y-y^2+x*y^2+3,y);

(-1 + x) y2 + (-5 + 2 x) y + x2 + 3

> expand((x^2+x-1)*(x^2+3));

x4 + 2 x2 + x3 + 3 x - 3

> expand(cos(3*x));

4 cos(x)3 - 3 cos(x)

> factor(a^3-b^3);

(a - b) (a2 + a b + b2)

> ifactor(22!+1);

(23) (521) (93799610095769647)

> a:=sin(u)^2+cos(u)^2; simplify(a);

a := sin(u)2 + cos(u)2

1



Решение уравнений, неравенств и систем


Для решения уравнений, систем уравнений и неравенств в Maple используется команда (функция) solve. Приведем примеры:

 > solve(x^2-3*x+2);

1, 2

 

Обратите внимание: если первый (а в нашем случае и единственный) аргумент solve не является уравнением (или неравенством), то Maple трактует его так, как если бы это выражение было приравнено к 0.

> solve(x^2-3*x+2<0);

RealRange(Open(1), Open(2))

> solve(x^2-3*x+2>=0);

RealRange(-infinity,1), RealRange(2,infinity)

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

Рассмотрим примеры решения алгебраических уравнений степеней выше второй:

> solve(x^3-2);

2^(1/3), -1/2*2^(1/3)+1/2*I*sqrt(3)*2^(1/3), -1/2*2...

> solve(x^12=1);

1, -1, I, -I, 1/2*sqrt(2+2*I*sqrt(3)), -1/2*sqrt(2+...
1, -1, I, -I, 1/2*sqrt(2+2*I*sqrt(3)), -1/2*sqrt(2+...

 

Если же корни уравнения не выражаются в радикалах или их выражение слишком громоздко, Maple представляет ответ, используя функцию RootOf :

 

> a:=solve(x^5-3*x+7);

a := RootOf(_Z5 - 3 _Z + 7)

> b:=a^5-3*a;

b := RootOf(_Z^5-3*_Z+7)^5-3*RootOf(_Z^5-3*_Z+7)

> simplify(b);

-7

 В случае, когда корни выражаются в радикалах (например, при решении алгебраических уравнений 4-й степени) получить явное выражение корней можно, присвоив зарезервированной переменной _EnvExplicit значение true. (Альтернативные вариант: использовать функцию convert с параметром radical.)

 С помощью команды solve можно решать не только алгебраические уравнения и неравенства:

> solve(cos(x)-sin(2*x));

1/2*Pi, -1/2*Pi, 1/6*Pi, 5/6*Pi

 При решении тригонометрического уравнения Maple привел в решения, лежащие в пределах одного промежутка периодичности (в нашем случае это интервал от - Pi до Pi). Проиллюстрируем, как с помощью зарезервированной переменной окружения _EnvAllSolutions можно обеспечить вывод всех решений:

> _EnvAllSolutions := true:

> solve(cos(x)-sin(2*x));

1/2*Pi+2*Pi*_Z, -1/2*Pi+2*Pi*_Z, 1/6*Pi+2*Pi*_Z, 5/...

 

Приведем ряд примеров применения функции solve для решения уравнений с несколькими переменными:

> solve(x^2*y+y-1);

{x = x, y = 1/(x^2+1)}

> solve(x^2*y+y-1, x);

sqrt(-y*(y-1))/y, -sqrt(-y*(y-1))/y

> solve(x^2*y+y-1,y);

1/(x^2+1)


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

Приведем примеры решения систем уравнений:

> solve({x+2*y=5, x^2-y^2=8});

{x = 3, y = 1}, {y = 17/3, x = -19/3}

> solve({2*x+y=alpha, x-y-2=0},{x,y});

{y = -4/3+1/3*alpha, x = 2/3+1/3*alpha}

 

Кроме команды solve в Maple имеется целое семейство ее аналогов для решения уравнений специального вида: dsolve и pdesolve используются для решения дифференциальных уравнений; isolve - для решения уравнений в целых числах; msolve - для решения сравнений по модулю; rsolve - для явного нахождения формулы общего члена рекуррентно заданных последовательностей; fsolve - для численного решения уравнений.


Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики