El concepto de módulo en el contexto de la pregunta publicada (“¿Hay algún ejemplo de la respuesta negativa en una función de módulo?” – Existe un concepto de módulo bastante distinto en el análisis complejo), originado al relacionar dos enteros cuya diferencia es divisible por un entero distinto de cero llamado módulo. Las relaciones de congruencia se establecerían como:
a ≡ b (mod m ), para a y b cualquier número entero y m un número entero que se consideraba distinto de cero o positivo, se leía como ” a es congruente con b módulo m ” y se considera verdadero si y solo si m | ( a – b ), es decir, la diferencia de a y b es divisible por el módulo m , que también puede considerarse que a y b tienen el mismo resto tras la división por m . Esta congruencia modular no era una función sino una relación binaria en Z (el conjunto de enteros). Más específicamente, era una relación de equivalencia que dividía todos los enteros en clases de equivalencia cuya membresía se basaba en el resto cuando se dividía por m . Cada clase de equivalencia se denotaría con un miembro “típico” entre paréntesis. Para un módulo de 5, habría 5 clases de equivalencia: aquellos enteros divisibles por 5 sin resto, [0] = [5] = [10] = [−5] = [−10] = …; aquellos enteros que dejan un resto de 1 cuando se dividen entre 5, [1] = [6] = [11] = [−4] = [−9] = …; aquellos enteros que dejan un resto de 2 cuando se dividen entre 5, [2] = [7] = [12] = [−3] = [−8] = …; aquellos enteros que dejan un resto de 3 cuando se dividen entre 5, [3] = [8] = [13] = [−2] = [−7] = …; aquellos enteros que dejan un resto de 4 cuando se dividen entre 5, [4] = [9] = [14] = [−1] = [−6] = … ..
Naturalmente, surgió la pregunta de cuál es el “mejor” valor r para usar para un valor representativo para etiquetar el módulo de clase de equivalencia al que pertenece a, en otras palabras, qué valor de r es el “mejor” para expresar un valor ∈ [ r ] ya que hay una infinidad de valores de r que satisfacen a ≡ r (mod m ). Es completamente válido enumerar las 5 clases de equivalencia para el mod 5 como [25], [−4], [−18], [8] y [14], pero esa no es una lista que sea propicia para una rápida y precisa interpretación, cálculo y verificación. (Compare este concepto con la expresión de la raíz cuadrada de un número racional: escribir √8 es bastante significativo, pero una convención común es que 2√2 es la mejor manera de expresar este valor como respuesta final). Ha habido varias convenciones comúnmente utilizadas para decidir esto. Parte de la discusión está íntimamente relacionada con la pregunta de si se debe permitir m <0. Todas las convenciones se basan en:
a = qm + r ,
donde q es un entero, común conocido como cociente. Como hay una infinidad de enteros, tenemos una infinidad de pares ( q , r ) que satisfacen a = qm + r , por lo que necesitamos un mecanismo para elegir el “mejor” par. Por ejemplo, para 13 ≡ r (mod 5):
13 = −1 (5) + 18 y ( q , r ) = (−1, 18);
13 = 0 (5) + 13 y ( q , r ) = (0, 13);
13 = 1 (5) + 8 y ( q , r ) = (1, 8);
13 = 2 (5) + 3 y ( q , r ) = (2, 3);
13 = 3 (5) – 2 y ( q , r ) = (3, −2)
como cinco entre una infinidad de posibilidades.
- Una opción implica el llamado módulo de residuo menos no negativo m , que se refiere a elegir q y r para que r esté siempre entre 0 y | m |, incluyendo 0 pero excluyendo | m |, es decir, 0 ≤ r <| m |. Por lo tanto, si m = 5 o m = −5, las 5 clases de equivalencia se denominarían [0], [1], [2], [3] y [4]. En este caso, queremos el menor número no negativo como el resto. Para determinar r , primero determine q como:
para m > 0, q = ⌊ a / m ⌋;
para m <0, q = ⌈ a / m ⌉,
donde ⌊ x ⌋ representa la función de piso de x (el mayor entero menor o igual que x y ⌈ x ⌉ representa la función de techo de x (el menor entero mayor o igual que x ). Entonces r = a – qm , y r es siempre no negativo. - Otra opción implica elegir r para que r esté siempre entre 0 ym , incluido 0 pero excluyendo m . Por lo tanto, si m = 5, las 5 clases de equivalencia serían referidas como [0], [1], [2], [3] y [4], pero si m = −5, serían referidas como [0] , [−1], [−2], [−3] y [−4]. Para determinar r , primero determine q como q = ⌊ a / m ⌋, entonces r = a – qm , y r siempre es 0 o tiene el mismo signo que m .
- Otra opción puede considerarse más o menos como un residuo tradicional. Para determinar r , primero determine q como el truncamiento de a / m hacia 0 (desechando cualquier parte fraccional para que 3.6 vaya a 3 y −3.6 vaya a −3). Entonces r = a – qm , yr siempre es 0 o tiene el mismo signo que a . Por lo tanto, r está entre – my m . Las clases de equivalencia se denotarían para m = ± 5 por [−4], [−3], [−2]. [−1], [0], [1], [2], [3] y [4], lo que da como resultado redundancia entre los primeros cuatro y los últimos cuatro, y los primeros cuatro se usan solo cuando a <0 y los últimos cuatro se usan solo cuando a > 0. Esta convención se puede extender a números reales para a y m .
- Otra opción consiste en aplicar otro conjunto similar de fórmulas de fórmulas en el contexto de números reales (no restringidos a enteros). Para determinar r , primero determine q como entero (aunque a y m pueden ser valores no enteros) redondeando a / m al entero más cercano, y en caso de empate (es decir, a / m tiene la forma n + 0.5 para algún entero n , luego redondee al entero par más cercano ( n si n es par yn + 1 si n es impar) para determinar q ). Entonces r = a – qm , yr siempre está entre −0.5 my +0.5 m . Esta operación se conoce como resto en IEC 60559 y IEEE Std 754–2008.
Con cada una de estas convenciones, para cualquier valor dado de a y de distinto de cero juntos en el contexto apropiado (enteros para 1, 2 y 3 y reales para 4), resulta un valor de r y es único. Eso significa que para cada convención tenemos una función de a y m . La nomenclatura y la notación utilizadas para esta función varían según la convención y el campo de aplicación anteriores. La nomenclatura común que distingue un poco las cuatro convenciones es:
1. mínimo residuo [no negativo];
2. valor modular;
3. resto [entero] o, para contexto de número real, valor modular flotante;
4. resto.
Esta nomenclatura no está universalmente acordada y puede ser barajada.
Al menos algunos de estos cálculos para a y m son compatibles con funciones, operadores o atributos definidos por el lenguaje en la mayoría de los principales lenguajes de programación. Algunos ejemplos:
- Si x ^ 3 + 1 / x ^ 3 = 110, entonces, ¿qué es x + 1 / x?
- Dado un conjunto de n números, ¿cómo puedo crear una función donde el número n + 1 sea el número que quiera?
- ¿Cómo se grafican las funciones de registro?
- ¿Cuál es la función principal del cerebro?
- Dado que f (1) = 5, f (2) = 18, f (3) = 37 yf (4) = 62, ¿cómo encuentra una función f (x) que solo tenga coeficientes enteros y que satisfaga el criterios anteriores sin prueba y error?
Ada: 2. a mod m
; 3. a rem m
; 4. F'Remainder(a, m)
donde F es el nombre del tipo de punto flotante relevante.
C (1999 y posteriores), C ++ (2011 y posteriores): 3. a % m
para enteros y, a través de math.h, fmod(a, m)
para coma flotante; 4. a través de math.h, remainder(a, m)
.
Fortran (1990 en adelante): 2. MODULO(a, m)
; 3. MOD(a, m)
.
Java: 2. Math.floorMod
; 3. a % m
; 4. Math.IEEEremainder(a, m)
.
Lisp (Común): 2. (mod am)
; 3. (rem am)
.
Para enfocar la respuesta a las preguntas y resumir:
un mod m se comporta según la convención utilizada:
1. nunca negativo;
2. negativo si y solo si m <0 y a no es divisible por m . [8 mod −5 = −2];
3. negativo si y solo si a <0 y a no es divisible por m . [−8 mod 5 = −3];
4. negativo si a es menor que el múltiplo más cercano de m . [8 mod 5 = −2].
La interpretación más común de un mod m es la n. ° 2, pero definitivamente no se acepta universalmente.