Системы компьютерной алгебры
Алгебраические преобразования
Особо важную роль играет способность системы Maxima производить разнообразные символьные преобразования алгебраических выражений. Следующий пример демонстрирует раскрытие скобок в них:
C1) p1:x^2-1; 2 (D1) x - 1 (C2) p2:x-1; (D2) x - 1 (C3) expand(p1*p2); 3 2 (D3) x - x - x + 1 (C4) expand((p1+p2)^2); 4 3 2 (D4) x + 2 x - 3 x - 4 x + 4
Функцию divide можно использовать для нахождения частного и остатка от деления одного многочлена на другой:
(C5) divide(p1*p2, p1); (D5) [x - 1, 0]
Функция gcd определяет наибольший общий делитель многочленов, а factor осуществляет разложение многочлена на множители:
(C6) gcd(x^3-1, x^2-1, x-1); (D6) x - 1 (C7) factor(x^8-1); 2 4 (D7) (x - 1) (x + 1) (x + 1) (x + 1)
Подстановка какого-либо выражения вместо переменной осуществляется при помощи операции =. Например, заменим все вхождения x в выражении на 5/z:
(C8) x^4+3*x^3-2*x, x=5/z; 10 375 625 (D8) - -- + --- + --- z 3 4 z z
Функция ratsimp выносит за скобки наибольший общий делитель:
C9) ratsimp(%); 3 10 z - 375 z - 625 (D9) - ------------------- 4 z
Используя функцию assume (to assume - допускать), можно при вычислениях учитывать дополнительные условия, задаваемые неравенствами:
(C10) sqrt(x^2); (D10) ABS(x) (C11) assume(x<0); (D11) [x < 0] (C12) sqrt(x^2); (D12) - x
Функция forget (to forget - забывать) снимает все ограничения, наложенные при помощи assume:
C13) forget(x<0); (D13) [x< 0] (C14) sqrt(x^2); (D14) ABS(x)
Maxima легко оперирует тригонометрическими выражениями. Так, функция trigexpand использует формулы преобразования сумм двух углов для представления введенного выражения в как можно более простом виде:
(C15) sin(u+v)*cos(u)^3; 3 (D15) COS (u) SIN(v + u) (C16) trigexpand(%); 3 (D16) COS (u) (COS(u) SIN(v) + SIN(u) COS(v))
Функция trigreduce преобразует тригонометрическое выражение к сумме элементов, каждый из которых содержит только единственный sin или cos:
C17) trigreduce(%); SIN(v + 4 u) + SIN(v - 2 u) (D17) --------------------------- 8 3 SIN(v + 2 u) + 3 SIN(v) + ------------------------- 8
Функции realpart и imagpart возвращают действительную и мнимую часть комплексного выражения:
(C18) z1:-3+%i*4; (D18) 4 %I - 3 (C19) z2:4-2*%i; (D19) 4 - 2 %I (C20) z1*z2; (D20) (4 - 2 %I) (4 %I - 3) (C21) expand(%); (D21) 22 %I - 4 (C22) realpart(''c20); (D22) - 4 (C23) imagpart("c20); (D23) 22
Решение уравнений
Maxima может решать уравнения и системы алгебраических уравнений с помощью функции solve. Равная нулю правая часть уравнения может быть опущена:
(C1) solve (x^2=1, x); (D1) [x = - 1, x = 1] (C2) solve(x^2-1,x); (D2) [x = - 1, x = 1] (C3) solve(log(x+3)=1, x); (D3) [x = %E - 3]
При решении тригонометрических уравнений выдается только одно из бесконечного множества возможных решений:
(C4) solve(sin(x)-1, x); SOLVE is using arc-trig functions to get a solution. Some solutions will be lost. %PI (D4) [x = ---] 2
В следующем примере функция solve используется для решения системы из трех уравнений с тремя неизвестными:
(C5) s:[x+y+z=3, x+2*y-z=2, x+y*z+z*x=3]; (D5) [z + y + x = 3, - z + 2 y + x = 2, y z + x z + x = 3] (C6) solve(s, [x,y,z]); (D6) [[x = 1, y = 1, z = 1], [x = 7, y = - 3, z = - 1]]
Если уравнение не имеет решений на множестве действительных чисел, то Maxima ищет решения среди комплексных чисел:
(C7) solve(x^2+1,x); (D7) [x = - %I, x = %I]
Задание
Решите уравнение ln(tg x) = 0.