61 votos

¿Cómo depurar las matemáticas?

Puede parecer extraño, ya que soy bueno en programación, pero acabo de empezar a sumergirme en las matemáticas. ATM Estoy aprendiendo combinatoria en la Academia Khan, y aquí hay un ejemplo de una pregunta con la que luché (esa no es la cuestión) :

La respuesta a las "formas de conseguir $1$ cabeza en $4$ "Vueltas" es $4$ (HTTT, THTT, TTHT, TTTH) . Pero pongámoslo al revés: "formas de conseguir $3$ cola en $4$ volteretas" (que es, obviamente, la misma pregunta) . Sería el número de lugares para ponerlo: $4×3×2 = 24$ dividido por 3 para eliminar los duplicados. (es decir, el TTTH se cuenta $3$ veces) : $24/3 = 8$ . Pero $8 ≠ 4$ ! Usamos cálculos correctos, razonamiento, y obtuvimos una respuesta absolutamente diferente, ¿cómo es posible?

Pensé: debe haber formas genéricas de depurar los problemas de matemáticas, es decir, no sólo resolver directamente, sino más bien encontrar el problema cuando todo se supone que funciona, pero no lo hace. Intenté buscar, y para mi sorpresa no encontré nada, como si nadie hubiera hecho la pregunta. Bueno, aquí está la mía:

Cuáles son las formas más comunes de depurar los problemas matemáticos; tanto genéricos como especializados sería bueno saberlo. Si conoce algún artículo relevante, también me gustaría leerlo.

48 votos

Debe dividir por $3!$ no por $3$ (Terminaría esta afirmación con un signo de exclamación, pero eso lo haría un poco ambiguo).

6 votos

No has encontrado nada porque "depurar las matemáticas" es una forma curiosa de decirlo :-) Mucho mejor sería "encontrar el error" o "cómo estar seguro de que una prueba es correcta". En un programa informático, cometes un error en alguna parte. Sigues mirando cada parte del código hasta que encuentras el problema. En matemáticas se sigue mirando cada parte de un argumento hasta que se encuentra el problema. No hay atajos ni metodologías: Si escribiste "debug" con la idea de que puedes encontrar algún paralelismo como las pruebas unitarias o lo que sea, pues no hay

4 votos

Yo más bien diría que no hay "atajos genéricos", pero si conoces bastante bien tu área de matemáticas y tienes un poco de experiencia, empiezas a saber cuáles pueden ser los errores comunes, y qué tipo de error puede provocar tal o cual error final. Pero todo eso depende mucho de un tema concreto.

78voto

Jody M Puntos 31

Como estudiante de ciencias de la computación que se adentra en las matemáticas, permítanme aportar mi punto de vista al respecto.

La depuración de las matemáticas es una experiencia completamente diferente a la de los programas. La diferencia es que mientras nosotros tenemos programas, ellos (tienden a ser) imperativo - es decir, enumeran una serie de pasos que hay que seguir.

(Sé que esto es una burda generalización, y que los lenguajes Haskell/LISP/Scheme/Programación Funcional existen y no son así, pero la mayoría de los lenguajes de programación "generales" son imperativo).

En matemáticas, generalmente tienes un conjunto de enunciados que "juntas" para obtener una solución. Es más bien una expresión que un receta si eso tiene sentido para ti.

Sin embargo, lo bueno es que gran parte de la intuición de la depuración se mantiene.

Algunos principios que se trasladan muy bien:

  1. Aislar un problema, obtener el mínimo ejemplo de fallo. Esto funciona tanto en matemáticas como en informática. Si tienes una fórmula general, sustituye los valores pequeños como $0$ , $1$ etc., como una comprobación de cordura.

  2. Romper las cosas permite comprender mejor su funcionamiento. Cuando leas un teorema o codifiques cualquier cosa, siempre debes ampliar los límites de lo que estás haciendo. Pregúntate a ti mismo: "¿Qué pasaría si no tuviera esta afirmación en mi demostración? "¿Y si elimino esta línea? "¿Es esta suposición realmente ¿es necesario? Jugar con las matemáticas e intentar romperlas a menudo también ayuda a aprenderlas.

Además, algunas ramas de las matemáticas son simplemente extraño y le exigen que construir la intuición sobre ellos - No encontrarás las ideas intuitivas en absoluto cuando empieces (la topología fue así para mí cuando empecé a aprenderla), pero poco a poco vas cogiendo estilos de pensamiento que complementan la rama de las matemáticas que estás estudiando.

Otra gran "herramienta de depuración" es conectar buenos ejemplos en teoremas / problemas cada vez que te enfrentes a algo demasiado genérico. Siempre hay que contar con al menos 3 ó 4 ejemplos para cualquier tema, para poder comprobar rápidamente los hechos (y remitirse a esos ejemplos). También es bueno tener no ejemplos de cosas para saber la diferencia.

