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