Para un proyecto en el que estoy trabajando (en PDE hiperbólicas), me gustaría obtener una idea aproximada del comportamiento observando algunos números. Sin embargo, no soy un muy buen programador.
¿Puede recomendarme algunos recursos para aprender a codificar efectivamente esquemas de diferencias finitas en Scientific Python (también son bienvenidos otros idiomas con una curva de aprendizaje pequeña)?
Para darle una idea de la audiencia (yo) para esta recomendación:
- Soy un matemático puro por formación, y estoy algo familiarizado con los aspectos teóricos de los esquemas de diferencias finitas.
- Lo que necesito ayuda es cómo hacer que la computadora calcule lo que quiero que calcule, especialmente de una manera que no duplique demasiado el esfuerzo ya realizado por otros (para no reinventar la rueda cuando un paquete ya está disponible). (Otra cosa que me gustaría evitar es codificar estúpidamente algo a mano cuando hay estructuras de datos establecidas que se ajustan al propósito).
- He tenido algo de experiencia en codificación; pero no he tenido ninguno en Python (por lo tanto, no me importa si hay buenos recursos para aprender un idioma diferente [por ejemplo, Octave]).
- Los libros, la documentación serían útiles, al igual que las colecciones de código de ejemplo.
python
finite-difference
reference-request
hyperbolic-pde
Willie Wong
fuente
fuente
Respuestas:
Aquí hay un ejemplo de 97 líneas para resolver una PDE multivariada simple usando métodos de diferencias finitas, aportados por el profesor David Ketcheson , del repositorio py4sci que mantengo. Para problemas más complicados en los que necesita manejar choques o conservación en una discretización de volumen finito, le recomiendo que busque Pyclaw , un paquete de software que ayudo a desarrollar.
fuente
Podría echar un vistazo a Fenics , que es un marco de Python / C que permite resolver ecuaciones bastante generales utilizando un lenguaje de marcado especial. Sin embargo, utiliza principalmente elementos finitos, pero vale la pena echarle un vistazo. El tutorial debería darle una impresión de lo fácil que puede ser resolver problemas.
fuente
Esta referencia puede ser muy útil para usted. Este es un libro abierto en internet. Aprendí (todavía estoy aprendiendo), Python de este libro. Me pareció muy buen recurso de hecho.
http://www.openbookproject.net/thinkcs/python/english2e/
Para el cálculo numérico, uno definitivamente debe ir por 'numpy'. (solo asegúrese de haber entendido la 'matriz' y 'matriz' y 'lista' correctamente) (consulte la documentación numpy para eso)
fuente