python - 自动微分

标签 python fortran mathematical-optimization

我正在做我的毕业设计,特别是关于流体动力学的,我有一个非线性方程组要求解,我选择牛顿法,所以我必须通过矩阵的雅可比矩阵(实际上是 12x12 矩阵).这个矩阵中的每个元素都是函数在某一点求值的导数,手工编写所有这些并计算每个导数是非常困难的;系统看起来像:

f1 (x1, x2, x3, ..., x12) = 0
f2 (x1, x2, x3, ..., x12) = 0
.
.
.
f12 (x1, x2, x3, ..., x12) = 0


其中 x1、x2、x3 是变量(温度、压力...等)
我可以自动执行此操作吗?如果在 Fortran 中不行,我可以使用其他脚本语言作为 Python(sympy 模块)吗?

最佳答案

是的,通过使用适当的算法差异包。这是一种可以评估(原则上)您表示为计算机程序的任何函数的任意阶导数的方法,并且存在许多适用于 Fortran 的程序包。看看

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

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

开始

免责声明:

1)我从来没有“愤怒”地使用过它

2) 直到最近我还在 NAG 工作

关于python - 自动微分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265164/

相关文章:

python - 使用 scipy.linalg.lstsq 的点集的最佳拟合平面结果错误?

python - 当python服务器通过gRPC获取数据时,如何解决格式错误的字符串输出?

python - 如何将多列中的时间戳重新排序为单列python

python - 读取文件时使用 lambda 函数将日期转换为时间戳

R & Fortran 调用

io - Fortran 文件 I/O 二维数组

python - 如何找到拟合指数函数的 x ?

python - 与 Scipy : shifted identity kernel - how is the computation done? 的图像卷积

c - 写入 Fortran 和 C 程序之间的管道时出现问题

algorithm - 约束编程 : Scheduling speakers in shortest time