powermod
Вычислите модульную степень номера или полинома
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
powermod(b
, e
, m
)
powermod(b, e, m)
вычисляет b mod e m.
Если b
и m
являются числами, модульная степень b mod e, m может также быть вычислен прямым вызовом b^e mod m
. Однако powermod(b, e, m)
избегает издержек вычисления промежуточного результата b e и вычисляет модульную степень намного более эффективно.
Если b
является рациональным числом, то модульная инверсия знаменателя вычисляется и умножается с числителем.
Если модуль, m
является целым числом, то основной b
должен или быть номером, многочленным выражением или полиномом, который конвертируем к IntMod(m)
- полином.
Если модуль, m
является многочленным выражением, то основной b
должен или быть номером, многочленным выражением или полиномом по содействующему звонку выражений MuPAD®.
Если модуль, m
является полиномом доменного типа DOM_POLY
, то основной b
должен или быть номером или полиномом того же типа как m
или многочленное выражение, которое может быть преобразовано в полином того же типа как m
.
Обратите внимание на то, что системная функция mod
, отвечающий за арифметику в остаточных классах, может быть изменена пользователем; смотрите страницу справки mod
. Функциональный powermod
реагирует соответственно. Смотрите Пример 5.
Внутренне, полиномы разделены на функциональный divide
.
Мы вычисляем 3^(123456) mod 7
:
powermod(3, 123456, 7)
Если основа является рациональным числом, модульная инверсия знаменателя вычисляется и умножается с числителем:
powermod(3/5, 1234567, 7)
Коэффициенты следующего многочленного выражения вычисляются по модулю 7:
powermod(x^2 + 7*x - 3, 10, 7)
Мощность следующего многочленного выражения уменьшена по модулю полиномиальный x 2 + 1:
powermod(x^2 + 7*x - 3, 10, x^2 + 1)
Тип возвращаемого значения совпадает с типом основы: полином возвращен, если основа является полиномом:
powermod(poly(x^2 + 7*x - 3), 2, x^2 + 1), powermod(poly(x^2 + 7*x - 3), 2, poly(x^2 + 1))
Если основа является многочленным выражением, powermod
возвращает многочленное выражение:
powermod(x^2 + 7*x - 3, 2, x^2 + 1), powermod(x^2 + 7*x - 3, 2, poly(x^2 + 1))
Следующее переопределение _mod
переключается на симметричное представление модульных чисел:
R := Dom::IntegerMod(17): _mod := mods: powermod(poly(2*x^2, R), 3, poly(3*x + 1, R))
Следующая команда восстанавливает представление по умолчанию:
_mod := modp: powermod(poly(2*x^2, R), 3, poly(3*x + 1, R))
unalias(R):
|
Основа: целое число, рациональное число или полином типа |
|
Степень: неотрицательное целое число |
|
Модуль: целое число (по крайней мере 2) или полином типа |
В зависимости от типа b
возвращаемое значение является целым числом, полиномом или многочленным выражением. FAIL
возвращен, если выражение не может быть преобразовано в полином.
b