Matemática algorítmica y matemática dialéctica

Este artículo se ha extraído del libro Experiencia matemática, de Philip J. Davis y Reuben Hersch.

Para exponer más fácilmente la diferencia de concepción y perspectiva que separa la matemática dialéctica de la algorítmica trabajaremos con un ejemplo. Supogamos que el problema que tenemos planteado sea el de obtener una solución de la ecuación \(x^2=2\). Es éste un problema para el cual los babilonios, hacia el 1700 a. de C., habían hallado la excelente aproximación \(\sqrt{2}=1;24,51,10\) en la notación de base \(60\) que ellos empleaban, o sea, \(\sqrt{2}=1,414241963\), con decimales. Este era exactamente el problema para el que Pitágoras (550 a. de C.) afirmó que no había solución con números fraccionarios, y en cuyo honor se supone que sacrificó una hecatombe de bueyes; el problema que provocó la crisis existencialista en la antigua matemática griega. El número \(\sqrt{2}\) existe (como la diagonal que es de un cuadrado de lado \(1\)), y sin embargo ¡no existe como fracción! Presentaremos seguidamente dos soluciones a este problema.

Solución I

Fijémonos en que si el número \(x\) fuera solución de \(x^2=2\), se tendría que \(x=\dfrac{2}{x}\). Ahora bien, si \(x\) fuera ligeramente incorrecto, por defecto, pongamos por caso, entonces \(\dfrac{2}{x}\) sería incorrecto por exceso. Tras un instante de reflexión, a todos se nos ocurre que un valor a medio camino entre \(x\) y \(\dfrac{2}{x}\) sería una estimación más exacta que cualquiera de ambos. Formalicemos. Sea \(x_1,\,x_2,\,\ldots\) una sucesión de números definidos por la fórmula de recurrencia

\[x_{n+1}=\frac{1}{2}\left(x_n+\frac{2}{x_n}\right)\ ,\ n=1,\,2,\,\ldots\]

Si \(x_1\) es un número positivo cualquiera, la sucesión \(x_1,\,x_2,\,\ldots\) converge hacia \(\sqrt{2}\) con rapidez cuadrática.

Por ejemplo, tomemos inicialmente \(x_1=1\). Entonces, sucesivamente, \(x_2=1,5\), \(x_3=1,416666\ldots\), \(x_4=1,414215686\ldots\) El valor de \(x_4\) es correcto ya hasta la 5ª cifra decimal. Convergencia cuadrática significa que el número de decimales correctos se duplica cada iteración. Tenemos aquí una receta, un «algoritmo», para resolver el problema. El algoritmo puede efectuarse con sólo adición y multiplicación, y no requiere una teoría completa del sistema de los números reales.

Una demostración rigurosa la puedes encontrar en el último ejercicio de este artículo.

Solución II

Pensemos en la gráfica de la función \(y=x^2-2\). La gráfica es en realidad una parábola, pero tal hecho no es importante.

La parábola \(y=x^2-2\).

Cuando \(x=1\), \(y=-1\); cuando \(x=2\), \(y=2\). Al moverse \(x\) continuamente desde \(1\) hasta \(2\), el valor de \(y\) se mueve continuamente desde un valor negativo hasta otro positivo. Por consiguiente, en algún lugar comprendido entre \(1\) y \(2\) ha de haber un valor de \(x\) en el cual \(y=0\), o lo que es equivalente, donde \(x^2=2\). La solución está completa. Las propiedades del sistema de los números reales y de las funciones continuas definidas sobre este sistema proporcionan los detalles que hace riguroso el razonamiento (ver el artículo dedicado a las funciones continuas y sus propiedades y el artículo dedicado a la continuidad de una función en un intervalo).

La solución I es matemáticamente algorítmica. La solución II es la solución dialéctica. En cierto sentido, ni la solución I ni la II tienen nada de solución. La solución I nos proporciona aproximaciones decimales cada vez mejores, pero por mucho que nos esperemos para detenernos, cuando lo hagamos seguiremos sin tener una solución decimal exacta. La solución II nos dice que «existe» una solución exacta. Nos informa que tal solución está comprendida entre \(1\) y \(2\), y eso es todo cuanto puede decirnos. La solución dialéctica podría muy bien ser calificada de solución existencial.

