39 votos

Las gotas de lluvia cayendo sobre una mesa

Supongamos que usted tiene una mesa circular de radio $R$. Esta tabla ha sido dejado afuera, y empieza a llover a una tasa constante de una gota por segundo. Las gotas, que pueden ser considerados puntos de caída, sólo la tierra, de modo tal que impactan sobre la superficie de la mesa. Una vez que la huelga de la mesa, se forma un charco de radio $r$, centrado en su punto de impacto. ¿Cuál es el número esperado de las gotitas que se necesitan para cubrir la tabla en el agua?

La respuesta debe ser a la izquierda en términos de $R$ y $r$. Sin embargo, si usted puede simular esto, mientras que el cambio de la $r$ y $R$, de modo que algunos de regresión pueden ser aplicados para encontrar aproximado de la relación, que sería bueno también. Realmente me gustaría algo de intuición en cuanto a cómo los dos están relacionados.

He intentado descomponer el problema considerando sólo el 1-dimensional caso con segmentos de línea, pero incluso su solución ha eludido a mí. Un posible punto de partida podría ser el discretos caso de canicas cayendo en cubos.

La siguiente edición fue sugerido por Jbeuh:

Una manera más formal, reformulación del problema :

Considere la posibilidad de una secuencia de $X_1,\ldots,X_n$ de variables aleatorias independientes siguiendo una distribución uniforme en un disco $D$ de radio $R$. Por cada $i$, vamos a $C_i$ ser el disco centrado en $X_i$ con radio $r$. Deja $$ Y ser los primeros $i$ tal que los discos $C_1,\ldots,C_i$ forma una cubierta de $D$. ¿Cuál es el valor esperado de $Y$?

8voto

BBlake Puntos310

Permítame hacer algunos de discretización aproximaciones a un círculo. Definir un círculo de radio $r$ en la ubicación $\bf x$ como el conjunto de todos los puntos $\bf$ y en un entramado en $\mathbb{Z}_d$ donde $\|{\bf x}-{\bf y}\|_2<r$. Esto no es malo cuando $r \gg 1$, se muestra a continuación es de un radio de 100 "círculo":

enter image description here

La aproximación empeora cuando $i<10$, así que vamos a limitar todas las gotitas de este tamaño. Código hasta un simple Monte Carlo ejemplo hacemos un cuadrado de área $$ cuya longitud es de $2R + 2r$, y poner una mesa circular en el centro de radio $R$ positiva con máscara. Elija los puntos en $Un$ y mantenerlos si están dentro del radio de la $R$. Para cada punto seleccionado, restar una máscara circular de radio $r$. Continuar hasta que la circular de la tabla está vacía y contar las gotas necesarias. Un ejemplo de esto en movimiento se ve como:

enter image description here

Una de series de tiempo de la sesión de la zona restante para una carrera individual:

enter image description here

Corrí 10 ensayos para $i \in 10..R-1$ y se representan la media con el std dev como la barra de error.

enter image description here

Estoy en una pérdida para describir la función - la mejor opción que se me ocurrió (que realmente no es un ajuste en todo) fue de $c \exp{(-17.9 (r/R)^{-1.6})}$. Al menos, puedo decir que se cae más rápido que una exponencial.

Para la posteridad y la integridad, el código que escribí está por debajo. Tenga en cuenta que usted puede generalizar a $d$ dimensiones!

from numpy import *

def circle(radius, dimension):
    A = zeros((2*radius+1,)*dimension)
    for idx in ndindex(A.shape):
        coord = array(idx) - radius # recenter
        r     = dot(coord, coord)
        A[idx] = r
    B = zeros(A.shape,dtype=bool)
    B[A<radius**2] = True
    return B

def spot_on_table(dimension):
    table_r_squared = table_r ** 2
    r2 = table_r_squared+1
    max_dim = 2*table_r
    while r2 > table_r_squared:
        pt = random.randint(-max_dim,max_dim,dimension)
        r2  = dot(pt,pt)
    return pt

def raindrop(table, droplet, loc, add=False):
    r = droplet.shape[0]/2
    center = array(table.shape[0])/2
    idx = [slice(center-r+x, center+r+1+x) for x in loc]
    idx = tuple(idx)

    if add: table[idx] += droplet
    else  : table[idx] *= ~droplet

