La solución numérica del problema de los tres banqueros
Esta entrada no creo que interese a casi nadie pero si han sentido alguna vez la embriaguez del Eureka... entonces ¡adelante!
La mente humana es estupenda para muchas cosas, pero no para hacer cálculos matemáticos. Somos lentos y nos equivocamos. Yo, en particular, tengo muchas dificultades con las tareas repetitivas. Tal vez por esto, desde que era un niño me fascinaron las calculadoras. Recuerdo la que mi padre compró en Andorra, en el 73, que hacía las cuatro operaciones básicas y raíces cuadradas. Yo pasaba horas y horas jugando con ella (a hurtadillas), pulsando una y otra vez la tecla de la raíz cuadrada, observando fascinado como el número de la pantalla verde cada vez se parecía más y más a 1.
¿Como era posible que aquella máquina pudiera hacer operaciones que a mi me costaban tanto? Decidí que la calculadora debía de tener almacenadas en su memoria todas las operaciones posibles con sus resultados. La memoria me parecía una cualidad más mecánica que la inteligencia (o eso me parecía a mi entonces que era necesario para hacer los cálculos) necesaria para hacer los cálculos. Pero esa no es la respuesta. En esta tarde de viernes especialmente melancólica puedo recordar exactamente el olor de plástico de aquella calculadora, pero realmente yo quería hablarles de la solución de sistemas de ecuaciones no-lineales, como el problema de los banqueros que planteamos el otro día.
Este es un asunto realmente complejo en el caso más general, y que no tiene lo que se llama solución analítica: no puede resolverse con lápiz, papel y una calculadora. Hace falta un ordenador para resolverlo, para encontrar lo que se llama una solución numérica. Tal vez se sorprendan si les digo que la mayor parte de los problemas matemáticos en ciencias e ingeniería son de esta clase. Los matemáticos -algunos matemáticos- desprecian las soluciones numéricas como simples aproximaciones. Otros, por el contrario, aceptan con naturalidad que desde 1945 los ordenadores han dado una nueva vida a las matemáticas.
Ahora, más que nunca, es necesario saber matemáticas. Lo que no hace, por el momento, ningún ordenador, es plantear las ecuaciones a partir del lenguaje natural. Me dicen que hoy en día los estudiantes tienen otras habilidades: saben menos mates pero pueden buscar en el google. Y yo me pregunto si alguno de ellos sabe como funciona google por dentro, o si les interesa, o si lo aceptan simplemente como un nuevo Dios al que hay que adorar.
Después de esta larga introducción, quisiera explicarles como pueden resolver el problema de los tres banqueros en pocos minutos con un ordenador. Yo les recomiendo que utilicen Matlab (de pago) o Octave (gratis). Octave se puede instalar en Linux, Mac o Windows.
Recordemos el enunciado:
"Tres banqueros se reparten un saco de pepitas de oro, de tal forma que: (1) La suma de los cuadrados de los pesos de cada una de las partes es igual a 1000. (2) Al primero le corresponden 24 gramos más que los otros dos juntos. (3) Diez veces la parte del primero es igual al cubo de la parte del tercero"
El programa que lo resuelve es este:
e = @(x) [ x(1)^2+x(2)^2+x(3)^2-1000,...
x(1)-x(2)-x(3)-24,...
10*x(1)-x(3)^3 ];
x=fsolve(e,[10 10 10])
e(x)
La función "e" (este nombre es arbitrario) retorna un vector de tres componentes, el resultado de evaluar las ecuaciones. fsolve es en realidad donde se hace hace todo el trabajo. Un algoritmo busca el valor del vector x que hace que el resultado de llamar a la función "e" sea 0, es decir, que satisface las ecuaciones. Finalmente, cuando tenemos la respuesta, comprobamos que es correcta. Los resultados obtenidos son:
Bueno, así de fácil es.. siento si he decepcionado a alguien. La gracia, naturalmente, es saber como está programada fsolve. Esto, al igual que el funcionamiento de la calculadora, no es tan complicado. Nada lo es, se trata de no tener miedo de ir aprendiendo. Otro día se lo cuento, si hoy no se han aburrido demasiado. Y si han llegado hasta aquí, quiero felicitarles y les pido que me dejen un comentario, basta con un simple ":)" que me haga sentir razonablemente útil.
La mente humana es estupenda para muchas cosas, pero no para hacer cálculos matemáticos. Somos lentos y nos equivocamos. Yo, en particular, tengo muchas dificultades con las tareas repetitivas. Tal vez por esto, desde que era un niño me fascinaron las calculadoras. Recuerdo la que mi padre compró en Andorra, en el 73, que hacía las cuatro operaciones básicas y raíces cuadradas. Yo pasaba horas y horas jugando con ella (a hurtadillas), pulsando una y otra vez la tecla de la raíz cuadrada, observando fascinado como el número de la pantalla verde cada vez se parecía más y más a 1.
¿Como era posible que aquella máquina pudiera hacer operaciones que a mi me costaban tanto? Decidí que la calculadora debía de tener almacenadas en su memoria todas las operaciones posibles con sus resultados. La memoria me parecía una cualidad más mecánica que la inteligencia (o eso me parecía a mi entonces que era necesario para hacer los cálculos) necesaria para hacer los cálculos. Pero esa no es la respuesta. En esta tarde de viernes especialmente melancólica puedo recordar exactamente el olor de plástico de aquella calculadora, pero realmente yo quería hablarles de la solución de sistemas de ecuaciones no-lineales, como el problema de los banqueros que planteamos el otro día.
Este es un asunto realmente complejo en el caso más general, y que no tiene lo que se llama solución analítica: no puede resolverse con lápiz, papel y una calculadora. Hace falta un ordenador para resolverlo, para encontrar lo que se llama una solución numérica. Tal vez se sorprendan si les digo que la mayor parte de los problemas matemáticos en ciencias e ingeniería son de esta clase. Los matemáticos -algunos matemáticos- desprecian las soluciones numéricas como simples aproximaciones. Otros, por el contrario, aceptan con naturalidad que desde 1945 los ordenadores han dado una nueva vida a las matemáticas.
Ahora, más que nunca, es necesario saber matemáticas. Lo que no hace, por el momento, ningún ordenador, es plantear las ecuaciones a partir del lenguaje natural. Me dicen que hoy en día los estudiantes tienen otras habilidades: saben menos mates pero pueden buscar en el google. Y yo me pregunto si alguno de ellos sabe como funciona google por dentro, o si les interesa, o si lo aceptan simplemente como un nuevo Dios al que hay que adorar.
Después de esta larga introducción, quisiera explicarles como pueden resolver el problema de los tres banqueros en pocos minutos con un ordenador. Yo les recomiendo que utilicen Matlab (de pago) o Octave (gratis). Octave se puede instalar en Linux, Mac o Windows.
Recordemos el enunciado:
"Tres banqueros se reparten un saco de pepitas de oro, de tal forma que: (1) La suma de los cuadrados de los pesos de cada una de las partes es igual a 1000. (2) Al primero le corresponden 24 gramos más que los otros dos juntos. (3) Diez veces la parte del primero es igual al cubo de la parte del tercero"
El programa que lo resuelve es este:
e = @(x) [ x(1)^2+x(2)^2+x(3)^2-1000,...
x(1)-x(2)-x(3)-24,...
10*x(1)-x(3)^3 ];
x=fsolve(e,[10 10 10])
La función "e" (este nombre es arbitrario) retorna un vector de tres componentes, el resultado de evaluar las ecuaciones. fsolve es en realidad donde se hace hace todo el trabajo. Un algoritmo busca el valor del vector x que hace que el resultado de llamar a la función "e" sea 0, es decir, que satisface las ecuaciones. Finalmente, cuando tenemos la respuesta, comprobamos que es correcta. Los resultados obtenidos son:
octave:1> tresbanqueros
x =
30.89151 0.13151 6.75999
ans =
2.2058e-05 -8.1712e-14 -1.2794e-06
x =
30.89151 0.13151 6.75999
ans =
2.2058e-05 -8.1712e-14 -1.2794e-06
Bueno, así de fácil es.. siento si he decepcionado a alguien. La gracia, naturalmente, es saber como está programada fsolve. Esto, al igual que el funcionamiento de la calculadora, no es tan complicado. Nada lo es, se trata de no tener miedo de ir aprendiendo. Otro día se lo cuento, si hoy no se han aburrido demasiado. Y si han llegado hasta aquí, quiero felicitarles y les pido que me dejen un comentario, basta con un simple ":)" que me haga sentir razonablemente útil.
Comentarios
como dije, auque fuí de ciencias, la vida me ha reconvertido a letras...
y mi pregunta, como resolvemos la equación de Black-Scholes?
"tiene" solución?
;-)
s@lut "mestre"!
Un amigo que acabo la tesis poco antes que yo se fue a trabajar de analista financiero, asesorando a esos sofisticados estraperlistas. En dos semanas pasó a ganar 10 veces más que yo (¿o eran 100?).
No se que decirte, no conozco ese tema más allá de la frase inicial, inspirada en la sabiduría popular.
recuerdo que en el colegio nos obligaron a comprar una texas instruments TI-30, por entonces, una auténtica revolución. aquella calculadora sabía hacer de todo y tenía un montón de teclas con todo tipo de símbolos y funciones.
sin embargo, no tardé mucho en frustrarme al ver que a la hora de plantear ecuaciones, no existía la opción o teclita mágica donde poner "si pepito tiene nueve manzanas más que fulanito, y fulanito tiene cuatro menos que menganito...". o sea, la calculadora servía, pero a medias. en el fondo no era más que una especie de bastón.
por otra parte, me encantaba hacer potencias hasta que la calculadora daba error. (aún no sé si el error se debía a que aquella máquina no sabía calcularlo o si simplemente la pantalla no tenía suficientes dígitos, eso lo sabrá seguramente vd). en todo caso, ver la "E" en el margen izquierdo de la pantalla me producía una satisfacción inmensa: de alguna manera demostraba que aquella máquina "superlista" también tenía sus limitaciones!
de todas maneras, durante estos días, y dado que los personajes del problema eran banqueros, no he parado de decirme que el verdadero problema de las matemáticas está en no poder calcular el factor humano. (el mismo problema tiene las "ciencias económicas")
¿de qué serviría todo el planteamiento si los banqueros contabilizasen sus cantidades teniendo en cuenta unos intereses futuros por habérselas prestado a terceras personas?
(siento haberme explayado tanto),
atentamente,
"casi nadie" ;)
Un saludo!
Son bonitas las matemáticas,¿o no?
Saludos
Javier Río.
Mi Casio se queda corta ;)
Si quieres te propongo un problema para f solve. Ya me dirás.
Y si han llegado hasta aquí
...
Qué bonita me parece esta expresión.
:)
(Con tu permiso un beso muy fuerte para Osselin)
Beso fuerte para ti.
B.N.C.M.
...besos fuertes para todos los que hemos y han llegado hasta aquí,... :)
B.
Lo acabo de comprobar espero no haberme equivocado.
x6+y6+z6-1000 = 0 aparece de alguna forma en una famosa frase de Einstein sobre Dios.
¿Quién encuentra la relación?
Mathematica también es una opción, de hecho, si los pesos pudieran ser negativos o complejos también podríamos dar alguna solución.
:-)
:-)
:-)
:-)
http://www.wolframalpha.com
Si uno es de ciencias es un sitio maravilloso (o eso me parece a mi).
Para resolver el problema que propones basta con escribir:
x²+y²+z²=1000; x=y+z+24; 10x=z³
Se pulsa intro y se espera un momento. Ya está.
¿Que más sabe hacer Wolfram alpha?
http://www.wolframalpha.com/examples/
;-)
Si se aumenta la precisión el resultado es algo así como:
x =
30.8915065151588 0.131511700325023 6.75999481483377
Esto debería cuadrar mucho mejor.
Lo de la frase no lo se.
Además lo que hacen es ir a un montón de bases de datos con datos contrastados, lo que da bastante seguridad en los resultados.
Lo mejor como siempre es probar. Algunas sugerencias:
y=x²-34x
barcelona current weather
gold
y lo que se os ocurra.
Siempre sale algo, y es gratis.
De todos modos, octave no es complicado y se pueden hacer muchas cosas. Y es gratis. En fin, no hay una sola herramienta para todo.
Yo lo había pensado más simplificado, agrupando las tres ecuaciones en una sola para que quedara en funcion de una sola variable. Se puede solucionar con una fzero. Pero claro, en la transformación se puede introducir algún error.
A los alumnos les digo que lo prueben de las dos formas y que comparen el número de iteraciones de los dos métodos.
En todo caso, los alumnos encuentran siempre los mayores problemas en el planteamiento de las ecuaciones. Son capaces de aprender mecánicamente cualquier cosa, pero no les preguntes algo que vaya un poco más allá...
Tienes razón, el problema suele estar en el planteamiento.
Otro día, si os interesa, se puede hablar de como funciona fsolve por dentro.. no es nada fácil, pero se puede entender.
Estamos hablando de resultados ajustados a la cienbillonésima lo que me imagino que en según que casos de ingeniería puede hacer variar un resultado. NO es mi campo y no losé.
Pero fijate que como pedágogo lo primero que te pregunté en la entrada anterior fue:"Debemos dar por ciertas las igualdades propuestas?"
Y ahora he hecho lo mismo "¡: debia dar por cierta la solución 7,5999 como cubo perfecto de a. sin comprobarlo ?Porque tratándose de oro y de ladrones el cubo debe ser perfecto ;)
Con esto vuelvo a la infancia y a mi oficio, porque a mis alumnos suelo decirles "No doneu cap afirmació d'un problema per certa".
Lo que a mi me ha parecido más interesante de esta experiencia en tu blog es que conociendo de memoria la lista de los cuadrados perfectos hasta 50 el intervalo debía ser entre 25 y 31 porque 32 al cuadrado ya pasa de 1000.
Que las únicas combinaciones próximas a 30 y 31 con resultado cercanoa mil obligaban a 7 al cuadrado y a 1 al cuadrado con intervalos de ajuste decimal.
Sin lápiz, sin papel, sin calculadora , sin ordenador.
Deberíamos aspirar a que unalumno de 4º de ESO o de Bachillerato, o de 1º de facultad incluso pudiera realizar cálculos aproximativos, tanteos, intuiciones y luego darles una calculadora online. Y después de todo ello enseñarles a dudar del resultado hasta que pueda llegarse al c.q.d (conforme quería demostrarse) la frase con la que mi admirado profesor de matemáticas de bachillerato siempre acababa sus demostraciones mientras nosotros nos quedábamos con la boca abierta.
Pero ese tipo de enseñanza ya no existe. Desde la LOGSE que el café para todos pedagógico ha obligado a que los niños vayan dos o tres cursos por detrás de las matemátioas que podrían desarrollar.
Tienen libros para tontos y los porfesores no pueden suspender a 18 porque sería un escándalo. eso también lo entiendo. No se puede luchar contra corriente.
Disfruto mucho con tu blog Frikosal. Eres el tipo más interesante que he conocido en la red y llevo tanto tiempo como tú en esto (Te acuerdas de Le Mosquito?). Sabes que te lo agradezco mucho, de verdad. me dio miedo cuando te fuiste a Facebook.
Pues verás, a pesar de todo, incluso con buena educación no es suficiente. Yo que tengo catalogadas ciertas capacidades no tengo apenas inteligencia emocional. A pesar de todo he acabado de simple maestrillo , cuando podía haber llegado mucho más lejos.
Buena educación sí, talento, necesario, suerte, imprescindible, trabajo mucho. Pero además hay que tener mucha inteligencia emocional. Y yo no la tengo.
Pero mi hijo sí.
Una infancia feliz y una buena educación paterna, exigente y amorosa, multiplican por diez un CI. Pero hoy en día hay tan pocos niños realmente felices!
Hay muchos niños contentos pero pocos felices.
Con respecto a la ecuación si cambiamos de miembro -1 nos sale una expresión cuya interpretación gráfica es un cubo. O sea un dado.
Y como dijo Einstein "Dios no juega a los dados"
Tus posts siempre nos hacen ir más allá. Pensar.Nos haces disfrutar Frikosal. Gracias por ser así.
Esta ecuación tiene la particularidad de que un error pequeño en la solución implica un error grande en las ecuaciones. No hace falta tanta exactitud para nada, pero es una buena cosa estar seguros de que nuestro método de cálculo es capaz de encontrar la solución exacta de un problema "hasta la precisión de la máquina". Un pequeño error puede ser un síntoma de que algo grave está sucediendo, de que la ecuación realmente no se ha resuelto. A veces hay cosas raras, puntos que "casi" resuelven el sistema pero que no son realmente la solución. Un amigo se pasó meses con un problema parecido, solo que con muchas más incógnitas.
Gracias por tus amables comentarios.
Y un buen maestro es una gran cosa, puede ser determinante en la vida de los alumnos. Basta con un solo buen maestro para despertar la chispa en una persona que la tenga.
Lo de los libros, tienes toda la razón. Hay que dejar que cada uno se desarrolle a su ritmo, sin frustrar a nadie, claro.
Un post muy interesante. Yo me quedé en plantear el sistema de ecuaciones :)
Pero, a mi en particular me parecio más difícil el primer problema que el de los banqueros. La única complicación que le veo es resolver el polinomio de grado 6. Pero tranquilamente se podrían aproximar las raíces de ese polinomio con el grado de precisión que uno desee en un papel al igual que con una computadora. La diferencia está simplemente en que la computadora hace en segundos lo que tomaría muchas horas. Es una cuestión solamente de hacer cuentas, más de saber y de tener los instrumentos, que de "ser inteligente".
En estos problemas matemáticos si no se saben plantear las ecuaciones da igual las herramientas de que se disponga.
Uf!! ... y no digamos la versión del wolframalpha, ni siquiera requiere una sintaxis propia!!!. Es casi como hablarle.
No sé si estos ejemplos apoyan o atacan a sus dos últimas entradas. ;)
Lo malo de las calculadoras es que te obligan a confiar en que el resultado és el correcto, pero por otro lado, superado este escollo, los cálculos pasan a ser autos de fe.
Recuerdo todavia cuando intentaba explicar a un chaval porqué no existe la división por cero, y no había manera, hasta que le dije: "a ver, prueba a hacerlo con la calculadora, a ver que pasa". Conclusión: si una calculadora que sabe más que yo no puede, yo tampoco lo voy a poder, así se acabó la discusión. Batalla tristemente ganada pero.....cómo pondrá en duda este chaval todo lo que sale por una pantalla, que no es poco hoy en dia?
Lo malo de las calculadoras es que te obligan a confiar en que el resultado és el correcto, pero por otro lado, superado este escollo, los cálculos pasan a ser autos de fe.
Recuerdo todavia cuando intentaba explicar a un chaval porqué no existe la división por cero, y no había manera, hasta que le dije: "a ver, prueba a hacerlo con la calculadora, a ver que pasa". Conclusión: si una calculadora que sabe más que yo no puede, yo tampoco lo voy a poder, así se acabó la discusión. Batalla tristemente ganada pero.....cómo pondrá en duda este chaval todo lo que sale por una pantalla, que no es poco hoy en dia?