La dialéctica aporta intuición e inteligencia de los problemas, y nos da libertad de acción. Nuestro conocimiento de qué es lo existente puede ir mucho más allá de lo que seamos capaces de calcular o de aproximar. Veamos un ejemplo sencillo. Se nos da un triángulo con tres lados desiguales. Preguntamos: ¿existe una recta vertical que divida en dos partes iguales la superficie del triángulo? En el contexto de la matemática algorítmica podríamos plantear el problema de la determinación de una recta mediante una construcción con regla y compás, o por medios quizá más generosos. En el contexto de la matemática dialéctica podemos afirmar que sí, que tal recta existe, sin trabajar lo más mínimo. Basta observar que si desplazamos transversalmente un cuchillo sobre la figura, moviéndolo de izquierda a derecha, la porción de triángulo que queda a la izquierda del cuchillo varía continuamente, desde el \(0\,%\) hasta el \(100\,%\), y que, por consiguiente, ha de existir una posición intermedia donde la porción separada sea exactamente del \(50\,%\).

Tras haber llegado a esta solución, posiblemente veamos con estupefacción que las propiedades específicas del triángulo no han sido utilizadas para nada. ¡El mismo razonamiento serviría para todo tipo de áreas! Y así podemos asegurar la exitencia de una recta bisectora vertical, sin que sepamos cómo hallarla, sin que sepamos calcular el área separada por el cuchillo, y sin necesitar siquiera saber cómo hacerlo.

Las matemáticas egipcia, babilónica y del antiguo Oriente fueron todas ellas matemáticas algorítmicas. La matemática dialéctica (la matemática estrictamente lógica, deductiva) tuvo su origen en la Grecia clásica. Pero no desplazó a la algorítmica: en Euclides, el papel de la dialéctica es justificar una construcción, es decir, un algoritmo.

Es tan sólo en tiempos modernos cuando encontramos matemáticas de escaso o nulo contenido algorítmico, a las que podríamos calificar de puramente dialécticas o existenciales.

Entre las primeras investigaciones que dieron claras muestras de espíritu e inspiración predominantemente dialéctica se cuenta la búsqueda de las raíces de los polinomios de grado \(n\). Durante largo tiempo, se estuvo conjeturando que un polinomio de grado \(n\),

\[p_n(z)=a_0z^n+a_1z^{n-1}+\ldots+a_{n-1}z+a_n\]

ha de tener \(n\) raíces, una vez contadas las multiplicidades. Sin embargo, no se pudo encontrar una fórmula explícita que permitiera calcularlas en función de los coeficientes, como se hace para las ecuaciones de segundo y tercer grado (posteriormente, se demostró que es imposible hallar tales fórmulas cuando \(n>4\)). La cuestión se convirtió entonces en ésta: ¿de qué otros recursos valernos para el problema de hallar raíces aproximadas? Los teoremas que sí la garantizan, que Gauss fue el primero en demostrar, son teoremas dialécticos. El aspecto algorítmico es todavía objeto de análisis.

Durante la mayor parte del siglo XX las matemáticas han sido más de inspiración existencial que algorítmica. Estos últimos años, sin embargo, parecen mostrar un nuevo desplazamiento del centro de gravedad hacia los enfoques algorítmicos.

Henrici señala que

La matemática dialéctica es una ciencia rigurosamente lógica, en la cual los enunciados son, sean verdaderos o falsos, y donde los objetos de propiedades especificadas, o existen, o no existen. La matemática algorítmica es un instrumento para la resolución de problemas. En ella interesa no solamente la existencia de un objeto matemático; interesan sobre todo las credenciales de su existencia. La matemática dialéctica es un juego intelectual que se desarrolla según reglas acerca de las cuales existe alto grado de consenso. Las reglas de juego de la matemática algorítmica pueden variar según la urgencia del problema que tengamos entre manos. Nunca hubiéramos logrado poner un hombre en la Luna si nos hubiéramos empeñado en que las trayectorias fueran computadas con rigor dialéctico. Las reglas pueden variar también en función del equipo de computación disponible. La matemática dialéctica invita a la contemplación. La algorítmica, a la acción. La matemática dialéctica proporciona inteligencia e intuición de los problemas. La matemática algorítmica genera resultados.

