1 votos

Característica del movimiento de las partículas

Estoy haciendo un movimiento de partículas sorteando números normales. Los números normales aleatorios sorteados son los ángulos de las direcciones en las que va la partícula. La velocidad de la partícula es constante. Mira cómo se hace esto:

//initializing values  

initial_mean = 0 //initial direction
standard_deviation = pi
number_of_steps = 500
particle_speed = 50 // per second
positions_vector = new Positions_List
positions_vector.push([100, 100]) // push initial position

//starting the simulation

mean = initial_mean
foreach step in number_of_steps, do {
    angle = get_random_normal_number(standard_deviation, mean)
    angle = fix_angle(angle) // keep the angle between 0 and 2*pi
    x = cos(angle)*particle_speed + positions_vector.last_position.x
    y = sin(angle)*particle_speed + positions_vector.last_position.y
    mean = angle //update the direction
    positions_vector.push([x, y])
}

//plotting the result

plot(positions_vector)

Esta es una nueva situación Supongo que tengo que mejorar la resolución del movimiento. Para ello, necesito calcular más puntos, pero seguir haciendo que la partícula se mueva la misma distancia final. Así que he creado un factor de resolución por el que multiplico el número de pasos y divido la velocidad de la partícula por él también, así puedo tener más pasos y mover la misma distancia final. Mira:

mean = initial_mean
resolution_factor = 4 // If I want the motion 4 times more "precise"
foreach step in (number_of_steps * resolution_factor), do {
    angle = get_random_normal_number(standard_deviation, mean)
    angle = fix_angle(angle)
    x = cos(angle)*(particle_speed/resolution_factor) + positions_vector.last_position.x
    y = sin(angle)*(particle_speed/resolution_factor) + positions_vector.last_position.y
    mean = angle
    positions_vector.push([x, y])
}

Ahora, en este caso, voy a tener 2000 pasos, en lugar de 500. Pero la velocidad, ahora, es 1/4 menor para compensar el aumento de pasos.

Este es el problema Cuando aumento este factor de resolución, la "curvatura" del movimiento es "mayor". Mira estos gráficos para mostrar que sucede:

enter image description here

enter image description here

enter image description here

PREGUNTA : ¿Hay alguna forma de mantener la "característica" de movimiento igual independientemente del factor de resolución? Quizás tenga que escalar la distribución reduciendo la desviación estándar para obtener ángulos más pequeños en función del valor del factor de resolución, pero ¿cuál sería la relación entre la desviación estándar y el factor de resolución y por qué? ¡No sólo las respuestas, sino también las pistas serán de gran ayuda!

Código de trabajo en python


Aquí hay algunas parcelas después de la respuesta. ¡Funcionó bien!

Factor de resolución = 5, 20 y 100

enter image description here

enter image description here

enter image description here

1voto

DukeLion Puntos 2341

Hay que escalar la desviación estándar para que la tasa de curvatura siga siendo la misma. Estás sumando un grupo de variables aleatorias con distribución normal, $X_i\sim N(0,\sigma^2)$ para obtener el ángulo $X$ después de $n$ pasos: $$ X=\sum_{i=1}^n X_i $$ También se distribuirá normalmente con varianza $n\sigma^2$ . Ahora considera una suma mayor: $$ X=\sum_{i=1}^{tn} X_i $$ que se distribuirá normalmente con varianza $tn\sigma^2$ .

Usted quiere $tn\sigma^2=n\sigma^2$ Así pues, el conjunto $\sigma\leftarrow\sigma/\sqrt{t}$ .

0voto

user71479 Puntos 56

La anterior es una buena respuesta desde el punto de vista estadístico. Funciona para ángulos pequeños. Felicidades. Pero hay que tener en cuenta que se trata de una aproximación que conviene controlar. Se trata de dos tipos de grupos: rotación - traslación - rotación - traslación (RTRT). El caso sería exacto y la "dinámica" sería independiente del juego de dados si se tratara de grupos conmutativos 2D(1 eje) rotación - rotación - rotación - rotación (RRRR). En otras palabras, la anterior suma de variables estocásticas no es "exacta" ya que esa suma es conmutativa y las operaciones aplicadas (RT)(RT) no lo son para ángulos superiores. Por lo tanto, es conveniente controlar las desviaciones... Supongo que, al final, la "distribución de posiciones" sería más amplia.

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