def raindrop_question(dimension, droplet_r, table_r):
    random.seed()
    buff = droplet_r

    # Create the table
    table = zeros((2*table_r+1+2*buff,)*dimension)
    raindrop(table,circle(table_r,dimension), zeros(dimension), add=True)

    # Let it rain!
    counter = 0
    while table.any():
        raindrop(table,circle(droplet_r,dimension), spot_on_table(dimension))
        counter += 1

    return (dimension, droplet_r, table_r), counter

def CB(sol):
    print sol

import multiprocessing, itertools

dimension = 2
table_r   = 100
droplet_r = arange(10,table_r)

P = multiprocessing.Pool(16)

for r in droplet_r:
    for n in xrange(10):
        sol = P.apply_async(raindrop_question, (dimension, r, table_r),
                            callback=CB)
P.close()
P.join()

8voto

mjqxxxx Puntos22955

Para cualquier cubrimiento de la región de destino con formas de diámetro $\le r$, si una sola gota centro se encuentra dentro de cada forma, esto es suficiente para cubrir la totalidad de la región con las gotas. Esto puede ser usado para calcular un límite superior en el tiempo de espera para cubrir la mesa. Tenga en cuenta que este límite superior será más estrictas cuando el número de formas es menor; es decir, queremos que el área de cada forma de ser tan grande como sea posible. Supongamos que la cubran los usos de hexágonos regulares de diámetro $r$: estos han de área $3r^2\sqrt{3}/8$, por lo que habrá sobre $$ N_{\rm hex} = \frac{8\pi}{3\sqrt{3}}\left(\frac{R}{r}\right)^2 $$ de ellos. El cupón de coleccionista problema, a continuación, establece que el tiempo de espera para golpear a todos los hexágonos es $E[T_{\rm hex}] \sim N_{\rm hex}\ln N_{\rm hex}$.

Por otro lado, para el embalaje de la región de destino con los discos de radio $r$, es necesario por lo menos una gota de centro a caer dentro de cada uno de los discos en orden para la región de destino a cubrir (en particular, el disco de los centros no puede ser cubierto de otra manera). Esto puede ser usado para proporcionar un límite inferior en el tiempo esperado. Aquí volvemos a usar un empaquetamiento hexagonal, que cubre una fracción $\pi/\sqrt{12}$ de la superficie de la tabla, pero ahora el área del hexágono es de $2r^2\sqrt{3}$. El número de discos es entonces $$ N_{\rm disco}=\frac{\pi}{2\sqrt{3}}\left(\frac{R}{r}\right)^2=\frac{3}{16}N_{\rm hex}. $$ El cupón de coleccionista problema en este caso indica que el tiempo de espera para golpear todos los discos es de $E[T_{\rm disco}] \sim \frac{\sqrt{12}}{\pi}N_{\rm disco}\ln N_{\rm disco}=\left(\frac{R}{r}\right)^{2}\ln N_{\rm disco}$. Nota: el factor adicional de $\sqrt{12}/\pi$, que proviene del hecho de que cada gota sólo "recoge un cupón" con una probabilidad de $\pi/\sqrt{12}$.

Poner estos límites, tenemos que el tiempo de espera para cubrir la mesa satisface $$ 2 \mu^2 \ln \mu + O(\mu^2) = E[T_{\rm disco}] \le E[T] \le E[T_{\rm hex}] = \frac{16\pi}{3\sqrt{3}} \mu^2 \ln \mu + O(\mu^2) $$ por $\mu \equiv (R/r) \gg 1$. En particular, el tiempo de espera es de probada $\Theta(\mu^2 \ln \mu)$, con un factor multiplicativo acotada entre $2$ y $9.68$.

5voto

dave Puntos224

Un crudo límite inferior está dado por

$E(Y) \gt \frac{2 \pi}{\sqrt{27}} (\frac{R}{r})^2$.

De esta manera se sigue por el primer considerando de la colocación de radio-$r$ discos no al azar para cubrir el radio más grande-$R$ disco. De acuerdo a un papel por G. F. Tóth (p. 260), el número de radio-$r$ discos necesarios para hacerlo es mayor que $m = \frac{2 \pi}{\sqrt{27}} (\frac{R}{r})^2$; en consecuencia, al azar de la colocación de estos discos puede alcanzar la total cobertura sólo si hay más de $m$ de ellos, lo que implica $Y \gt m$ y por tanto $E(Y) \gt m$.

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: