viernes, febrero 17, 2012

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:

octave:1> tresbanqueros
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.

34 comentarios:

David Álvarez dijo...

:) :O

ric@rd dijo...

he comentado en la entrada original antes de leer la respuesta
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"!

frikosal dijo...

"Tot això, són collonades"

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.

Leti dijo...

me ha gustado mucho más la introducción que la exposición de la solución del problema (espero que no se enfade por eso).

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" ;)

Alytes dijo...

Pues a mi me ha parecido muy interesante. :)

Un saludo!

Javier Río dijo...

:)Lo leí todito mas no entendí nadita.

Son bonitas las matemáticas,¿o no?
Saludos
Javier Río.

Osselin dijo...

Desde luego (f)solve debe ser la clave porque 6.75999 elevado al cubo en mi Casio científica de 1973 da: 308,914405074028 que obviamente no cuadra con 30.89151.
Mi Casio se queda corta ;)

Si quieres te propongo un problema para f solve. Ya me dirás.

MartinAngelair dijo...

...

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.

MartinAngelair dijo...

Vale,...


...besos fuertes para todos los que hemos y han llegado hasta aquí,... :)




B.

Osselin dijo...

Otra adivinanza para hacer boca que tiene que ver con Einstein y con Dios.
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?

Ramon Portillo dijo...

;-)

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.

:-)
:-)
:-)
:-)

Osselin dijo...

Perdón x6 +y6+z6-1 = 0

Erelea dijo...

Amigo Frikosal, creo que te voy a sorprender. Comentas que la gente busca en Google, pero si son matemáticas el mejor sitio es "Wolfram alpha".
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/

frikosal dijo...

Me han hablado de Wolfram alpha, no lo conozco pero por lo que he oído está bien. Tal vez la ventaja de Octave o Matlab sea si hay que hacer cálculos algo más largos o mover muchos datos.

Josep Mª Abadia i Palau dijo...

interesantes las dos entradas y tambien el comentario de Erelea.
;-)

frikosal dijo...

Osselin, es interesante lo que comentas del error, que obviamente no está en tu calculadora. Octave por defecto no es muy preciso en la solución.
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.

Erelea dijo...

Lo interesante de wolfram alpha es que se puede utilizar por todo el mundo sin necesidad de conocimientos especiales. De hecho si he puesto las ecuaciones en mi anterior comentario es para simplemente copiar pegar y pulsar intro. Y si el resultado tiene poca precisión, junto a el basta con pulsar "more digits".

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.

frikosal dijo...

No está nada mal, he puesto "toutatis" y me ha dado los datos del asteroide. Una curiosa mezcla de calculadora y motor de búsqueda (oráculo?).

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.

locoencontrao dijo...

Interesante función anónima de Matlab y resoluciòn con el fsolve.

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á...

frikosal dijo...

Si, se puede poner en un polinomio y debería dar lo mismo.

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.

Osselin dijo...

El problema de la exactitud de un cálculo me imagino que radica en el nivel de tolerancia del resultado con respecto a la solución.

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í.

Belnu dijo...

Si yo no estuviera tan matada por lo que está pasando con mi trabajo y los malabarismos para sobrevivir, juro que superaría el olvido y la pereza y llegaría al final. El post me gusta

frikosal dijo...

No fotem, no estarás tan mal de inteligencia emocional !
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.

frikosal dijo...

Gracias Bel, te llamo un día y nos tomamos un café !

teodorojmartinez dijo...

Me gustaría saber en qué momento dejé de ser de ciencias y me convertí en lo que soy... No hace mucho que yo disfrutaba torturando ecuaciones, y descompilando juegos para trucarlos.

Un post muy interesante. Yo me quedé en plantear el sistema de ecuaciones :)

Francesc Vera dijo...

Com ja et vaig dir, només vaig arribar a les equacions de segon grau (de les integrals i derivades, només recorde el nom). El primer problema era fàcil de resoldre per un sistema d'equacions, però aquest segon em desbordava (tot i plantejar les tres equacions bé), però em quede més tranquil si dius que cal un ordinador per resoldre'l. També jo em pregunte si els estudiants d'avui saben com funciona Google, cada vegada depenem més de tecnologies que no controlem. Que tingues un bon dia!

Bufaforat dijo...

Pues yo me pido una entrada para las hojas de calculo. Que tambien ayudan a resolver un monton de problemas.

Bru Angles dijo...

Me ha encantado el artículo Manel.

Ema dijo...

Me gustaron mucho las 2 entradas :)
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".

Erelea dijo...

Pues sí. Hay muchas herramientas para hacer lo mismo. La clave es "saber lo que estamos haciendo" y ahí es donde entra lo que cada uno ha aprendido (en la escuela o en su casa o donde sea).

En estos problemas matemáticos si no se saben plantear las ecuaciones da igual las herramientas de que se disponga.

Andrés dijo...

Tengo una relación amor odio con Matlab. Es increíble todo lo que se puede hacer con ese programa, pero a veces... averiguar el cómo, puede desquiciar a uno...

Jesús-A dijo...

:)

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. ;)

igniszz dijo...

:) :) :)
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?

igniszz dijo...

:) :) :)
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?