explore-diophantine-equations
À propos
Cette compétence résout les équations diophantiennes, en trouvant des solutions entières pour les équations linéaires, quadratiques et de type Pell. Elle met en œuvre des algorithmes clés comme l'algorithme d'Euclide étendu et les méthodes de descente pour générer des triplets pythagoriciens ou prouver la non-existence via des contraintes modulaires. Utilisez-la lorsque vous avez besoin de toutes les solutions entières à des problèmes comme ax + by = c ou pour trouver les solutions fondamentales à partir desquelles les autres sont dérivées.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/explore-diophantine-equationsCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
Explore Diophantine Equations
Resolver ecuaciones diofánticas — ecuaciones polinomiales donde solo se buscan soluciones enteras. Clasificar la ecuación por tipo, probar la solubilidad, encontrar soluciones particulares y generales, y generar familias de soluciones. Cubre ecuaciones lineales, ecuaciones de Pell, tripletas pitagóricas y formas cuadráticas generales.
Cuándo Usar
- Encontrar todas las soluciones enteras de una ecuación lineal ax + by = c
- Resolver la ecuación de Pell x^2 - Dy^2 = 1 (o = -1)
- Generar tripletas pitagóricas u otras familias enteras paramétricas
- Demostrar que una ecuación dada no tiene soluciones enteras (mediante restricciones modulares)
- Probar la solubilidad de una ecuación diofántica cuadrática general
- Encontrar la solución fundamental a partir de la cual se generan todas las demás
Entradas
- Requerido: La ecuación diofántica a resolver (en forma explícita, ej., 3x + 5y = 17 o x^2 - 7y^2 = 1)
- Opcional: Si encontrar todas las soluciones, solo una solución particular, o demostrar la no existencia
- Opcional: Restricciones en los rangos de variables (ej., solo enteros positivos)
- Opcional: Si expresar la solución general paramétricamente
- Opcional: Técnica de demostración preferida (constructiva, descenso, obstrucción modular)
Procedimiento
Paso 1: Clasificar el Tipo de Ecuación
Determinar la estructura de la ecuación diofántica para seleccionar el método de resolución apropiado.
-
Lineal: ax + by = c donde a, b, c son enteros dados y x, y son incógnitas.
- Método de resolución: Algoritmo euclidiano extendido.
-
Ecuación de Pell: x^2 - Dy^2 = 1 (o = -1, o = N) donde D es un entero positivo no cuadrado perfecto.
- Método de resolución: Expansión en fracción continua de sqrt(D).
-
Pitagórica: x^2 + y^2 = z^2.
- Método de resolución: Familia paramétrica x = m^2 - n^2, y = 2mn, z = m^2 + n^2.
-
Cuadrática general: ax^2 + bxy + cy^2 + dx + ey + f = 0.
- Método de resolución: Completar el cuadrado, reducir a Pell o forma más simple, o aplicar restricciones modulares.
-
Orden superior o especial: Tipo Fermat (x^n + y^n = z^n para n > 2), suma de cuadrados, u otros.
- Método de resolución: Obstrucción modular, descenso, o resultados de imposibilidad conocidos.
Registrar la clasificación y el método elegido.
Esperado: Una clasificación precisa con la estrategia de resolución identificada.
En caso de fallo: Si la ecuación no encaja en un tipo estándar, intentar sustitución o transformación para reducirla a una forma conocida. Por ejemplo, x^2 + y^2 + z^2 = n puede abordarse mediante el teorema de los tres cuadrados de Legendre. Si no hay reducción aparente, aplicar restricciones modulares (Paso 4) para probar obstrucciones.
Paso 2: Resolver Ecuaciones Diofánticas Lineales (si tipo = lineal)
Resolver ax + by = c para enteros x, y.
-
Calcular g = mcd(a, b) usando el algoritmo euclidiano.
-
Probar solubilidad: Existen soluciones si y solo si g | c.
- Si g no divide a c, demostrar no existencia: "Dado que mcd(a, b) = g y g no divide a c, la ecuación ax + by = c no tiene soluciones enteras."
- Detenerse si no existe solución.
-
Simplificar: Dividir todo por g para obtener (a/g)x + (b/g)y = c/g, donde ahora mcd(a/g, b/g) = 1.
-
Encontrar una solución particular usando el algoritmo euclidiano extendido:
- Expresar 1 = (a/g)*s + (b/g)*t mediante retro-sustitución.
- Multiplicar por c/g: (c/g) = (a/g)(sc/g) + (b/g)(tc/g).
- Solución particular: x0 = s * (c/g), y0 = t * (c/g).
-
Escribir la solución general:
- x = x0 + (b/g)*k
- y = y0 - (a/g)*k
- para todos los enteros k.
-
Aplicar restricciones (si se requieren soluciones positivas):
- Resolver x0 + (b/g)*k > 0 y y0 - (a/g)*k > 0 para k.
- Reportar el rango de valores válidos de k o declarar que no existe solución positiva.
Example (15x + 21y = 39):
gcd(15, 21) = 3. Does 3 | 39? Yes.
Simplify: 5x + 7y = 13.
Extended Euclidean: 1 = 3*5 - 2*7.
Multiply by 13: 13 = 39*5 - 26*7.
Particular: x0 = 39, y0 = -26.
General: x = 39 + 7k, y = -26 - 5k, k in Z.
Check (k=0): 5*39 + 7*(-26) = 195 - 182 = 13. Correct.
Esperado: La familia de solución general (x, y) parametrizada por un entero k, con verificación de la solución particular.
En caso de fallo: Si la solución particular es incorrecta, re-verificar la retro-sustitución euclidiana extendida paso a paso. El error más común es un error de signo. Verificar: a * x0 + b * y0 debe ser igual a c exactamente (no solo módulo algo).
Paso 3: Resolver Ecuaciones de Pell (si tipo = Pell)
Resolver x^2 - Dy^2 = 1 donde D es un entero positivo no cuadrado perfecto.
-
Verificar que D no es un cuadrado perfecto: Si D = k^2, entonces x^2 - k^2*y^2 = (x - ky)(x + ky) = 1, lo que obliga a x - ky = x + ky = +/-1, dando y = 0, x = +/-1 (trivial). La ecuación es interesante solo para D no cuadrado.
-
Calcular la expansión en fracción continua de sqrt(D):
- Inicializar: a0 = floor(sqrt(D)), m0 = 0, d0 = 1.
- Iterar: m_{i+1} = d_i * a_i - m_i, d_{i+1} = (D - m_{i+1}^2) / d_i, a_{i+1} = floor((a0 + m_{i+1}) / d_{i+1}).
- Continuar hasta que la secuencia de a_i se repita (la expansión es periódica después de a0).
- Registrar la longitud del período r.
-
Extraer la solución fundamental de los convergentes:
- Calcular los convergentes p_i / q_i de la fracción continua.
- El convergente p_{r-1} / q_{r-1} (al final del primer período) da la solución fundamental:
- Si r es par: (x1, y1) = (p_{r-1}, q_{r-1}) resuelve x^2 - Dy^2 = 1.
- Si r es impar: (p_{r-1}, q_{r-1}) resuelve x^2 - Dy^2 = -1 (la ecuación de Pell negativa). Entonces (p_{2r-1}, q_{2r-1}) resuelve la ecuación positiva.
-
Generar soluciones adicionales a partir de la solución fundamental (x1, y1):
- La recurrencia: x_{n+1} + y_{n+1} * sqrt(D) = (x1 + y1 * sqrt(D))^{n+1}.
- Equivalentemente: x_{n+1} = x1 * x_n + D * y1 * y_n, y_{n+1} = x1 * y_n + y1 * x_n.
-
Presentar la solución fundamental y la recurrencia para generar todas las soluciones.
Fundamental solutions for small D:
| D | (x1, y1) | D | (x1, y1) | D | (x1, y1) |
|---|---|---|---|---|---|
| 2 | (3, 2) | 7 | (8, 3) | 13 | (649, 180) |
| 3 | (2, 1) | 8 | (3, 1) | 14 | (15, 4) |
| 5 | (9, 4) | 10 | (19, 6) | 15 | (4, 1) |
| 6 | (5, 2) | 11 | (10, 3) | 17 | (33, 8) |
Esperado: La solución fundamental (x1, y1) verificada por sustitución, más la recurrencia para generar todas las soluciones positivas.
En caso de fallo: Si el cálculo de fracción continua no converge a un período, verificar la fórmula de iteración. La longitud del período r puede ser grande (ej., D = 61 tiene r = 11 y solución fundamental (1766319049, 226153980)). Para D grande, usar herramientas computacionales en lugar de cálculo manual.
Paso 4: Aplicar Restricciones Modulares para Existencia/No Existencia (si tipo = cuadrática general o superior)
Demostrar que una ecuación no tiene soluciones enteras mostrando una obstrucción modular.
-
Elegir un módulo m (típicamente m = 2, 3, 4, 5, 7, 8, o 16).
-
Enumerar todos los residuos: Calcular el lado izquierdo módulo m para todos los residuos posibles de las variables.
-
Verificar si alguna combinación da el lado derecho requerido módulo m.
- Si ninguna combinación funciona, la ecuación no tiene solución (obstrucción modular).
-
Obstrucciones comunes:
- Cuadrados mod 4: n^2 = 0 o 1 (mod 4). Entonces x^2 + y^2 = c no tiene solución si c = 3 (mod 4).
- Cuadrados mod 8: n^2 = 0, 1, o 4 (mod 8). Entonces x^2 + y^2 + z^2 = c no tiene solución si c = 7 (mod 8).
- Cubos mod 9: n^3 = 0, 1, u 8 (mod 9). Entonces x^3 + y^3 + z^3 = c puede estar obstruida para ciertos c mod 9.
-
Si no se encuentra obstrucción, un enfoque modular no puede demostrar la no existencia. Las soluciones pueden o no existir; intentar métodos constructivos o descenso.
Quadratic residues reference:
| Mod | Squares (residues) |
|---|---|
| 3 | {0, 1} |
| 4 | {0, 1} |
| 5 | {0, 1, 4} |
| 7 | {0, 1, 2, 4} |
| 8 | {0, 1, 4} |
| 11 | {0, 1, 3, 4, 5, 9} |
| 13 | {0, 1, 3, 4, 9, 10, 12} |
| 16 | {0, 1, 4, 9} |
Esperado: Ya sea una demostración de no existencia mediante obstrucción modular, o una declaración de que no se encontró obstrucción en los módulos probados.
En caso de fallo: Si los métodos modulares son inconclusos, intentar descenso infinito: asumir que existe una solución, derivar una solución estrictamente menor, y repetir hasta alcanzar una contradicción con la positividad. Esta técnica es clásica para demostrar que x^4 + y^4 = z^2 no tiene soluciones no triviales.
Paso 5: Generar Familias de Soluciones a partir de la Solución Fundamental
Expresar todas las soluciones en términos de la solución fundamental y parámetros enteros.
-
Para ecuaciones lineales: La familia es x = x0 + (b/g)*k, y = y0 - (a/g)*k (del Paso 2).
-
Para ecuaciones de Pell: Usar la recurrencia del Paso 3 para generar las primeras varias soluciones:
(x1, y1), (x2, y2), (x3, y3), ...Listar al menos 3-5 soluciones como verificación de cordura.
-
Para tripletas pitagóricas: Generar tripletas primitivas a partir de parámetros m > n > 0, mcd(m, n) = 1, m - n impar:
- a = m^2 - n^2, b = 2mn, c = m^2 + n^2.
- Todas las tripletas primitivas surgen de esta manera (hasta intercambiar a y b).
-
Para familias generales: Expresar soluciones en forma paramétrica si es posible. Si la ecuación define una curva de género 0, existe una parametrización racional. Si género >= 1, puede haber finitamente muchas soluciones (teorema de Faltings para género >= 2).
-
Verificar al menos 3 miembros de la familia por sustitución en la ecuación original.
Example (Pell, D = 2):
Fundamental: (x1, y1) = (3, 2). Check: 9 - 2*4 = 1. Correct.
(x2, y2) = (3*3 + 2*2*2, 3*2 + 2*3) = (17, 12). Check: 289 - 2*144 = 1.
(x3, y3) = (3*17 + 2*2*12, 3*12 + 2*17) = (99, 70). Check: 9801 - 2*4900 = 1.
Esperado: Una descripción paramétrica o recursiva de todas las soluciones, con al menos 3 soluciones verificadas.
En caso de fallo: Si las soluciones generadas fallan la verificación, la solución fundamental o la fórmula de recurrencia es incorrecta. Para ecuaciones de Pell, re-derivar la solución fundamental de la fracción continua. Para ecuaciones lineales, re-verificar el cálculo euclidiano extendido.
Validación
- La ecuación está correctamente clasificada por tipo (lineal, Pell, pitagórica, cuadrática general, orden superior)
- Para ecuaciones lineales: mcd(a, b) | c se verifica antes de resolver
- La retro-sustitución euclidiana extendida está verificada: ax0 + by0 = c exactamente
- La solución general incluye todas las soluciones (parametrizada por entero k o recurrencia)
- Para Pell: D se verifica como no cuadrado antes de aplicar el método de fracción continua
- Para Pell: la solución fundamental satisface x1^2 - D*y1^2 = 1 por cálculo directo
- Las demostraciones de obstrucción modular enumeran todas las combinaciones de residuos, no solo algunas
- Al menos 3 miembros de cualquier familia de soluciones se verifican por sustitución
- Las restricciones (enteros positivos, rango acotado) se aplican después de encontrar la solución general
- Las afirmaciones de no existencia se justifican ya sea por condición de mcd u obstrucción modular
Errores Comunes
-
Asumir que todas las ecuaciones con mcd | c tienen soluciones positivas: La solución general x = x0 + (b/g)*k incluye valores negativos. Las soluciones positivas pueden no existir incluso cuando la ecuación es resoluble sobre todos los enteros.
-
Confundir x^2 - Dy^2 = 1 con x^2 - Dy^2 = -1: La ecuación de Pell negativa tiene soluciones solo cuando la longitud del período de fracción continua es impar. Aplicar la fórmula de la ecuación positiva a un objetivo de ecuación negativa da un resultado incorrecto.
-
Olvidar la solución trivial de la ecuación de Pell: (x, y) = (1, 0) siempre satisface x^2 - Dy^2 = 1 pero no es útil para generar soluciones no triviales. La solución fundamental es la solución más pequeña con y > 0.
-
Obstrucción modular incompleta: Verificar solo mod 2 o mod 4 puede omitir obstrucciones visibles en módulos más altos. Si los primeros módulos no muestran obstrucción, intentar mod 8, 9, 16, o el discriminante de la forma cuadrática.
-
Error de uno en el período de fracción continua: Los índices de convergentes deben rastrearse cuidadosamente. La solución fundamental viene de p_{r-1}/q_{r-1} donde r es la longitud del período, no de p_r/q_r.
-
Descenso infinito sin caso base: Al usar descenso para demostrar no existencia, se debe mostrar que el descenso termina en una contradicción (ej., x = 0 contradice x > 0). Sin este caso base, el argumento está incompleto.
-
Aplicar incorrectamente el Último Teorema de Fermat: x^n + y^n = z^n no tiene soluciones enteras no triviales para n > 2 (Wiles, 1995), pero esto no aplica a ecuaciones con coeficientes diferentes como 2x^3 + 3y^3 = z^3.
Habilidades Relacionadas
analyze-prime-numbers-- La factorización y el cálculo de mcd son prerrequisitos para resolver ecuaciones diofánticassolve-modular-arithmetic-- Las congruencias lineales ax = c (mod b) son equivalentes a ecuaciones diofánticas linealesderive-theoretical-result-- Técnicas de derivación formal para demostrar resultados de imposibilidad diofántica
Dépôt GitHub
Compétences associées
executing-plans
DesignUtilisez la compétence executing-plans lorsque vous disposez d'un plan de mise en œuvre complet à exécuter par lots contrôlés avec des points de contrôle de revue. Elle charge et examine le plan de manière critique, puis exécute les tâches par petits lots (3 tâches par défaut) tout en rapportant la progression entre chaque lot pour une revue par l'architecte. Cela garantit une mise en œuvre systématique avec des points de contrôle de qualité intégrés.
requesting-code-review
DesignCette compétence délègue un sous-agent réviseur de code pour analyser les modifications apportées au code par rapport aux exigences avant de poursuivre. Elle doit être utilisée après avoir terminé des tâches, implémenté des fonctionnalités majeures, ou avant une fusion vers la branche principale. La revue aide à détecter précocement les problèmes en comparant l'implémentation actuelle avec le plan initial.
connect-mcp-server
DesignCette compétence fournit un guide complet permettant aux développeurs de connecter des serveurs MCP à Claude Code via les transports HTTP, stdio ou SSE. Elle couvre l'installation, la configuration, l'authentification et la sécurité pour intégrer des services externes tels que GitHub, Notion et des API personnalisées. Utilisez-la lors de la configuration d'intégrations MCP, de la configuration d'outils externes ou du travail avec le Protocole de Contexte de Modèle de Claude.
web-cli-teleport
DesignCette compétence aide les développeurs à choisir entre les interfaces Web et CLI de Claude Code en fonction de l'analyse des tâches, puis permet une téléportation transparente des sessions entre ces environnements. Elle optimise le flux de travail en gérant l'état et le contexte de la session lors du passage entre le web, la CLI ou le mobile. Utilisez-la pour des projets complexes nécessitant différents outils à diverses étapes.