Al compararlos, los paradigmas de lo dialéctico y de lo algorítmico presentan un claro y distintivo corrimiento, y quienes han trabajado en uno de estos modos pueden muy bien sentir la impresión de que las soluciones correspondientes al otro no son «juego limpio», que no son «lícitas». Sufren de «shock paradigmático». Según se cuenta, P. Gordan, que estuvo trabajando en teoría de invariantes por métodos algorítmicos, padeció este shock al verse confrontado con la brillante obra de Hilbert, que era de naturaleza dialéctica. «Esto no es matemática -dijo Gordan-, sino teología».

Sin duda, es el enfoque algorítmico el necesario y conveniente cuando el problema que tenemos entre manos requiere una solución numérica que desempeñe un papel importante en las matemáticas o fuera de ellas. El análisis numérico es la ciencia y el arte de obtener soluciones numéricas para ciertos problemas. Algunas autoridades proclaman que lo «artístico» del análisis numérico consiste en esconder bajo la alfombra todas las insuficiencias e imperfecciones de su faceta «científica». El análisis numérico es a un tiempo rama de la matemática aplicada y de la informática.

Veamos un ejemplo típico. Un problema (de física, pongamos por caso) ha llevado a plantear un sistema de ecuaciones diferenciales ordinarias entre las funciones \(u_1(t),\,u_2(t),\,\ldots,\,u_n(t)\), donde la variable independiente \(t\) varía desde \(0\) hasta \(1\). Es preciso resolver este sistema, con la condición adicional de que las funciones incógnitas \(u_i(t)\) han de tomar valores predeterminados en los extremos \(t=0\) y \(t=1\). Este problema se denomina problema de contorno con dos puntos frontera. Una inspección superficial del problema ha revelado que probablemente no exista una solución en forma explícita, y en consecuencia se ha decidido proceder numéricamente y calcular una tabla de valores \(u_i(t_j)\), \(j=1,\,2,\,\ldots,\,p\), \(i=1,\,2,\,\ldots,\,n\), que será aceptada como solución. El análisis numérico tiene a su cargo decirnos cómo proceder.

El procedimiento concreto dependerá seguramente de los medios mecánicos de que dispongamos para realizar el cómputo. Si tenemos lápiz y papel y quizá una calculadora de bolsillo, deberemos proceder de cierta forma. Si dispusiéramos de un gran ordenador, seguramente deberíamos proceder de otra. A su vez, las características de memoria y de programación disponibles en el ordenador pueden sugerir economías en el procedimiento.

La realización de cómputos en el ordenador digital comporta reemplazar las funciones incógnitas \(u_i(t)\), que son continuas y de variable continua, por funciones discretas. Ahora bien, ello puede hacerse de multitud de formas. ¿Habrá de ser reemplazado el sistema de ecuaciones diferenciales por ecuaciones de diferencias finitas? De ser así, también esta sustitución podrá hacerse de variedad de formas. ¿Cuál es, entonces, el procedimiento apropiado? Si nos decidimos a pasar a diferencias finitas, nos veremos llevados a sistemas de ecuaciones algebraicas, que pueden ser lineales o no, según la ecuación diferencial de partida. ¿Cómo serán resueltas estas ecuaciones? ¿Podremos valernos de métodos directos? ¿O estaremos obligados a aproximaciones sucesivas por métodos iterativos? Se abren ante nosotros muchas posibles vías por las cuales proseguir. El análisis numérico tendrá algo que decir de cada una de ellas. Cada modo individual de proceder se conoce como «algoritmo».

