快速、透明的一阶和二阶自动微分
项目描述
概述
ad包允许您轻松和透明地进行一阶和二阶自动微分。使用admath子模块可以直接评估涉及三角、对数、双曲等函数的复杂数学。
支持所有基本数字类型(int,float,complex等)。该包的设计使得底层数字类型在执行任何计算时将相互交互,就像它们正常交互一样。因此,这个包更像是一个“包装器”,简单地帮助跟踪导数,同时保持数字计算的原有功能。
来自维基百科关于自动微分(AD)的条目
“AD利用了每个计算机程序,无论多么复杂,都执行一系列基本算术运算(加法、减法、乘法、除法等)和基本函数(exp、log、sin、cos等)的事实。通过反复应用链式法则来计算这些运算的导数,可以自动计算任意阶导数,且精度与工作精度相匹配。”
有关详细信息和方法示例,请参阅包文档。
主要功能
使用导数进行透明计算:无需或仅需少量修改现有代码,包括在使用Numpy模块时。
几乎支持所有数学运算,包括标准math模块(sin、cos、exp、erf等)和cmath模块(phase、polar等)中的函数,以及额外的便利三角、双曲和对数函数(csc、acoth、ln等)。比较运算符遵循与底层数字类型相同的规则。
自动梯度函数和Hessian函数生成器,用于使用scipy.optimize程序和gh(your_func_here)进行优化研究。
ad.linalg子模块中的兼容线性代数程序类似于NumPy的linalg子模块中的程序,不依赖于LAPACK。目前包括以下内容:
分解
chol:Cholesky分解
lu:LU分解
qr:QR分解
解方程和矩阵求逆
solve:线性方程组的通用求解器
lstsq:线性方程组的拟最小二乘求解器
inv:求矩阵的(乘法)逆
安装
您有几种简单方便的选项来安装ad包(可能需要管理员权限)
下载下面的包文件,解压缩到任何目录,然后从命令行运行python setup.py install。
只需将解压缩的ad-XYZ目录复制到任何python可以找到的位置,并将其重命名为ad。
如果已安装setuptools,请从命令行运行easy_install --upgrade ad。
如果已安装pip,请从命令行运行pip install --upgrade ad。
在GitHub上下载bleeding-edge版本
联系方式
请将功能请求、错误报告或反馈发送至Abraham Lee。
致谢
作者感谢
Eric O. LEBIGOT (EOL),该包的作者,提供了代码洞察和灵感
Stephen Marks,Pomona学院的教授,就scipy.optimize中的优化程序接口提供了有用的反馈。
Wendell Smith,更新了测试功能以及许多其他有用的功能更新
Jonathan Terhorst,捕捉到导致对数函数(底数不等于e)的导数给出错误答案的错误
GitHub用户fhgd捕捉到admath.atan2中的误计算