Si has cursado cálculo, entonces conocer tus ejemplos sería

  1. una función discontinua $f(x) = \text{floor}(x)$
  2. una función continua pero no diferenciable - $f(x) = |x|$
  3. una función que es continua y diferenciable - $f(x) = \sin x$
  4. una función no diferenciable en ninguna parte - función de Weierstrass
  5. una función continua en ninguna parte - la función de base 13 de Conway

Hay libros como contraejemplos en topología que te armará con un montón de ejemplos en los que pensar. Este tipo de cosas son muy útiles cuanto más abstractas son las matemáticas.

Una última cosa que puedes hacer como programador es escribir código que compruebe una corazonada que tienes - esto es un enorme ventaja y no tengas miedo de explotar esto. ¿Crees que algo es cierto pero te da pereza comprobarlo? ¡Codifícalo! No sólo es una práctica, sino que a menudo también te enseña algunos datos matemáticos muy interesantes.

Espero que esto ayude como guía aproximada sobre cómo depurar las matemáticas :)

0 votos

Ah, mierda. Sí, mi error. Quería algún tipo de función elemental que fuera discontinua, tal vez $floor(x)$ habría sido una mejor opción

5 votos

Gracias. Eliminaré el comentario obsoleto. Por cierto, es posible que prefieras usar \lfloor x \rfloor para obtener $\lfloor x \rfloor$ .

0 votos

Recomiendo la lectura de "Recetas numéricas en C++". Es una forma estupenda de aprender a pensar como un analista numérico.

27voto

sewo Puntos 58

Algo paralelo a la depuración sería comprobar a mano los distintos pasos intermedios de tu razonamiento para una instancia del problema lo suficientemente pequeña como para resolverlo todo sobre el papel.

En su caso " $4$ volteos" es, en efecto, un número tan pequeño. Y es bastante fácil convencerse de que $4$ es la respuesta correcta. Así que su segundo cálculo comienza con sólo saber cosas que son verdaderas bajo tus suposiciones y termina con una afirmación que sabes que es falsa. Para encontrar la falacia hay que buscar el primer paso en el argumento donde se concluye algo que en realidad es falso.

El primer paso en su razonamiento es que hay $4\times 3\times 2=24$ maneras de elegir las tres posiciones de cola, siempre que recuerde el orden en que las elige. Podemos comprobarlo escribiendo esas 24 formas y contando.

123       124       132       134       142       143
213       214       231       234       241       243
312       314       321       323       341       342
412       413       421       423       431       432

Cuente: hay 24, y si ha sido un poco sistemático al respecto, está bastante seguro de que no se ha olvidado de ninguno.

A continuación, el siguiente paso es que cada resultado de tipo TTHT aparezca para 3 de estas situaciones. Comprobemos que que es cierto anotando cuál es el resultado en cada una de nuestra lista de 24:

123 TTTH  124 TTHT  132 TTTH  134 THTT  142 TTHT  143 THTT
213 TTTH  214 TTHT  231 TTTH  234 ...   241       243
312       314       321       323       341       342
412       413       421       423       431       432

Whoops -- ahora hemos encontrado cuatro combinaciones que conducen a TTTH, pero según nuestra afirmación sólo debería haber tres. ¡Así que debe haber un error en el razonamiento que concluye que cada resultado aparece sólo tres veces!

18voto

aras Puntos 1083

Soy un estudiante que actualmente está aprendiendo matemáticas a nivel de licenciatura. La mayoría de las veces aprendo de forma autodidacta, por lo que es crucial "depurar" mi proceso de pensamiento durante el proceso de aprendizaje. (Interpretaré "depurar" un poco menos literalmente, así que más como comprobar tu propio trabajo utilizando soluciones alternativas / atajos). Esta lista no es exhaustiva, pero de lo que me viene a la cabeza aquí están algunas formas de "depurar" mi trabajo en los problemas de matemáticas:

  • ¿Es la solución de la magnitud correcta? (Hay $2^4 = 16$ posibilidades después de lanzar una moneda $4$ veces, por lo que una solución de $40$ a su problema no tendría sentido).
  • Mira los divisores de la solución. ¿Son "razonables"? (Aquí tiene sentido que su solución sea divisible por $4$ porque aquí hay $4$ "puntos" para la H e intuitivamente no debería importar qué punto ocupa).
  • Si se calcula una parte del conjunto (combinatoria), ¿se pueden calcular las otras partes con relativa rapidez? Si es así, ¿la suma de las partes es igual al todo?
  • Al comprobar una prueba: ¿has utilizado todos los supuestos o la prueba era "demasiado simple"? Si no es así, es probable que hayas simplificado demasiado algo. (Por ejemplo ici por qué es importante que $a$ es libre de cuadrados para demostrar que $\sqrt{a}$ es irracional. )
  • Para la combinatoria: doble conteo.
  • Siempre que sea posible, intente comprender un concepto/problema de múltiples maneras. Es más probable que tu solución sea correcta si pasa ambas comprobaciones. Por ejemplo, en el cálculo, la mayoría de las ideas pueden entenderse de forma geométrica y algebraica.
  • Dado que utilizas el término "depuración", probablemente seas un programador. Escribe programas para comprobar tu trabajo cuando corresponda. (Combinatoria, teoría de los números, incluso áreas más especializadas si echas un vistazo a software como sage. )
  • Cuando trabajes con funciones, asegúrate de que los casos más sencillos tienen sentido. (Por ejemplo: ¿tiene sentido que $P(x) = -32 + 4x$ modelos beneficios venta $x$ unidades a un precio de $4$ dólares cada uno, con un coste inicial $32$ ¿dólares? Sí, ya que $P(0) = -32$ es negativo (antes de vender se pierde dinero en costes fijos), y $P(8) = 0$ es donde se alcanza el punto de equilibrio, tal y como se esperaba).
  • Para cualquier cosa con una interpretación geométrica: intenta hacer una visualización precisa (a mano, o usando algo como GeoGebra o WolframAlpha) y ve cómo se sostiene tu solución. (Por ejemplo, ¿tienes un triángulo con lados $1$ , $1$ y $3$ que no es posible dibujar).

