4 votos

De pie en el centro de un cubo y caminar hasta la mitad de una pared de campo de visión

En mi programación python clase de uno de los bonus de los problemas es este:

Supongamos usted se encuentra en el centro exacto de un cubo. Si pudieras mirar a todos a su alrededor en todas las direcciones, cada una de las paredes del cubo que se ocupan de 1/6 de su campo de visión. Supongamos que usted se mueva hacia una de las paredes de modo que ahora usted está a medio camino entre éste y el centro del cubo. Qué fracción de su campo de visión es ahora tomado por el más cercano a la pared? Sugerencia: utilice una simulación de Monte Carlo que en repetidas ocasiones se "ve" en una dirección al azar y se cuenta cuántas veces se ve la pared.

Tengo una idea de lo que el programa debe hacer gracias a la sugerencia: 1. Definir los límites de una pared 2. "Mira" en una dirección al azar 3. La cuenta de cuantas veces la simulación "ve" la pared

El autor afirma que este problema puede ser resuelto con la fantasía "geometría analítica", así que si alguien me explicara cómo resolver este matemáticamente, yo tal vez podría ir sobre la construcción de el programa a partir de eso. Tengo algunas ideas, pero son solo ideas... Principalmente, definir el campo de visión como una esfera que abarca el cubo. A continuación, en el caso base, en el centro de cada pared lleva exactamente a 1/6 de su campo de visión. También, algo acerca de un "ángulo sólido" podría ser parte de ella. http://en.wikipedia.org/wiki/Solid_angle

Yo podría estar completamente equivocado de la pista aquí, así que cualquier ayuda sería muy apreciada por mí (y mi maestro). Ah, y por cierto, yo estoy en 9no grado en una clase de cálculo O_O

1voto

bubba Puntos 16773

Supongamos que hemos creado un sistema de coordenadas cuyo origen está en el centro del cubo, las caras del cubo son $x=\pm2$, $y=\pm2$, $z=\pm2$, y el nuevo ojo-punto es $E=(1,0,0)$.

Vamos a disparar "rayos" hacia el exterior de la $E$, y el recuento de la fracción que impactó en el rostro de $F$ donde $x=2$.

Supongamos que el uso de tres números aleatorios $u$, $v$, $w$ para determinar el vector de dirección de una muestra de rayos. Entonces la ecuación del rayo de la línea es: $$ \frac{x-1}{u} = \frac{y}{v} = \frac{z}{w} $$ O, en forma paramétrica, $$ R(t) = (1,0,0) + t(u,v,w) \quad (0 \le t < \infty) $$ Donde esta línea golpea el avión $x=2$,$1 + tu = 2$, lo $t = 1/u$. En el punto de intersección, tenemos $y = tv = v/u$$z = tw = w/u$. Este punto se encuentra en la cara $F$ si $|y| \le 2$$|z| \le 2$. Sólo estamos interesados en los puntos de intersección donde $t>0$ (es decir, donde $u>0$).

Así que, en breve, de la reproducción aleatoria de rayos en la dirección $(u,v,w)$ le golpea la cara $F$ si $u>0$, $|v| \le 2u$, y $|w| \le 2u$.

El fuego de un gran número de estos aleatorio rayos, y contar el porcentaje que cumplan estas tres condiciones.

La (pseudo) el código se verá algo como esto

total = some very large number
hits = 0

for i = 1 to total
    u = random()
    v = random()
    w = random()
    if ( u > 0 and abs(v) < 2*u and abs(w) < 2*u ) hits = hits + 1
end

fraction = hits/total

En realidad, este es un muy mal ejemplo de la utilización de Monte-Carlo métodos, ya que pueden ser resueltos fácilmente por simple geometría analítica.

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:

X