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
f
не является 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
для деталей.
Учитывать полиномиальный 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
.
factor
разделяет целое число в продукт простых множителей:
factor(8)
Для рациональных чисел учтены и числитель и знаменатель:
factor(10/33)
Обратите внимание на то, что, напротив, постоянные полиномы не учтены:
factor(poly(8, [x]))
Факторы знаменателя обозначаются отрицательной кратностью:
factor((z^2 - 1)/z^2)
Factored::factors(%), Factored::exponents(%)
Если некоторые коэффициенты являются иррациональными, но алгебраическими, факторизация происходит по самому маленькому полевому расширению 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)
С опцией Примыкают, к дополнительным элементам можно примкнуть к подразумеваемому содействующему звонку:
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_)
Трансцендентальные объекты обработаны как indeterminates:
delete x: factor(7*(cos(x)^2 - 1)*sin(1)^3)
Factored::factors(%), Factored::exponents(%)
factor
расценивает трансцендентальные подвыражения как алгебраически независимый друг от друга. Иногда, зависимость распознана:
factor(x + 2*sqrt(x) + 1)
Во многих случаях, однако, алгебраическая зависимость не распознана:
factor(x^2 + (2^y*3^y + 6^y)* x + (6^y)^2)
factor
заменяет числа с плавающей запятой приближениями непрерывной дроби, учитывает получившийся полином, и наконец применяет float
к коэффициентам факторов:
factor(x^2 + 2.0*x - 8.0)
factor
с опцией Full
может использовать RootOf
, чтобы символически представлять корни полинома:
factor(x^5 + x^2 + 1, Full)
Полиномы с содействующим звонком кроме 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)
Более комплексные области позволены, когда коэффициент звонит, если они могут быть получены из рациональных чисел или из конечного поля выполненной с помощью итераций конструкцией алгебраических расширений, полиномиальных звонков и полей частей. В следующем примере мы учитываем одномерный полиномиальный 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)
| |
|
R_ или C_ |
|
Опция, заданная как Только к алгебраическим числам максимальной степени |
|
Опция, заданная как В дополнение к коэффициентам |
|
Опция, заданная как Вычислите числовую факторизацию или, соответственно. |
|
Вычислите полную факторизацию |
Объект доменного типа Factored
.
f
Алгоритмы факторинга собраны в отдельной области библиотеки faclib
; не должно быть необходимо вызвать эти стандартные программы непосредственно.
Реализованные алгоритмы включают Cantor-Zassenhaus (по конечным полям) и Hensel, поднимающийся (по рациональным числам и в многомерном случае).
Factored
| collect
| content
| denom
| div
| divide
| expand
| gcd
| icontent
| ifactor
| igcd
| ilcm
| indets
| irreducible
| isprime
| lcm
| normal
| numer
| partfrac
| polylib::decompose
| polylib::divisors
| polylib::primpart
| polylib::sqrfree
| rationalize
| simplify