Tras haber obtenido alguna clase de solución del problema mediante un algoritmo, el análisis numérico trata de establecer acotaciones relativas a cuánto puede llegar a diferir la solución calculada de la solución verdadera, aunque desconocida. Dejando aparte las equivocaciones burdas (es decir, fallos de la máquina, errores de programación, y demás errores humanos) habrán de surgir errores a consecuencia de haber convertido en discretas variables que eran continuas, del truncamiento de procesos infinitos o de la conversión en finitas de expresiones infinitas, además de que las máquinas de cálculo no operan con precisión infinita, sino que manejan, por ejemplo, 8 cifras decimales exactas. El análisis numérico se esfuerza en dar un análisis del error correspondiente a cada algoritmo. Los problemas de esta naturaleza presentan grandes dificultades, y las cotas de error, cuando es posible obtenerlas, pueden ser deterministas o estadísticas. Pueden ser acotaciones a priori o a posteriori, es decir, cotas calculables antes de efectuar el cómputo principal, o cotas que requieren que se realice el cómputo entero de antemano. Las cotas pueden ser sólo aproximadas y pueden ser asintóticas. Finalmente, pueden ser cotas que computa el propio ordenador.

Dentro del análisis de error, el análisis numérico tiene que examinar incluso cómo se reconoce que se ha encontrado una buena solución, cuando se ha encontrado alguna. ¿Qué criterio determina la bondad de las soluciones? Puede haber varios. A título de ejemplo muy sencillo, supongamos que estemos resolviendo nada más una ecuación \(f(x)=0\), y que la respuesta matemáticamente exacta sea \(x^*\). Por computación se ha obtenido una solución \(\overline{x}\). ¿Será \(\overline{x}\) tenida por una buena solución cuando \(|\overline{x}-x^*|\) sea pequeño? ¿O bien la solución será buena cuando \(f(\overline{x})\) sea aproximadamente igual a \(0\)? Habida cuenta de que probablemente no podamos calcular \(f\) con exactitud, sino tan sólo con una \(\bar{f}\) aproximada, ¿deberíamos decir, quizá, que \(\overline{x}\) es una buena solución si \(\bar{f}(\overline{x})\) es aproximadamente \(0\)? Al utilizar distintos criterios se puede llegar a soluciones ampliamente diferentes.

Una vez obtenida una solución razonable de un problema podemos estar interesados en mejorarla. ¿Será posible lograr soluciones de precisión creciente mediante un tipo fijo de algortimos? El análisis numérico tiene alguna información al respecto, y la teoría resultante, conocida como teoría de convergencia, es una de las principales facetas de esta disciplina.

Así pues, el análisis numérico se ocupa tanto de las estrategias aplicables a la computación como de la evaluación de los resultados obtenidos. El análisis numérico completo de un problema (que, por desgracia, no es frecuente llegar a conseguir) tendría que consistir en

  1. La formación de algoritmos.
  2. El análisis del error, incluidos los errores de truncamiento y redondeo.
  3. El estudio de la convergencia, incluido el de la tasa o velocidad de convergencia.
  4. La comparación de algoritmos, para juzgar la utilidad relativa de diferentes algoritmos en diferentes situaciones.

El espíritu algorítmico puro quedaría satisfecho ya con los pasos 1 y 4, esto es, la invención de algoritmos y su ensayo en problemas típicos para comprobar cómo funcionan.

Al pedir un cuidadoso análisis del error, así como la demostración de convergencia y el estudio de la tasa de convergencia, estamos presentando nuestros respetos a la concepción dialéctica.

La actitud algorítmica no tiene necesidad de negar a la dialéctica, pero sí se niega a verse subordinada a ella. Es decir, los buenos algoritmos se seguirán utilizando, aun cuando no tengamos demostraciones rigurosas, sino mera experiencia computacional para decirnos qué es lo bueno.

Sobre Pedro Castro Ortega

Profesor de Matemáticas en el IES "Fernando de Mena" de Socuéllamos (Ciudad Real, Castilla-La Mancha).

Comentar

Su dirección de correo electrónico no será publicada.Los campos necesarios están marcados *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

x

Check Also

Las matemáticas no dejan de ser un juego: el lenguaje de las matemáticas

Las matemáticas no dejan de ser un juego. Un juego con unas reglas muy bien ...

Argumentos a favor del cálculo mental

Este artículo se ha tomado del libro «Festival matemático. 50 pasatiempos y curiosidades«, de George ...

A %d blogueros les gusta esto: