Processing math: 100%

3 votos

El mejor lenguaje de programación para resolver PDE numéricas.

He estado usando matlab para escribir mi de diferencia finita, finita volumen y nivel de conjunto de códigos a la hora de resolver ecuaciones en derivadas parciales. Los códigos de convertirse complicado, incluso de ahí tomar más tiempo para que se ejecute cuando voy a 3D de los casos. Esto hace que la temperatura de la computadora portátil a ser alta (71 grados centígrados medido por el Sensor) y navega por internet mientras se ejecutan los códigos a ser difícil, debido a su baja velocidad. Me gusta matlab desde que he estado usando desde hace 5 años, y hay funciones que creo que son simples para que yo pueda recordar fácilmente. Por otro lado, tengo previamente y ocasionalmente se usa (aunque no es un experto) R (a través de Rstudio), Python (a través de Spyder/Anaconda) y C++ (por ejemplo, el uso CodeBlocks). Vale la pena a cambio de matlab para otros language/software, ya que me necesita para convertir todos mis códigos y encontrar las funciones que son equivalentes a las de matlab? Lo que me refería con funciones de aquí no son los simples, como la ode45 (que yo podría escribir en mi propio), sino el más complicadas, tales como la isosuperficie, parche, etc.

Edit: estoy usando ubuntu 16.04 LTS, Memoria: 3.7 Gb, Procesador: Intel Core i7-4500U CPU @ 1.80 GHz x 4, los Gráficos: Intel Haswell Móvil, Disco: 343.9 GB. Es un sistema de arranque dual portátil (Asus F550L).

4voto

Skinner927 Puntos 106

En realidad, esto es más una cuestión de la estructuración de los datos/algorítmico de desarrollo que es de los más eficientes del lenguaje. En mi experiencia en el trato con la gente en su situación, el problema más común que veo es que el usuario se basa en la construcción en paquetes de (decir el LU función en matlab) y que no están llamando correctamente para la matriz (a/ces) están trabajando Y/O está utilizando el construido en el paquete que es ineficiente para la situación en la que se encuentran (es decir, usted tiene una matriz de una cierta estructura en la que muchas de las operaciones en el construido en el paquete son superfluos).

Si quieres ir a 'hardcore' y construir todo lo mismo, entonces yo personalmente recomiendo C/C++. Si usted quiere realmente mejorar su rendimiento en el que puede ejecutar una pila de GPU juntos en paralelo con CUDA. Hay también un número de increíblemente asombroso C++ Impulso de las bibliotecas que se han construido y que sirven (no exclusivamente) en la solución del PDE numéricamente.

Hay otros 'mathsy lenguas por ahí que son de gran utilidad. He estado usando Julia (encendido y apagado) durante los últimos años y es genial, muy por escrito para la facilidad de matemáticas de codificación.

Además Mi recomendación es que antes de pasar a otro entorno dev/idioma tiene una buena lectura en el matlab paquetes para asegurarse de que no se trata de 'trabajar' los datos que están trabajando. Por "exceso de trabajo" me refiero a la realización de operaciones innecesarias. Por ejemplo, la realización de una descomposición LU de una matriz dispersa en el que la abrumadora operaciones son de sentido (la conversión de 0 a 0 es el más común).

También hay una CUDA paquete de Matlab . No he utilizado personalmente, pero podría ser vale la pena investigar.

2voto

Andrei Puntos 111

Yo usaría C / C ++. En cualquier lenguaje interpretado (Matlab, Python, etc.), escribir for bucles es extremadamente ineficiente. Es por eso que en Matlab, por ejemplo, puede escribir una biblioteca externa en C. La aceleración es de al menos un orden de magnitud. La ventaja de C ++ es que también puede (con algo de esfuerzo) escribir código paralelo agradable, para usar más de un núcleo en el procesador.

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