¿Cuáles son algunos algoritmos inesperados que se usan en física y ciencia de materiales?

Un famoso casino presta su nombre a un algoritmo bastante útil en física computacional: Monte Carlo. Los algoritmos de Monte Carlo usan muestreo aleatorio (generalmente de entradas para Física, pero podrían estar en las cadenas de Markov en otros contextos) para producir una distribución de resultados a partir de la cual podemos sacar conclusiones. Incluí el código de un algoritmo MC muy simple para calcular PI en la parte inferior para que aquellos que no estén familiarizados puedan tener una idea de cómo funciona.

Probablemente el ejemplo más simple que puedo explicar es predecir el clima. Tenemos buenas ecuaciones para modelar el clima , desafortunadamente hay dos problemas:

1 / Los sistemas meteorológicos son muy caóticos, lo que significa que son sensibles a las entradas iniciales (temperatura, presión, etc.). Lamentablemente, no tenemos medidas perfectamente precisas de esas entradas para ninguna ubicación.

2 / Al carecer de capacidad computacional infinita, consideramos secciones cúbicas de la atmósfera cuando modelamos. Si bien el volumen promedio de esos cubos ha disminuido con el tiempo (y, por lo tanto, ha mejorado la precisión), sigue siendo imperfecto y, dada la naturaleza caótica del clima, puede provocar errores compuestos.

Entonces, para hacer predicciones, terminamos ejecutando una simulación muchas veces sobre la elección aleatoria de las entradas para cada cubo atmosférico basado en una distribución de probabilidad calculada a partir de los datos imperfectos iniciales. Luego podemos ver temas comunes en esas simulaciones para tener una idea de qué clima es más probable para un área determinada.

Cuando escuchas “60% de probabilidad de lluvia”, realmente significa algo así como “60% de nuestras simulaciones predicen lluvia”.

Método de Monte Carlo en física estadística

[1] ejemplo Monte Carlo algo para calcular Pi:

importar al azar

PRUEBAS = 100000
in_unit_circle = 0.0
para x en rango (PRUEBAS):
# para cada prueba, seleccione un punto aleatorio
# si ese punto está dentro del círculo unitario,
# increment in_unit_circle
x, y = random.random (), random.random ()
si x ** 2 + y ** 2 <1:
in_unit_circle + = 1

print in_unit_circle / PRUEBAS * 4

More Interesting

¿Cuáles son algunas aplicaciones del algoritmo de clasificación de burbujas?

¿Cuál es la diferencia entre la recursión normal y la recursiva de la cola con ejemplos?

Cómo imprimir espacio para los elementos de la matriz

¿Cómo se comparten de forma segura las claves de los algoritmos de cifrado y descifrado entre el emisor y el receptor sin ser interrumpidos por intrusos?

Cómo crear un sistema de clasificación que dependa de tres variables (nivel, resultado y tiempo) cuanto más altas sean las dos primeras, mejor, mientras que por un tiempo, un valor menor es mejor

Alguien en mi escuela secundaria dijo que en realidad no puedo resolver un cubo de Rubik porque tengo que confiar en patrones (algoritmos). ¿Cuán verdadera es esta afirmación?

¿Por qué la clasificación rápida se considera una clasificación inestable?

¿Por qué AUC es una mejor medida del rendimiento de un algoritmo que la precisión?

¿Cuál es el algoritmo de tiempo polinómico de peor caso de más rápido crecimiento utilizado en la práctica?

¿Cuáles son los buenos algoritmos de similitud y métricas para textos cortos (menos de 50 palabras)?

Cómo resolver esto usando programación dinámica

¿Cuál es el problema conmigo si puedo decir cómo funciona el algoritmo pero no puedo escribir el programa para el mismo? ¿Cómo puedo deshacerme de él? ¿Por favor ayuda?

¿Cuál es tu recurso favorito para aprender sobre programación competitiva?

¿Cuál es el algoritmo más extraño que hayas usado?

¿Cuál sería el algoritmo para encontrar subárboles duplicados en un árbol binario?