Factored

Объекты сохранены в учтенной форме

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

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

Синтаксис

Factored(list, <type>, <ring>)
Factored(f, <type>, <ring>)

Описание

Factored область объектов, сохраненных в учтенной форме, таких как главная факторизация целых чисел, факторизация без квадратов полиномов или факторизация полиномов в неприводимых факторах.

Аргумент list должен быть список нечетной длины и формы [u, f1, e1, f2, e2, ..., fr, er], где записи u и f i являются элементами доменного ring, или может быть преобразован в такие элементы. i e должен быть целыми числами. Здесь, i лежит в диапазоне от 1 до r.

Смотрите раздел “Operands” ниже для значения записей того списка.

О сообщении об ошибке сообщают, если одна из записей списка имеет неправильный тип.

Арифметическое выражение f данный, когда первый аргумент совпадает с предоставлением списка [ring::one, f, 1].

Смотрите раздел “Operands” ниже для значения записей того списка.

f должен быть элемент доменного ring, или должно быть конвертируемо в такой элемент, в противном случае сообщение об ошибке было бы дано.

Аргумент type указывает на то, что известно о факторизации. В настоящее время следующие типы известны:

  • "unknown" – ничто не известно о факторизации.

  • "irreducible"i f неприводим по доменному ring.

  • "squarefree"i f без квадратов по доменному ring.

Если этот аргумент отсутствует, то тип созданного учтенного объекта установлен в "unknown".

Тип факторизации известен любому элементу Factored. Используйте методы "getType" и "setType" (см. ниже) считать и установить тип факторизации данного учтенного объекта.

Аргумент ring звонок факторизации. Это должна быть интегральная область, т.е. область категории Cat::IntegralDomain.

Если этот аргумент отсутствует, то доменный Dom::ExpressionField() используется.

Звонок факторизации известен любому элементу Factored. Используйте методы "getRing" и "setRing" (см. ниже) считать и установить звонок факторизации данного учтенного объекта.

Можно использовать оператор индекса [ ] извлекать факторы элемента f из доменного Factored. Например, для f = u f1e1f2e2  …, у вас есть f   [1] = u, f   [2] = f 1e1, f   [3] = f 2e2 и т.д.

Можно также использовать методы "factors" и "exponents" (см. ниже) получить доступ к операндам, т.е. вызову Factored::factors(f) возвращает список факторов f i и Factored::exponents(g) возвращает список экспонент e i (1 ≤ ir).

Системные функции ifactorфактор и polylib::sqrfree главное приложение этой области, они возвращают свой результат в форме таких учтенных объектов (см. их страницы справки для получения информации о типе и звонке факторизации).

Не может быть никакой потребности явным образом создать учтенные объекты, но работать с результатами упомянутых системных функций.

Обратите внимание на то, что элемент Factored распечатан как выражение и ведет себя как этот. Как пример, результат f := factor(x^2 + 2*x + 1) элемент Factored и распечатанный как (x + 1)^2. Вызов type(f) возвращает "_power" как тип выражения f.

Для элемента f из Factored, вызов Factored::convert(f, DOM_LIST) дает список всех операндов f.

Примеры

Пример 1

Следующее вычисляет главную факторизацию целого числа 20:

f := ifactor(20)

Результатом является элемент доменного Factored:

domtype(f)

который состоит из следующих пяти операндов:

op(f)

Они представляют целое число 20 в следующей форме: 20 = 1 22 5. Факторы являются простыми числами и могут быть извлечены через Factor::factors:

Factored::factors(f)

ifactor хранивший информация, что звонок факторизации является звонком целых чисел (представленный доменным Dom::Integer), и что факторы f являются главными (и поэтому неприводимыми, потому что является интегральной областью):

Factored::getRing(f), Factored::getType(f)

Мы можем преобразовать такой объект в различные формы, такой как в список его операндов:

Factored::convert_to(f, DOM_LIST)

или в неоцененное выражение, сохраняя учтенную форму:

Factored::convert_to(f, DOM_EXPR)

или назад в целое число:

Factored::convert_to(f, Dom::Integer)

Можно также использовать системную функцию coerce здесь, который оказывает то же влияние.

Пример 2

Мы вычисляем факторизацию целых чисел 108 и 512:

n1 := ifactor(108); n2 := ifactor(512)

Умножение этих двух целых чисел дает главную факторизацию 55 296 = 108 512:

n1*n2

