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