Проверка разложения на множители

Форум пользователей пакета Maple

Модератор: Admin

Axxel
Сообщения: 10
Зарегистрирован: Пн фев 11, 2013 11:28 pm

Проверка разложения на множители

Сообщение Axxel » Пн фев 11, 2013 11:42 pm

Добрый день!

Помогите пожалуйста в решении такой проблемы: есть система уравнений, каждое уравнение задаётся примерно так

Код: Выделить всё

eq[i] := a*x^5+x^4*b+d*x^2+d*a*x^3+d*b*x^2+d^2 = 0;

То есть левая часть уравнения - полином.
Я каждое из этих уравнений раскладываю на множители, используя команду factor, например

Код: Выделить всё

s[i]:=factor(eq[i]);

Некоторые из уравнений получается разложить, некоторые нет. Мне для дальнейшей работы нужны только те уравнения, которые можно разложить на множители. Можно ли как-то проверить, что данное уравнение разложить на множители удалось? И, например, организовать что-то вроде такого:

Код: Выделить всё

if eq[i] раскладывается на множители then
r[k]:=левый сомножитель(s[i])
l[k]:=правый сомножитель(s[i])

Возможно, надо как-то отследить, есть ли в получившемся после применения команды 'factor' выражении скобка?

Заранее спасибо.

volmike
Сообщения: 235
Зарегистрирован: Вс июн 05, 2005 2:42 pm
Контактная информация:

Сообщение volmike » Вт фев 12, 2013 12:05 am

Можно использовать команду factors - она вычисляет список множителей разложения с их степенями.
Лысый пешему не конный...

Kitonum
Сообщения: 2084
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Сообщение Kitonum » Вт фев 12, 2013 12:21 am

Процедура P решает Вашу задачу. Формальный аргумент L - список Ваших уравнений. Процедура возвращает список, каждый элемент которого - список, состоящий из уравнения, которое разложилось на множители, а затем список его множителей.

P:=proc(L)
local M, eq, a;
M:=[];
for eq in L do
a:=factor(lhs(eq));
if type(a, `*`) then M:=[op(M), [eq, [op(a)]]]; fi;
od;
M;
end proc:


Пример работы процедуры:

P([x^2+y+z=0, x^4-y^2=0, x^2+z^2+2*x*z+x+z-2=0]);

[[x^4-y^2 = 0, [x^2-y, x^2+y]], [x^2+z^2+2*x*z+x+z-2 = 0, [x+z+2, x+z-1]]]

Axxel
Сообщения: 10
Зарегистрирован: Пн фев 11, 2013 11:28 pm

Сообщение Axxel » Ср фев 13, 2013 11:59 pm

Kitonum
Большое Вам спасибо! Очень удобная процедура!

volmike
Спасибо, про factors я не знал, тоже полезная вещь!