6 votos

Puntos aleatorios en concha esférica.

Tengo una esfera de radio $R_1$, y una pequeña esfera concéntrica de radio $R_2$. Vamos a estar centrada en el origen $(0,0,0)$. Necesito generar puntos al azar con densidad uniforme en el volumen entre los dos esfera de las superficies.

Aquí he encontrado una solución para la selección aleatoria de puntos en una esfera de volumen, utilizando

$$\frac{R_s U^{1/3}}{\sqrt{X_1^2 + X_2^2 + X_3^2}} (X_1, X_2, X_3)$$

donde $X_1,X_2,X_3$ son independientes normal de variables aleatorias con media 0 y varianza 1, y $U$ es distribuido uniformemente entre 0 y 1.

Esa estrategia podría utilizarse para mi problema así, la combinación con un rechazo del método:

  1. Generar un punto al azar, $(x,y,z)$ dentro $R_1$, utilizando la solución señalada
  2. Si $x^2 + y^2 + z^2 \leq R_2^2$, volver al paso 1

Pero esto es bastante ineficiente cuando la cáscara esférica es pequeño. Supongo que es posible utilizar un método de transformación para generar puntos entre el$R_1$$R_2$. Se puede hacer esto?

8voto

palehorse Puntos 8268

No hay necesidad de utilizar aceptar-rechazar los métodos de aquí.

Primero generar un punto en la unidad de la esfera ($r=1$). Hay varias maneras, por ejemplo:

$$\theta \sim U[0,2\pi]$$ $$Z_0 \sim U[-1,1]$$ $$X_0=\sqrt{1-Z_0^2} \cos(\theta)$$ $$Y_0=\sqrt{1-Z_0^2} \sin(\theta)$$

A continuación, generar un azar radio de $R$ $[r_1,r_2]$ con densidad proporcional a $r^2$ : en primer lugar generar $T \sim U[r_1^3,r_2^3]$ y, a continuación,

$$R= T^{1/3}$$

(de modo que $f_R(r)=\frac{3}{r_2-r_1}{r^2}$ como se desee)

Finalmente escala: $X=X_0 R$, $Y=Y_0 R$, $Z=Z_0 R$

También es posible generar el punto al azar en el ámbito de la unidad de volumen, como en la cuestión del cuerpo, y, a continuación, traducir+cambiar la escala de la radial.

1voto

David K Puntos 19172

Una muy buena forma de generar variables normales es empezar con los pares de variables uniforme y aplicar un rechazo al método. Si usted está considerando estas variables normales como entrada a un rechazo al método, entonces, ¿por qué no empezar con el uniforme de las variables, de modo que sólo han para hacer un nivel de rechazo?

Se podría generar un punto aleatorio distribuido uniformemente en el volumen de la esfera de radio $R_1$ (con tres uniformes de variables y un rechazo al método) y, a continuación, mover ese punto más lejos del origen mediante la aplicación de una transformación de la forma $r' = f(r)$ ($r$ el original de la distancia desde el origen, $r'$ la distancia después de mover el punto) de modo que el resultado es distribuido uniformemente en la cáscara esférica.

La función de transformación $f$ debe satisfacer $$\int_r^{R_1} t^2 dt = k \int_{f(r)}^{R_1} t^2 dt$$ donde $k = \dfrac{R_1^3}{R_1^3-R_2^3}$ es la relación entre el volumen de la totalidad de la esfera para el volumen de la cáscara esférica. Puedo obtener la relación $$(f(r))^3 = \frac 1k r^3 + \frac{k-1}{k} R_1^3 = \frac{R_1^3-R_2^3}{R_1^3} r^3 + R_2^3 $$ mediante el cálculo de ambas integrales y reordenando términos. Tenga en cuenta que$f(0) = R_2$$f(R_1) = R_1$, como se desee. Otra forma de escribir esto es $$\frac{f(r)}{r} = \left(\frac{R_1^3-R_2^3}{R_1^3} + \frac{R_2^3}{r^3} \right)^{\frac13}.$$

Por lo que el procedimiento es generar tres variables uniforme, $U_1$, $U_2$, y $U_3$ (entre el $-R_1$$R_1$), y calcular el $r = \sqrt{U_1^2 + U_2^2 + U_3^2}.$ Si $r \leq R_1$, el punto deseado dentro de la cáscara esférica es $$(x,y,z) = \left(\frac{R_1^3-R_2^3}{R_1^3} + \frac{R_2^3}{r^3} \right)^{\frac13} (U_1, U_2, U_3).$$ Si $r > R_1$ rechaza las tres variables e inténtelo de nuevo. Usted será capaz de utilizar $\frac\pi6$ de los triples a generar, que es peor que el $\frac\pi4$ de los pares de variables uniforme que usted sería capaz de utilizar a la hora de generar pares de variables normales por el habitual rechazo método, pero mucho mejor que rechazar todo lo que tiene dentro el shell si la cáscara es delgada.

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