Sin embargo, la mejor manera de aprender a depurar las matemáticas es haciendo problemas / pruebas de práctica. La experiencia de golpearse la cabeza contra un problema hasta que lo consigues ayuda a construir la intuición en esa pequeña área. Y parte de la intuición es saber qué trucos aleatorios son los mejores para "depurar" ese problema concreto.

14voto

Mees de Vries Puntos 165

Esta es una pregunta que puede invitar a una gran variedad de respuestas, pero permítanme dar dos.

La forma principal en que la mayoría de los matemáticos "depuran" sus teoremas demostrados es mediante pruebas, de forma similar a como se depura el software. En tu ejemplo, concluyes que tu razonamiento debe ser erróneo porque da la respuesta equivocada. Los teoremas se crean para ser aplicados: si son erróneos, lo normal es que te encuentres con un contraejemplo y tengas que modificar o restringir el teorema. No hay garantías de que esto ocurra o de que lo haga, pero así es como se suelen descubrir los errores.

Por supuesto, el ideal platónico de una prueba no tiene cabida para esos errores; por eso a los matemáticos les gustan tanto las pruebas. Para acercar una prueba humana al ideal platónico, una cosa que se podría hacer es formalizar las matemáticas (por ejemplo, en la teoría de conjuntos/ZFC, o la teoría de tipos/HoTT, o lo que sea), y dar su prueba dentro de ese sistema formal. Entonces, todo lo que tienes que comprobar es que cada paso se sigue de los pasos anteriores, lo cual es -- si tu formalización tiene sentido -- un proceso que es muy preciso y mecánico.

De hecho, yendo un paso más allá, podrías escribir tu prueba en un lenguaje formal para el que tengas un comprobador de pruebas formal, y hacer que un ordenador verifique que tu prueba es correcta. Ahora puede estar tan seguro como lo está de que su comprobador de pruebas es correcto (y normalmente no son piezas de software inmensamente complejas). Este es un esfuerzo que algunos matemáticos han emprendido, véase, por ejemplo, el Proyecto Mizar o formalización en HoTT .

11voto

Eric Towers Puntos 8212

En lo que respecta a las matemáticas a nivel de posgrado y más allá, estas técnicas de depuración de la programación pueden ser bastante eficaces:

  • Depuración del pato de goma : Encuentre a alguien/algo a quien explicarle el fallo y su solución. Esto también es eficaz para ayudar a los estudiantes a encontrar fallos en sus soluciones a los problemas de palabras. La revisión del código, es decir, la presentación de su argumento a un colega mínimamente interesado, encuentra muchos, muchos errores por el mismo mecanismo.
  • Bisección: ¿La reclamación se mantiene a mitad de la construcción? En cualquier caso, la siguiente comprobación es en el punto del cuarto correspondiente.
  • Pruebas unitarias: En matemáticas, se trata de tener un conjunto de objetos "amables" y otro de objetos "extraños" sobre los que probar las afirmaciones. Ejemplos: ¿Esta afirmación es válida para $[0,1]$ ? ¿Y para el conjunto de Cantor? ¿Y para el producto incontable de copias de $[0,1]$ ? ¿Funciona para grupos abelianos? ¿grupos solubles? ¿grupos finitamente generados? ¿grupos de Lie? y otros.
  • Comprobación de condiciones previas: Este teorema se cumple si esa medida es $\sigma$ -finito. Es que miden $\sigma$ -(Esto atrapa muchos, muchos errores. Ejemplo notorio que implica una definición: los colectores son Hausdorff, pero hay trabajos publicados que olvidan comprobarlo). De hecho, todos los teoremas son contratos (de "diseño por contrato" de software).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X