Обратите внимание на то, что большинство операций на таких объектах приводит к неучтенной форме, такой как добавление этих двух целых чисел:

n1 + n2

Можно применить функциональный ifactor к результату, если вы интересуетесь его главной факторизацией:

ifactor(%)

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

Re(n1)

Пример 3

Вторая системная функция, которая имеет дело с элементами Factored, factor, который вычисляет все неприводимые факторы полинома.

Например, если мы задаем следующий полином 101:

p := poly(x^12 + x + 1, [x], Dom::IntegerMod(101)):

и вычислите его факторизацию в неприводимые факторы, мы добираемся:

f := factor(p)

Если мы умножаем учтенный объект с элементом, который может быть преобразован в элемент звонка факторизации, то мы получаем новый учтенный объект, который затем имеет тип факторизации "unknown":

x*f

Factored::getType(%)

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

expand(f)

Пример 4

Третья системная функция, которые возвращают элементы Factored polylib::sqrfree, который вычисляет факторизацию без квадратов полиномов. Например:

f := polylib::sqrfree(x^2 + 2*x + 1)

Типом факторизации, конечно, является "squarefree":

Factored::getType(f)

Параметры

list

Список нечетной длины

f

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

type

Строка (значение по умолчанию: "unknown")

ring

Область категории Cat::IntegralDomain (значение по умолчанию: Dom::ExpressionField())

Вызовы функции

При вызове учтенного объекта, когда функция дает к самому объекту, независимо от аргументов. Аргументы не оценены.

Операции

Можно применить (почти) каждую функцию к учтенным объектам, функции, которые в основном ожидают арифметические выражения как их вход.

Например, можно добавить или умножить те объекты или применить функции, такие как expand и diff им. Но результат такой операции затем не имеет обычно больше доменного Factored, когда учтенная форма могла быть потеряна из-за операции (см. примеры ниже).

Вызовите expr(f) преобразовывать учтенный объект f в арифметическое выражение (как элемент области ядра).

Вызов coerce(f, DOM_LIST) возвращает список операндов учтенного объекта f (см. метод "convert_to" ниже).

Операнды

Элемент f Factored состоит из r + 1 операнд u, f 1, e 1, f 2, e 2, …, f r, e r, такой что f = u f1e1f2e2  …  f r e r.

Первый операнд u и факторы f i является элементами доменного ring. Экспоненты e i являются целыми числами.

Методы

развернуть все

Математические методы

_mult(f, g, …)

Предположим тот g элемент доменного ring (или может быть преобразован в такой элемент).

Если g модуль ring или фактор f, затем результатом является учтенный объект того же типа факторизации как f. В противном случае результатом является элемент Factored с факторизацией вводят "unknown".

Если оба f и g учтены объекты с факторизацией вводят "irreducible", затем результатом является снова учтенный объект этого типа, т.е. результат находится все еще в учтенной форме.

В противном случае, учтенная форма f потерян, и результатом этого метода является элемент ring.

Этот метод перегружает функциональный _mult для учтенных объектов, т.е. можно использовать его в форме f*g*..., или в функциональном обозначении: _mult(f, g, ...).

_power(f, n)

Если n положительное целое число и f учтенный объект с факторизацией вводит "irreducible" или "squarefree", затем результатом является все еще учтенный объект этого типа.

В противном случае, учтенная форма f потерян, и результатом этого метода является элемент ring.

Этот метод перегружает функциональный _power для учтенных объектов, т.е. можно использовать его в форме f^n, или в функциональном обозначении: _power(f, n).

expand(f)

exponents(f)

factor(f)

Если f уже имеет тип факторизации "irreducible", затем этот метод только возвращает f.

В противном случае этот метод преобразует f в элемент доменного ring и вызывает метод "factor" из ring.

Этот метод возвращает учтенный объект доменного Factored с факторизацией вводят "irreducible", если факторизация f может быть вычислен (в противном случае, FAIL возвращен).

Этот метод перегружает функциональный factor для учтенных объектов, т.е. можно использовать его в форме factor(f).

factors(f)

irreducible(f)

Тест на неприводимом тривиален, если f имеет тип факторизации "irreducible".

В противном случае этот метод преобразует f в элемент ring и вызывает метод "irreducible" из ring. Значение FAIL возвращен, если доменный ring не может протестировать если f неприводимо.

iszero(f)

Этот метод перегружает функциональный iszero для учтенных объектов, т.е. можно использовать его в форме iszero(f).

sqrfree(f)

