* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Операции с полиномами в СКМ Maple
407
сел над полем комплексных чисел. При этом справедливо отношение evala (AFactor(p))= factor(p,complex). Таким образом, эта функция является, по существу, избыточной. В случае одномерного полинома полное разложение на множители является разложением на линейные множители. Функция AFactors аналогична функции Afactor, но создает структуру данных формы [u,[[f[1],e[1]],…,[f[n], e[n]]]] так, что p=u*f[1]^e[1]*…*f[n]^e[n], где каждый f[i] – неприво димый полином. Ниже даны примеры применения функции Afactor:
> evala(AFactor(2*x^2+4*x-6));
2(x + 3)(x – 1)
> evala(AFactor(x^2+2*y^2));
(x – RootOf(_Z 2 + 2)y)(x + RootOf(_Z 2 + 2)y)
> expand((x-1)*(x-2)*(x-3)*(x-4));
x4 – 10x3 + 35x2 – 50x + 24
> AFactor(%);
AFactor(x4 – 10x3 + 35x2 – 50x + 24)
> evala(%);
(x –1)(x – 2)(x – 3)(x – 4) Нетрудно заметить, что разложение полинома на множители позволяет оце нить наличие у него корней. Однако для этого удобнее воспользоваться специаль ными функциями, рассмотренными ниже.
5.4.7. Вычисление корней полинома
Для вычисления действительных и комплексных корней полиномов служит уже известная нам функция solve(p,x), возвращающая список корней полинома p одной переменной. Кроме того, имеются следующие функции для вычисления корней полиномов:
roots(p) roots(p, x) roots(p, K) roots(p, x, K)
Эти функции вычисляют точные корни в рациональной или алгебраической области чисел. Корни возвращаются в виде [[r1,m1], …, [rn,mn]], где ri – это корень полинома, а mi – порядковый номер полинома. С действиями этих функций можно разобраться с помощью приведенных ниже примеров:
> p:=x^4+9*x^3+31*x^2+59*x+60;
p := x4 + 9x3 + 31x2 + 59x + 60
> solve(p,x);
3, 4, 1 + 2I, 1 – 2I
> roots(p,x);
[[ 4, 1], [ 3, 1]]
> roots(x^2-4,x);
[[2, 1], [ 2, 1]]