exponenta event banner

gfdeconv

Разделить многочлены на поле Галуа

Описание

[q,r] = gfdeconv(b,a) возвращает частное q и остальное r в качестве векторов строк, которые задают полиномиальные коэффициенты GF (2) в порядке возрастающих степеней. Возвращенные векторы являются результатом деленияb около a. a, b, и q находятся в GF (2).

Дополнительные сведения см. в разделе Советы.

пример

[q,r] = gfdeconv(b,a,p) делит два GF (p) многочлены, где p - простое число. b, a, и q находятся в том же поле Галуа. b, a, q, и r - многочлены с коэффициентами в порядке возрастающих степеней. Каждый коэффициент находится в диапазоне [0, p–1].

[q,r] = gfdeconv(b,a,field) делит два полинома GF (pm), гдеfield - матрица, содержащая m-кортеж всех элементов в GF (pm). p - простое число, m - положительное целое число .b, a, и q находятся в том же поле Галуа.

В этом синтаксисе каждый коэффициент задается в экспоненциальном формате, а именно [-Inf, 0, 1, 2,...]. Элементы в экспоненциальном формате представляют field элементы [0, 1, α, α2,...] относительно некоторого примитивного элемента α GF (pm).

Примеры

свернуть все

Три раза делите x + x3 + x4 на 1 + x в поле Галуа GF (3). Представить многочлены как векторы строк, символьные векторы и строки.

p = 3;

Представить многочлены с помощью векторов строк и разделить их в GF (3).

b = [0 1 0 1 1];
a = [1 1];
[q_rv,r_rv] = gfdeconv(b,a,p)
q_rv = 1×4

     1     0     0     1

r_rv = 2

Чтобы подтвердить вывод, сравните исходные полиномы поля Галуа с результатом добавления остатка к произведению частного и делителя.

bnew = gfadd(gfconv(q_rv,a,p),r_rv,p);
isequal(b,bnew)
ans = logical
   1

Представить многочлены с помощью символьных векторов и разделить их в GF (3).

b = 'x + x^3 + x^4';
a = '1 + x';
[q_cv,r_cv] = gfdeconv(b,a,p)
q_cv = 1×4

     1     0     0     1

r_cv = 2

Представить многочлены с помощью строк и разделить их в GF (3).

b = "x + x^3 + x^4";
a = "1 + x";
[q_s,r_s] = gfdeconv(b,a,p)
q_s = 1×4

     1     0     0     1

r_s = 2

Используйте gfpretty для отображения результата без остатка в полиномиальной форме.

gfpretty(q_s)
 
                                         3
                                    1 + X 

В поле Галуа GF (3) выведите многочлены вида xk-1 для k в диапазоне [2, 8], которые равномерно делятся на 1 + x2. Неприводимый полином над GF (p) степени, по меньшей мере, 2 является примитивным тогда и только тогда, когда он не делит -1 + xk равномерно для любого положительного целого k, меньшего, чем pm-1. Дополнительные сведения см. в разделеgfprimck функция.

Неприводимость 1 + x2 над GF (3) вместе с выводимыми многочленами указывает на то, что 1 + x2 не является примитивным для GF (32).

p = 3; m = 2;
a = [1 0 1]; % 1+x^2
for ii = 2:p^m-1
   b = gfrepcov(ii); % x^ii
   b(1) = p-1; % -1+x^ii
   [quot,remd] = gfdeconv(b,a,p);
   % Display -1+x^ii if a divides it evenly.
   if remd==0
      multiple{ii}=b;
      gfpretty(b)
   end
end
 
                                         4
                                    2 + X 
 
                                         8
                                    2 + X 

Входные аргументы

свернуть все

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

a и b оба должны быть полиномами GF (p) или полиномами GF (pm), где p - простое. Значение p указано, когда включено,2 если опущено или подразумевается, когда field указывается.

Пример: '1 + x' является многочленом в GF (24), выраженный в виде символьного вектора.

Типы данных: double | char | string

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

a и b оба должны быть полиномами GF (p) или полиномами GF (pm), где p - простое. Значение p указано, когда включено,2 если опущено или подразумевается, когда field указывается.

Пример: [1 2 3 4] является многочленом 1 + 2x + 3x2+4x3 в GF (5), выраженном в виде вектора строки.

Типы данных: double | char | string

Простое число, указанное как простое число.

Типы данных: double

m-кортеж всех элементов в GF (pm), указанный как матрица .field - матрица, перечисляющая все элементы GF (pm), расположенные относительно одного и того же примитивного элемента. Для генерации m-кортежа всех элементов в GF (pm) используйте

field =gftuple([-1:p^m-2]',m,p)
Коэффициенты, заданные в экспоненциальном формате, представляют элементы поля в GF (pm). Объяснение этих форматов см. в разделе Представление элементов полей галуа.

Типы данных: double

Выходные аргументы

свернуть все

Полином поля Галуа, возвращаемый как вектор строки коэффициентов многочлена в порядке возрастающих степеней. q - частное от деления b около a и находится в том же поле Галуа, что и входные многочлены.

Остаток деления, возвращаемый как скалярный или вектор строки полиномиальных коэффициентов в порядке возрастающих степеней. r - остаток, полученный в результате деления b около a.

Совет

  • Функция gfdeconv выполняет вычисления в GF (pm), где p - простое число, а m - положительное целое число. Он делит многочлены на поле Галуа. Для работы в GF (2m) используйте deconv функции gf объект с массивами Galois. Дополнительные сведения см. в разделе Умножение и деление многочленов.

  • Для разделения элементов поля Галуа можно также использовать gfdiv вместо gfdeconv. Алгебраически деление многочленов на поле Галуа эквивалентно распаковке векторов, содержащих коэффициенты многочленов. Эта операция деконволюции использует арифметику над тем же полем Галуа.

Представлен до R2006a