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

ad的Python项目详细描述


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

概述

ad包允许您轻松地透明地执行 一阶和二阶自动微分。高等数学 涉及三角函数、对数函数、双曲函数等。 使用admath子模块直接计算。

支持所有基数值类型intfloatcomplex, 等等)。这个包的设计使得底层的数值类型 在执行任何 计算。因此,这个包更像是一个“包装器”,它只是帮助 在保持原始功能的同时跟踪派生 数值计算。

摘自Automatic differentiation(ad)上的维基百科条目:

“AD exploits the fact that every computer program, no matter how complicated, executes a sequence of elementary arithmetic operations (addition, subtraction, multiplication, division, etc.) and elementary functions (exp, log, sin, cos, etc.). By applying the chain rule repeatedly to these operations, derivatives of arbitrary order can be computed automatically, and accurate to working precision.”

有关详细信息和示例,请参见package documentation

主要功能

  • 透明计算和派生:没有或很少 需要修改现有代码,包括使用时 Numpy模块。
  • 几乎支持所有数学运算,包括 来自标准math模块的函数(sin、cos、exp、erf, 以及cmath模块(相位、极性等),具有额外的便利性 三角函数、双曲函数和对数函数(csc、acoth、ln等)。 比较运算符遵循与基础数字相同的规则。 类型
  • real和complex算术处理无缝。像对待自己一样对待对象 通常会使用mathcmath函数,但是使用 admath个副本。
  • 自动梯度和hessian函数生成器用于优化 使用scipy.optimize例程和gh(your_func_here)进行研究。
  • 兼容线性代数例程,位于ad.linalg子模块中, 类似于numpy的linalg子模块中的那些,它们不是 依赖于拉帕克。目前有:
    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,请从 命令行。
  5. GitHub
  6. 上下载bleeding版本

联系人

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

致谢

作者表示感谢:

  • Eric O. LEBIGOT (EOL),提供uncertainties包的作者 代码洞察力和灵感
  • 斯蒂芬·马克斯,波莫纳学院教授,关于 与scipy.optimize中的优化例程的接口。
  • Wendell Smith,用于更新测试功能和许多其他有用的 功能更新
  • Jonathan Terhorst,因为他发现了一个能产生对数导数的错误 功能(基本!(e)给出错误的答案。
  • github用户fhgd,用于捕捉admath.atan2中的错误计算

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用运行时从JAVA运行openssl命令?   不使用线程安全类(如AtomicInteger和SynchronizedList)的java ProducerConsumer问题   匹配字符串的java模式   在java中使用泛型接口作为返回类型   java将可能具有序列化JSON值的hashmap作为节点添加到JSON字符串中   Eclipse无法从Java8流推断正确的类型   java无法了解标准JButton的大小   java我能用一个循环优化这个函数吗(在第一种方法中)?   Apache CXF中基于WebSocket的java SOAP?   java想要运行奇偶和求和三步   矩阵上随机元素的java集值   java布尔相等:0==a,操作数顺序重要吗?   java Eclipse不会退出我的插件   java如何在spring的SOAP拦截器中获取HttpServletRequest和HttpServletResponse