pdivide

Псевдоделение полиномов

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

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

Синтаксис

pdivide(p, q, <[x]>, <order>, options)
pdivide(p, q, <[x1, x2, …]>, <order>, options)
pdivide(p, q1, q2, …, <[x1, x2, …]>, <order>, options)

Описание

pdivide(p, q) выполняет псевдоделение полиномов или многочленных выражений p и q. Функция возвращает факторный b, псевдочастное s и псевдоостаток r, такой что b*p = s*q + r.

pdivide(p, q1, q2, q3, ..., qN) выполняет псевдоделение полинома или многочленного выражения p полиномами или многочленными выражениями q1, q2, q3, ..., qN.

pdivide(p, q) возвращает последовательность b, s, r, где b является элементом содействующего звонка полиномов. Псевдочастное s и псевдоостаток r удовлетворяет эти условия: b*p = s*q + r, degree(p) = degree(s) + degree(q) и degree(r) < degree(q).

По умолчанию pdivide определяет факторный b как b = lcoeff (q)^( degree (p) - degree(q) + 1). AnyFactor позволяет pdivide использовать другие значения b. Смотрите Пример 2.

pdivide работает с полиномами или многочленными выражениями.

Полиномы должны иметь тот же тип, означая, что их переменные и содействующие звонки должны быть идентичными.

Когда вы вызываете pdivide для многочленных выражений, MuPAD® внутренне преобразовывает эти выражения в полиномы. Смотрите, что poly функционирует. Если выражения не могут быть преобразованы в полиномы, pdivide возвращает FAIL. Смотрите Пример 3.

Если вы вызываете pdivide для полиномов, он возвращает полиномы. Если вы вызываете pdivide для многочленных выражений, он возвращает многочленные выражения.

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

pdivide (p, q1, q2, q3, ..., qN) возвращает факторный b, псевдочастные s1, s2, ..., sN и псевдоостаток r, такой что b*p = s1*q1 + s2*q2 + ... + sN*qN + r.

При выполнении псевдоделения полинома одним или несколькими полиномами можно выбрать термин упорядоченное расположение. Упорядоченное расположение принимает эти значения:

  • LexOrder устанавливает лексикографическое упорядоченное расположение.

  • DegreeOrder устанавливает общее упорядоченное расположение степени. При использовании этого упорядоченного расположения MuPAD сортирует условия полинома согласно общей степени каждого термина (сумма экспонент переменных).

  • DegInvLexOrder устанавливает общую инверсию степени лексикографическое упорядоченное расположение. При использовании этого упорядоченного расположения MuPAD сортирует условия полинома согласно общей степени каждого термина (сумма экспонент переменных). Если несколько условий имеют равные общие степени, MuPAD сортирует их использующий обратное лексикографическое упорядоченное расположение.

  • Ваше пользовательское упорядоченное расположение термина типа Dom::MonomOrdering.

Смотрите пример 5.

В отличие от divide, pdivide не требует, чтобы содействующий звонок полиномов реализовал слот "_divide", потому что коэффициенты не разделены на этот алгоритм. Смотрите Пример 6.

Примеры

Пример 1

Выполните псевдоделение этих двух полиномов:

p:= poly(x^3 + x + 1):  q:= poly(3*x^2 + x + 1):
[b, s, r] := [pdivide(p, q)]

Результат удовлетворяет этому уравнению:

p*b = s*q + r

Теперь вычислите псевдочастное и псевдоостаток отдельно:

pdivide(p, q, Quo), pdivide(p, q, Rem)

delete p, q, b, s, r:

Пример 2

По умолчанию pdivide выполняет псевдоделение p q с факторным b, определенным формулой b = lcoeff (q)^( degree (p) - degree(q) + 1):

p := 4*x^2 + 3: q := 2*x + 2:
b = lcoeff(q)^(degree(p) - degree(q) + 1);
pdivide(p, q)

Чтобы позволить pdivide изменить значение b, используйте AnyFactor:

pdivide(4*x^2 + 3, 2*x + 2, AnyFactor)

Пример 3

Если выражение не может быть преобразовано в полином, pdivide возвращает FAIL:

pdivide(1/x, x)

Пример 4

При выполнении псевдоделения многомерных полиномов можно задать список переменных. Функция pdivide принимает, что все другие переменные являются символьными параметрами. Например, разделите следующие два многочленных выражения, указывающие, что x, y и a являются переменными. Получившееся псевдочастное 0, и псевдоостаток равняется дивиденду p:

p := x^3 + x + y:
q := a*x^2 + x + 1:
pdivide(p, q, [x, y, a])

Разделите эти выражения, указывающие, что x и y являются переменными. MuPAD принимает, что a является символьным параметром. Здесь, и псевдочастное и псевдоостаток не равны 0:

pdivide(p, q, [x, y])

Теперь разделите те же многочленные выражения, указывающие, что только y является переменной. MuPAD принимает, что x и a являются символьными параметрами. Здесь псевдоостаток 0:

pdivide(p, q, [y])

По умолчанию функция pdivide обрабатывает многочленные выражения с несколькими переменными как многомерные многочленные выражения. Функция не принимает, что любая из переменных является символьными параметрами:

pdivide(x^3 + x + y, a*x^2 + x + 1)

Пример 5

pdivide позволяет вам выполнить псевдоделение полинома (или многочленное выражение) несколькими полиномами (или многочленные выражения):

p := 4*x^4 + a*x^2*y^4:
q1 := x^3 - a:
q2 := x + y:
[b, s1, s2, r] := [pdivide(p, q1, q2)]

Результат удовлетворяет условие b*p = s1*q1 + s2*q2 + r:

testeq(b*p, s1*q1 + s2*q2 + r)

При делении полинома на несколько полиномов можно выбрать термин упорядоченное расположение:

pdivide(p, q1, q2, LexOrder)

pdivide(p, q1, q2, DegreeOrder)

Пример 6

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

pdivide(poly(x^3 + x + 1, IntMod(8)), 
        poly(4*x^3 + x + 1, IntMod(8)))

Обратите внимание на то, что pdivide не требует делимости коэффициентов.

Параметры

p, q

Одномерные или многомерные полиномы или многочленные выражения.

p, q1, q2, …

Одномерные или многомерные полиномы или многочленные выражения.

x

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

x1, x2, …

indeterminates полинома, которые обычно являются идентификаторами или индексированными идентификаторами. pdivide обрабатывает многомерные выражения как многомерные полиномы в этих indeterminates.

order

Термин, заказывающий при выполнении псевдоделения одного многомерного полинома одним или несколькими многомерными полиномами: LexOrder, DegreeOrder, DegInvLexOrder или пользовательское упорядоченное расположение термина типа Dom::MonomOrdering. Значением по умолчанию является лексикографическое упорядоченное расположение LexOrder.

Опции

Quo, Rem

Возвратите только псевдочастное или псевдоостаток. По умолчанию pdivide возвращает последовательность, содержащую факторный b, псевдочастное s (или псевдочастные s1, s2, ...), и псевдоостаток r. Смотрите Пример 1.

AnyFactor

Позвольте гибкость для факторного b. Без этой опции, b = lcoeff (q)^( degree (p) - degree(q) + 1).

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

Полином, или многочленное выражение, или последовательность, содержащая элемент содействующего звонка входных полиномов и полиномов (или многочленные выражения), или значение FAIL.

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

f, g, p, q

Смотрите также

Функции MuPAD