跳转到主要内容

快速、透明的一阶和二阶自动微分

项目描述

https://travis-ci.org/tisimst/ad.png?branch=master

概述

ad包允许您轻松透明地进行一阶和二阶自动微分。使用admath子模块可以直接评估涉及三角、对数、双曲等函数的复杂数学。

支持所有基本数字类型intfloatcomplex等)。该包的设计使得底层数字类型在执行任何计算时将相互交互,就像它们正常交互一样。因此,这个包更像是一个“包装器”,简单地帮助跟踪导数,同时保持数字计算的原有功能。

来自维基百科关于自动微分(AD)的条目

“AD利用了每个计算机程序,无论多么复杂,都执行一系列基本算术运算(加法、减法、乘法、除法等)和基本函数(exp、log、sin、cos等)的事实。通过反复应用链式法则来计算这些运算的导数,可以自动计算任意阶导数,且精度与工作精度相匹配。”

有关详细信息和方法示例,请参阅包文档

主要功能

  • 使用导数进行透明计算:无需或仅需少量修改现有代码,包括在使用Numpy模块时。

  • 几乎支持所有数学运算,包括标准math模块(sin、cos、exp、erf等)和cmath模块(phase、polar等)中的函数,以及额外的便利三角、双曲和对数函数(csc、acoth、ln等)。比较运算符遵循与底层数字类型相同的规则。

  • 无缝处理实数和复数算术。使用mathcmath函数处理对象,但使用它们的新admath对应函数。

  • 自动梯度函数和Hessian函数生成器,用于使用scipy.optimize程序和gh(your_func_here)进行优化研究。

  • ad.linalg子模块中的兼容线性代数程序类似于NumPy的linalg子模块中的程序,不依赖于LAPACK。目前包括以下内容:

    1. 分解

      1. chol:Cholesky分解

      2. lu:LU分解

      3. qr:QR分解

    2. 解方程和矩阵求逆

      1. solve:线性方程组的通用求解器

      2. lstsq:线性方程组的拟最小二乘求解器

      3. inv:求矩阵的(乘法)逆

安装

您有几种简单方便的选项来安装ad包(可能需要管理员权限)

  1. 下载下面的包文件,解压缩到任何目录,然后从命令行运行python setup.py install

  2. 只需将解压缩的ad-XYZ目录复制到任何python可以找到的位置,并将其重命名为ad

  3. 如果已安装setuptools,请从命令行运行easy_install --upgrade ad

  4. 如果已安装pip,请从命令行运行pip install --upgrade ad

  5. GitHub上下载bleeding-edge版本

联系方式

请将功能请求、错误报告或反馈发送至Abraham Lee

致谢

作者感谢

  • Eric O. LEBIGOT (EOL),该包的作者,提供了代码洞察和灵感

  • Stephen Marks,Pomona学院的教授,就scipy.optimize中的优化程序接口提供了有用的反馈。

  • Wendell Smith,更新了测试功能以及许多其他有用的功能更新

  • Jonathan Terhorst,捕捉到导致对数函数(底数不等于e)的导数给出错误答案的错误

  • GitHub用户fhgd捕捉到admath.atan2中的误计算

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

ad-1.3.2.zip (26.9 kB 查看哈希值)

上传时间

由以下提供支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面