python fortran mathematical-optimization

python - Diferenciación automática



fortran mathematical-optimization (2)

Sí, mediante el uso de un paquete de diferenciación algorítmica apropiado. Este es un método que puede evaluar (en principio) derivados de orden arbitrario de cualquier función que haya expresado como un programa de computadora, y existe una cantidad de paquetes para Fortran. Echa un vistazo a

http://en.wikipedia.org/wiki/Automatic_differentiation

y

http://www.nag.co.uk/pss/nag-and-algorithmic-differentiation

Para empezar

Descargo de responsabilidad:

1) Nunca lo he usado "enojado"

2) Hasta hace poco trabajaba para NAG

Estoy trabajando en mi proyecto de graduarme, en particular, sobre dinámica de fluidos y tengo un sistema de ecuaciones no lineales para resolver, elijo el método de Newton, así que tengo que pasar por el jacobiano de la matriz (en realidad, matriz de 12x12). Cada elemento de esta matriz es la derivada de la función evaluada en algún momento, es muy difícil escribirlos todos manualmente y calcular cada derivada; el sistema se ve así:

f 1 (x 1 , x 2 , x 3 , ..., x 12 ) = 0
f 2 (x 1 , x 2 , x 3 , ..., x 12 ) = 0
.
.
.
f 12 (x 1 , x 2 , x 3 , ..., x 12 ) = 0


Donde x 1 , x 2 , x 3 son las variables (temperatura, presión ... etc.)
¿Puedo automatizar esta operación? Si no es posible en Fortran, ¿puedo usar otros lenguajes de scripting como Python (módulo sympy)?