¿Qué encontrarás en esta entrada?
- Demostración del problema del vaso de leche y café.
- Extensión a varias iteraciones.
Hace unos días me salió en redes sociales un vídeo de Quantum Fracture sobre un vaso de leche y otro de café. El vídeo se basaba en un problema propuesto por el Instituto de Ciencias Matemáticas un poco antes, y consiste en lo siguiente:
Tienes dos vasos iguales: uno de leche y otro de café. A continuación, tomas una cucharada del vaso de leche, la depositas en el de café y lo mezclas. Seguidamente, coges una cucharada de igual tamaño de la mezcla que ha resultado y la depositas en el de leche. Lo curioso de esto es que la cantidad de café en el vaso que originalmente era de leche es la misma que la de leche en el vaso que originalmente era de café.
La explicación de Quantum Fracture, si bien orientada a la divulgación, me pareció que simplificaba demasiado, partiendo de un supuesto muy concreto en el que el tamaño de la cuchara era la mitad del vaso, y así se puede ver gráficamente que el líquido en vaso ajeno es de 1/3.
Estoy con gripazo, y la cantidad de leche calentita y café que consumo ahora mismo como remedio creo que me autorizan a dar mi opinión, así que ahí voy.
Demostración
Lo primero que hay que hacer es ser riguroso con el lenguaje. Cuando hablamos de "cantidad" nos estamos refiriendo a volumen, ni a moléculas, ni a masa, ni a ninguna otra cosa que no sea el volumen. También vamos a suponer que los líquidos se mezclan perfectamente, de forma totalmente homogénea, y no reaccionan entre sí químicamente de forma que pueda variar la densidad que tenían ambos líquidos antes de la mezcla. Así, 1 l de leche más 1 l de café son 2 l de mezcla.
Con ello, esta es mi demostración:
Script y extensión iterativa
Llegados a este punto pensé: ¿podría generalizarse y repetir el proceso una y otra vez? Y aquí es donde creo prudente recordar que, ante cualquier fallo que detectéis en mis cálculos, estoy haciendo esto con fiebre.
Me puse a programar un bucle iterativo en Octave/Matlab de la siguiente forma:
function [L1,C1,L2,C2] = Cucharadas (N,V,v)
%
% ASTAROTH'S WORLD
% https://astarothsworld.blogspot.com/
%
% Este script calcula N iteraciones del siguiente problema:
%
% Partimos de dos vasos: uno de leche y otro de café, ambos de volumen V.
%A continuación, pasamos una cucharada de tamaño v del vaso de leche al de
%café, y removemos. Después, cogemos otra cucharada del mismo tamaño de la
%mezcla y la devolvemos al vaso de leche. Se trata de ver cuánta leche y
%café componen las dos mezclas finales después de N iteracciones.
%
disp('')
disp('SITUACIÓN INICIAL:')
disp('')
%Inicialización de valores
L1=V;
C1=0;
V1=L1+C1;
L2=0;
C2=V;
V2=L2+C2;
disp(['Volumen total en el vaso 1: ',num2str(V1),' l'])
disp(['Cantidad de leche en el vaso 1: ',num2str(L1),' l'])
disp(['Cantidad de café en el vaso 1: ',num2str(C1),' l'])
disp('')
disp(['Volumen total en el vaso 2: ',num2str(V2),' l'])
disp(['Cantidad de leche en el vaso 2: ',num2str(L2),' l'])
disp(['Cantidad de Café en el vaso 2: ',num2str(C2),' l'])
disp('')
disp(['Volumen en una cucharada: ',num2str(v),' l'])
for i=1:N
rhocini=C1/V1;
rholini=L1/V1;
rhoc=(C2+rhocini*v)/(V2+v);
rhol=(L2+rholini*v)/(V2+v);
L1=L1-rholini*v+rhol*v;
C1=C1-rhocini*v+rhoc*v;
V1=L1+C1;
L2=L2+rholini*v-rhol*v;
C2=C2+rhocini*v-rhoc*v;
V2=L2+C2;
disp('')
disp(['ITERACIÓN: ',num2str(i)])
disp('')
disp(['Volumen total en el vaso 1: ',num2str(V1),' l'])
disp(['Cantidad de leche en el vaso 1: ',num2str(L1),' l (',num2str(L1/V1*100),'%)'])
disp(['Cantidad de café en el vaso 1: ',num2str(C1),' l (',num2str(C1/V1*100),'%)'])
disp('')
disp(['Volumen total en el vaso 2: ',num2str(V2),' l'])
disp(['Cantidad de leche en el vaso 2: ',num2str(L2),' l (',num2str(L2/V2*100),'%)'])
disp(['Cantidad de Café en el vaso 2: ',num2str(C2),' l (',num2str(C2/V2*100),'%)'])
%Graficar:
LA1(i)=L1;
CA1(i)=C1;
VA1(i)=V1;
LA2(i)=L2;
CA2(i)=C2;
VA2(i)=V2;
end
x=1:N;
close all;
subplot(1,2,1)
plot(x,LA1,'b--')
hold on
title('VOLUMEN DE LECHE Y CAFÉ EN CADA VASO EN CADA ITERACCIÓN')
xlabel('Iteracciones')
ylabel('Volumen (l)')
plot(x,CA1,'k--')
plot(x,LA2,'b+')
plot(x,CA2,'k+')
plot(x,VA1,'b')
plot(x,VA2,'k')
legend('Volumen de leche en el vaso de leche', 'Volumen de café en el vaso de leche','Volumen de leche en el vaso de café', 'Volumen de café en el vaso de café','Volumen total en el vaso de leche','Volumen total en el vaso de café')
subplot(1,2,2)
axis([0 5 0 3])
hold on
rectangle('Position',[1 1 1 0.75],'FaceColor',[L1/V1 L1/V1 L1/V1])
rectangle('Position',[3 1 1 0.75],'FaceColor',[L2/V2 L2/V2 L2/V2])
title('VASOS')
text(1.5,0.7,['Leche: ',num2str(L1/V1*100),'%'],'HorizontalAlignment','center')
text(1.5,0.6,['Café: ',num2str(C1/V1*100),'%'],'HorizontalAlignment','center')
text(3.5,0.7,['Leche: ',num2str(L2/V2*100),'%'],'HorizontalAlignment','center')
text(3.5,0.6,['Café: ',num2str(C2/V2*100),'%'],'HorizontalAlignment','center')
text(1.5,2,'VASO 1','HorizontalAlignment','center')
text(3.5,2,'VASO 2','HorizontalAlignment','center')
Y con él he obtenido los siguientes resultados:
1.- Caso realista: un vaso de unos 250ml, una cuchara de postre 5ml, 1 iteracción
Se verifica, efectivamente, que hay la misma cantidad de café en el vaso de leche que de leche en el de café (un 1,96% del volumen del vaso), conservando cada vaso gran parte de su naturaleza inicial, puesto que la cuchara es muy pequeña en comparación con el volumen de los vasos.
2.- Caso de Quantum Fracture: cuchara con la mitad del volumen que el recipiente
En este caso recuperamos el resultado de 1/3.
3.- Extensión del caso realista: un vaso de unos 250ml, una cuchara de 5ml, 30 iteracciones
Como era de esperar, vemos que se tiende a que ambos vasos se conviertan en mezclas iguales, conservando en cada paso aquello de que la cantidad de café en el primer vaso es la misma que la de leche en el segundo.
4.- Extensión del caso realista: un vaso de unos 250ml, una cuchara de 5ml, 200 iteracciones
Aquí continuamos las iteraciones hasta 200, viendo que efectivamente cada vez las mezclas de ambos vasos son más parecidas entre sí hasta ser casi iguales.
La verdad es que el script lo he hecho un poco a ojo y con fiebre, por lo que no descartaría algún error, pero creo que más o menos reproduce lo que se podría esperar de un caso como este.
Al final, como ya apuntaba algún seguidor de Quantum Fracture, esta propiedad no es tan rara si tenemos en cuenta que partimos de un mismo volumen de leche y café repartido en dos vasos que, al final de cada iteración, acaban con ese mismo volumen. Dada la mezcla que sea en el vaso de café, todo lo que le falte de café para rellenar el vaso tiene que ser necesariamente leche, y el resto de leche debe estar en el otro vaso, y para completar ese otro vaso, sólo hay café.
Así que visto así es más evidente que la cantidad de cualquiera de los líquidos debe ser la misma que su opuesto en el otro vaso, sea cual sea la mezcla. Quizás lo que aporta esta entrada, si es que aporta algo, sea el cálculo exacto de esa cantidad en cada iteración dado el volumen del vaso y la capacidad de la cuchara.


















