4 votos

Prueba rápida de Julia/Mandelbrot

He implementado con éxito un generador de conjuntos Julia/Mandelbrot en tiempo real en la GPU. Principalmente por curiosidad, lo que busco ahora es un algoritmo de prueba más rápido.

Idealmente, quiero una función booleana que diga si un punto está dentro del conjunto. Actualmente, esto se realiza de la forma clásica con un montón de iteraciones (quizá 100 o 1.000, o más). En la GPU, a la que no le gusta el código ramificado, esto es problemático.

Especulo que como los Conjuntos de Julia/Mandelbrot son infinitamente complejos, ningún algoritmo de tiempo constante puede dar esa respuesta. Sin embargo, espero que haya al menos algoritmos más rápidos. No me interesa la información sobre la tasa de convergencia; basta con una simple función sí/no.

3voto

John Kramlich Puntos 286

En algunos casos, puede ser más rápido ver si la derivada converge o diverge. Es decir, si se quiere comprobar el punto $z,$ entonces mira $(f^n(z)-f^n(z+h))/h$ para un valor pequeño de $h.$ Si este número es pequeño, (en magnitud) entonces debería estar dentro del conjunto Mandelbrot/Julia, si está fuera, es un número grande. La cuestión es que puedes utilizar un número mucho más pequeño $n$ de lo necesario para comprobar si $f^n(z)$ es grande.

No he oído hablar de una manera de "hacer trampa" y no iterar la función en algún sentido. Podrías ser capaz de acelerar el cómputo precomputando simbólicamente una iteración alta, y optimizar la representación de la salida, para que compute más rápido.

1voto

lhf Puntos 83572

Para el conjunto de Mandelbrot, se puede implementar una prueba rápida para una gran parte de la imagen utilizando el hecho de que se conocen las ecuaciones para el cardiode principal y para el disco circular a su izquierda (y probablemente para los otros grandes focos). Sin embargo, esto no ayuda realmente con los zooms.

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