factor

Включите полином в неприводимые полиномы

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

factor(f, <Adjoin = adjoin>, <MaxDegree = n>)
factor(f, F | Domain = F | Full)

Описание

factor(f) вычисляет факторизацию f = u f1e1  …  f r e r полиномиального f, где u является содержимым f, f 1, …, f r отличные примитивные неприводимые факторы f и e 1, …, e, r является положительными целыми числами.

factor переписывает его аргумент как продукт как можно большего количества условий. В некотором смысле это - дополнительная функция expand, который переписывает его аргумент как сумму как можно большего количества условий.

Если f полином, содействующим звонком которого не является Expr, затем f учтен по его содействующему звонку. Смотрите Пример 10.

Если f полином с содействующим звонком Expr, затем f учтен по самому маленькому звонку, содержащему коэффициенты. Математически, этот подразумеваемый содействующий звонок всегда содержит кольцевой целых чисел. Смотрите Пример 4. Если коэффициент звонит R 'off' не Expr, затем мы говорим, что подразумеваемым содействующим звонком является R. Элементы подразумеваемого содействующего звонка считаются константами и не учтены дальше. В частности, содержимое u является элементом подразумеваемого содействующего звонка.

С опцией Adjoin, элементы adjoin также примкнуты к содействующему звонку.

Если второй аргумент F или, альтернативно, Domain = F дан, затем f учтен по вещественным числам или комплексные числа . Факторизация по или выполняется с помощью числовых вычислений, и результаты будут содержать числа с плавающей запятой. Смотрите Пример 5.

Если f арифметическое выражение, но не номер, это рассматривается как рациональное выражение. Нерациональные подвыражения, такие как sin(x), exp(1), x^(1/3) и т.д., но не постоянные алгебраические подвыражения, такие как I и (sqrt(2)+1)^3, заменяются вспомогательными переменными перед факторингом. Алгебраические зависимости подвыражений, таких как уравнение cos (x) 2 = 1 - sin (x) 2, не обязательно учтены. Смотрите Пример 7.

Получившееся выражение затем записано как частное двух многочленных выражений в оригинале и вспомогательном indeterminates. Числитель и знаменатель преобразованы в полиномы с содействующим звонком Expr через poly, и подразумеваемый содействующий звонок является самым маленьким звонком, содержащим коэффициенты полинома числителя и полинома знаменателя. Обычно, это - звонок целых чисел. Затем оба полинома учтены по подразумеваемому содействующему звонку и кратности e, i, соответствующий факторам знаменателя, является отрицательными целыми числами; смотрите Пример 3. После факторизации вспомогательные переменные заменяются исходными подвыражениями. Смотрите Пример 6.

Если f целое число, затем оно разложено на продукт начал, и результат эквивалентен для ifactor. Если f рациональное число, затем и числитель и знаменатель разложены на продукт начал. В этом случае кратность e i, соответствующий факторам знаменателя, является отрицательными целыми числами. Смотрите Пример 2.

Если f число с плавающей точкой или комплексное число, затем factor возвращает факторизацию с одним факторным f.

Результат factor объект доменного типа Factored. Позвольте g:=factor(f) будьте таким объектом.

Это представлено внутренне list[u, f1, e1, ..., fr, er] из нечетной длины 2 r + 1. Здесь, f1 через fr имеют тот же тип как вход (или полиномы или выражения); e1 через er целые числа; и u арифметическое выражение.

Можно извлечь содержимое u и условия f i e i оператором показателя преломления обыкновенной волны [ ], т.е. g[1] = f1^e1, g[2] = e1^e2, ... если u = 1 и g[1] = u, g[2] = f1^e1, g[3] = e1^e2, ..., соответственно, если u ≠ 1.

Вызов Factored::factors(g) дает к списку [f1, f2, ...] из факторов, вызов Factored::exponents(g) возвращает список [e1, e2, ...] из экспонент.

Вызов coerce(g,DOM_LIST) возвращает внутреннее представление учтенного объекта, т.е. список [u, f1, e1, f2, e2, ...].

Обратите внимание на то, что результат factor распечатан как выражение, и оно неявно преобразовано в выражение каждый раз, когда оно обрабатывается далее другими функциями MuPAD®. Как пример, результат q:=factor(x^2+2*x+1) распечатан как (x+1)^2, который является выражением типа "_power".

Смотрите Пример 1 для рисунков и страницы справки Factored для деталей.

Если f не номер, затем каждый из полиномов p 1, …, p r примитивен, т.е. наибольший общий делитель его коэффициентов (см. content и gcd) по подразумеваемому содействующему звонку (см. выше для определения) тот.

В настоящее время факторинг полиномов возможен по следующим подразумеваемым содействующим звонкам: целые числа, вещественные числа, комплексные числа и рациональные числа, конечные поля — представленный IntMod(n) или Dom::IntegerMod(n) для простого числа n, или Dom::GaloisField—, и звонки получили из этих основных звонков путем взятия полиномиальных звонков (см. Dom::DistributedPolynomial, Dom::MultivariatePolynomial, Dom::Polynomial, и Dom::UnivariatePolynomial), поля частей (см. Dom::Fraction), и алгебраические расширения (см. Dom::AlgebraicExtension).

Если вход f арифметическое выражение, которое не является номером, все происходящие числа с плавающей запятой заменяются приближениями непрерывной дроби. Результат чувствителен к переменной окружения DIGITS, смотрите numeric::rationalize для деталей.

Примеры

Пример 1

Учитывать полиномиальный x 3 + x, введите:

g := factor(x^3+x)

Обычно, выражения учтены по звонку целых чисел и факторам с неинтегральными коэффициентами, такими как x - I в примере выше, не рассматриваются.

Можно получить доступ к внутреннему представлению этой факторизации с оператором показателя преломления обыкновенной волны:

g[1], g[2]

Внутреннее представление g, аналогичный описанному выше, дан следующей командой:

coerce(g, DOM_LIST)

Результатом факторизации является объект доменного типа Factored:

domtype(g)

Часть функциональности этой области описана в дальнейшем.

Можно извлечь факторы и экспоненты факторизации также следующим образом:

Factored::factors(g), Factored::exponents(g)

Можно попросить тип факторизации:

Factored::getType(g)

Этот выход означает, что весь i f неприводим. Другими возможными типами является "squarefree" (см. polylib::sqrfree) или "unknown".

Можно умножить учтенные объекты, который сохраняет учтенную форму:

g2 := factor(x^2 + 2*x + 1)

g * g2

Важно отметить, что можно применить (почти) любую функцию, работающую с арифметическими выражениями к объекту типа Factored. Однако результат затем обычно не имеет доменного типа Factored:

expand(g);
domtype(%)

Для подробного описания этих объектов обратитесь к странице справки доменного Factored.

Пример 2

factor разделяет целое число в продукт простых множителей:

factor(8)

Для рациональных чисел учтены и числитель и знаменатель:

factor(10/33)

Обратите внимание на то, что, напротив, постоянные полиномы не учтены:

factor(poly(8, [x]))

Пример 3

Факторы знаменателя обозначаются отрицательной кратностью:

factor((z^2 - 1)/z^2)

Factored::factors(%), Factored::exponents(%)

Пример 4

Если некоторые коэффициенты являются иррациональными, но алгебраическими, факторизация происходит по самому маленькому полевому расширению rationals, который содержит всех их. Следовательно, x^2+1 рассматривается неприводимым в то время как его I- сгиб рассматривается приводимым:

factor(x^2 + 1), factor(I*x^2 + I)

MuPAD автоматически не учитывает по полю алгебраических чисел; только к коэффициентам входа примыкают к rationals:

factor(sqrt(2)*x^4 - sqrt(2)*x^2 - sqrt(2)*2)

factor(I*x^4 - I*x^2 - I*2)

factor(sqrt(2)*I*x^4 - sqrt(2)*I*x^2 - sqrt(2)*I*2)

Пример 5

С опцией Примыкают, к дополнительным элементам можно примкнуть к подразумеваемому содействующему звонку:

factor(x^2 + 1, Adjoin = [I])

factor( x^2-2, Adjoin = {sqrt(2)} )

С опцией Full, может быть вычислена полная факторизация в линейные факторы.

factor( x^2-2, Full)

Если аргумент R_ или C_ дан, факторизация сделана по вещественным или комплексным числам с помощью числовых вычислений:

factor( x^2-2, R_ )

factor(x^2 + 1, C_)

Пример 6

Трансцендентальные объекты обработаны как indeterminates:

delete x:
factor(7*(cos(x)^2 - 1)*sin(1)^3)

Factored::factors(%), Factored::exponents(%)

Пример 7

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

factor(x + 2*sqrt(x) + 1)

Во многих случаях, однако, алгебраическая зависимость не распознана:

factor(x^2 + (2^y*3^y + 6^y)* x + (6^y)^2)

Пример 8

factor числа с плавающей запятой замен приближениями непрерывной дроби, учитывает получившийся полином, и наконец применяет float к коэффициентам факторов:

factor(x^2 + 2.0*x - 8.0)

Пример 9

factor с опцией Full может использовать RootOf символически представлять корни полинома:

factor(x^5 + x^2 + 1, Full)

Пример 10

Полиномы с коэффициентом звонят кроме Expr учтены по их содействующему звонку. Мы учитываем следующий полином по модулю 17:

R := Dom::IntegerMod(17): f:= poly(x^3 + x + 1, R):
factor(f)

Для каждого p, выражение IntMod(p) может использоваться вместо Dom::IntegerMod(p):

R := IntMod(17): f:= poly(x^3 + x + 1, R):
factor(f)

Пример 11

Более комплексные области позволены, когда коэффициент звонит, если они могут быть получены из рациональных чисел или из конечного поля выполненной с помощью итераций конструкцией алгебраических расширений, полиномиальных звонков и полей частей. В следующем примере мы учитываем одномерный полиномиальный u 2 - x 3 в u по содействующему полю:

Q := Dom::Rational:
Qx := Dom::Fraction(Dom::DistributedPolynomial([x], Q)):
F := Dom::AlgebraicExtension(Qx, poly(z^2 - x, [z])):
f := poly(u^2 - x^3, [u], F)

factor(f)

Параметры

f

Полином или арифметическое выражение

F

R_ или C_

Опции

MaxDegree

Опция, заданная как MaxDegree = n

Только алгебраические числа максимальной степени n будет примкнут к рациональным числам. Если не заданный, ко всем коэффициентам до степени 2 примыкают. n должно быть положительное целое число.

Adjoin

Опция, заданная как Adjoin = adjoin

В дополнение к коэффициентам f, элементы adjoin примкнуты к рациональным числам. Элементы алгебраической степени, больше, чем значение опции MaxDegree не примкнуты. adjoin должен быть набор или список.

Domain

Опция, заданная как Domain = F

Вычислите числовую факторизацию или, соответственно.

Full

Вычислите полную факторизацию f в линейные факторы. Эта опция не оказывает влияния на многомерные полиномы.

Возвращаемые значения

Объект доменного типа Factored.

Перегруженный

f

Алгоритмы

Алгоритмы факторинга собраны в отдельной области библиотеки faclib; не должно быть необходимо вызвать эти стандартные программы непосредственно.

Реализованные алгоритмы включают Cantor-Zassenhaus (по конечным полям) и Hensel, поднимающийся (по рациональным числам и в многомерном случае).