Если f уже имеет тип факторизации "squarefree", затем этот метод только возвращает f.

В противном случае этот метод преобразует f в элемент доменного ring и вызывает метод "squarefree" из ring.

Этот метод возвращает учтенный объект доменного Factored с факторизацией вводят "squarefree", если факторизация без квадратов f может быть вычислен (в противном случае, FAIL возвращен).

Этот метод перегружает функциональный polylib::sqrfree для учтенных объектов, т.е. можно использовать его в форме polylib::sqrfree(f).

Методы доступа

_index(f, i)

Отвечает сообщением об ошибке, если i больше количества условий f.

Этот метод перегружает оператор индекса [ ] для учтенных объектов, т.е. можно использовать его в форме f[i].

getRing(f)

getType(f)

has(f, x, …)

Этот метод перегружает функциональный has для учтенных объектов, т.е. можно использовать его в форме has(f, x, ...).

map(f, func, …)

Смотрите системную функцию map для деталей.

Этот метод перегружает функциональный map для учтенных объектов, т.е. можно использовать его в форме map(f, func, ...).

nops(f)

Этот метод перегружает функциональный nops для учтенных объектов, т.е. можно использовать его в форме nops(f).

op(f, i)

Возвращает FAIL, если i больше количества операндов f.

Этот метод перегружает функциональный op для учтенных объектов, т.е. можно использовать его в форме op(f, i).

select(f, func, …)

Этот метод перегружает функциональный select для учтенных объектов, т.е. можно использовать его в форме select(f, func, ...).

set_index(f, i, x)

Отвечает сообщением об ошибке, если i больше количества условий f.

Примечание

Убедитесь тот x любой - элемент доменного ring, или целое число.

Этот метод перегружает оператор индекса [ ] для учтенных объектов, т.е. можно использовать его в форме f[i] := x.

setRing(f, ring)

Примечание

Используйте этот метод с осторожностью! Убедитесь что факторизация f все еще допустимо по новому звонку, и что операнды f имейте правильный доменный тип.

ring должна быть область категории Cat::IntegralDomain, который не проверяется этим методом.

setType(f, type)

Примечание

Используйте этот метод с осторожностью! Убедитесь, что тип факторизации соответствует факторизации f.

subs(f, x = a, …)

Этот метод перегружает функциональный subs для учтенных объектов, т.е. можно использовать его в форме subs(f, x = a, ...).

subsop(f, i = a, …)

Этот метод перегружает функциональный subsop для учтенных объектов, т.е. можно использовать его в форме subsop(f, i = a, ...).

type(f)

Методы преобразования

convert(x)

Если преобразование перестало работать, то FAIL возвращен.

x май любой быть списком формы [u, f1, e1, ..., fr, er] из нечетной длины (где u, f1, ..., fr имеют доменный тип ring, или может быть преобразован в такие элементы и e1, ..., er целые числа), или элемент, который может быть преобразован в доменный ring. Последний случай соответствует списку [ring::one,x,1].

convert_to(f, T)

Если преобразование перестало работать, то FAIL возвращен.

Если T доменный DOM_LIST, затем список операндов f возвращен.

Если T доменный DOM_EXPR, затем неоцененное выражение u*f1^e1*f2^e2*...*fr^er возвращен, где u, f1, e1, ... операнды f.

В противном случае, метод "convert" из доменного T называется, чтобы преобразовать f в элемент доменного T (который мог возвратить FAIL).

Используйте функциональный expr преобразовывать f в объект области ядра (см. ниже).

create(list)

create(x)

Этот метод создает новый учтенный объект с операндами ring::one, x, 1.

expr(f)

Примечание

Обратите внимание на то, что учтенная форма f может быть потерян из-за этого преобразования.

expr2text(f)

testtype(f, T)

Этот метод называется от системной функции testtype.

Технические методы

_concat(f, g)

f и g должен иметь тот же тип факторизации и звонок факторизации, в противном случае сообщение об ошибке дано.

maprec(f, x, …)

Первый f преобразован в неоцененное выражение u*f1^e1*f2^e2*...*fr^er, где u, f1, e1, ... операнды f. Затем функциональный misc::maprec вызван этим выражением как его первый параметр.

Обратите внимание на то, что результат этого метода не более длинен объект Factored!

print(f)

unapply(f, <x>)

Этот метод перегружает функциональный fp::unapply для учтенных объектов, т.е. можно использовать его в форме fp::unapply(f). Смотрите fp::unapply для деталей.