<< gf_check_field Campos gf_degree >>

Campos de Galois >> Campos de Galois > Campos > gf_create_field

gf_create_field

Crea el campo finito GF(p^n) a partir de un polinomio primitivo

Secuencia de llamado

F = gf_create_field(p, n)
F = gf_create_field(p, n, f)

Parámetros

p

Número primo: la característica del campo, como máximo 2^20.

n

Grado del campo sobre GF(p): un entero de 1 a 20, con p^n ≤ 2^20.

f

Polinomio primitivo de grado n sobre GF(p): una fila de n + 1 coeficientes enteros en 0 .. p-1, empezando por el término constante, con el último coeficiente no nulo. No necesita ser mónico. Si se omite, se usa el polinomio que devuelve gf_default_primitive_polynomial.

F

El campo: list(p, n, f, elements).

  • F(1) es p y F(2) es n.

  • F(3) es el polinomio primitivo (n + 1 coeficientes, empezando por el término constante).

  • F(4) es la tabla de todos los elementos. Para n = 1 es la fila 0:p-1. Para n > 1 es una matriz de p^n × n: la fila 1 es el elemento cero y la fila k + 2 es α^k, siendo α una raíz de f.

Descripción

gf_create_field construye el campo de orden p^n que usan las demás funciones del toolbox.

El polinomio f debe ser primitivo, no solo irreducible: sus raíces deben generar el grupo multiplicativo del campo, de modo que todo elemento no nulo sea una potencia de α. gf_is_primitive_polynomial lo comprueba, y gf_primitive_polynomials lista todos los polinomios primitivos mónicos de un grado dado. Si f no es primitivo se genera un error.

Para n = 1, f tiene grado 1 y su raíz -f(1)/f(2) es una raíz primitiva módulo p.

La tabla de elementos se calcula una sola vez, al crear el campo. Tiene p^n filas de n números reales (double).

Ejemplos

// GF(16) con el polinomio primitivo por defecto 1 + x + x^4
F = gf_create_field(2, 4);
F(3)              // [1 1 0 0 1]
F(4)(1:6, :)      // 0, 1, alpha, alpha^2, alpha^3, alpha^4 = 1 + alpha

// El mismo campo construido con otro polinomio primitivo: 1 + x^3 + x^4
G = gf_create_field(2, 4, [1 0 0 1 1]);

// 1 + x + x^2 + x^3 + x^4 es irreducible pero no primitivo
try
    gf_create_field(2, 4, [1 1 1 1 1]);
catch
    disp(lasterror())
end

// El campo primo GF(7); su polinomio por defecto es x - 3 = x + 4
P = gf_create_field(7, 1);
P(3)              // [4 1]

Ver también

Historial

VersionDescription
2.0.0

Refactorización de la función/toolbox. Ahora se usa un polinomio primitivo por defecto para cualquier n (antes solo estaba disponible para n = 1). Los argumentos no válidos generan errores.


Report an issue
<< gf_check_field Campos gf_degree >>