解决一个或多个变量的自动数值微分问题。
项目描述
numdiff 工具
numdifftools 库是一套用 _Python 编写的工具,用于 解决一个或多个变量中的自动数值微分问题。有限差分以自适应方式使用,并与 Richardson 外推方法相结合,以提供最准确的结果。用户可以配置许多选项,例如;改变方法或外推的顺序,甚至允许用户指定是否使用复杂步骤、中心、前向或后向差异。
提供的方法有:
导数:计算任何标量函数的 1 到 10 阶导数。
directionaldiff:计算 n 个变量的函数的方向导数
梯度:计算一个或多个变量的标量函数的梯度向量。
Jacobian:计算一个或多个变量的向量值函数的 Jacobian 矩阵。
Hessian:计算一个或多个变量的标量函数的所有二阶偏导数的 Hessian 矩阵。
Hessdiag:仅计算 Hessian 矩阵的对角元素
所有这些方法也会对结果产生误差估计。
Numdifftools 还为使用_AlgoPy计算的导数提供了一个易于使用的界面。Algopy 代表 Python 中的算法微分。AlgoPy 的目的是评估作为 Python 程序实现的函数的算法微分 (AD)的正向和反向模式中的高阶导数 。
入门
可视化 tanh 函数的高阶导数
>>> import numpy as np >>> import numdifftools as nd >>> import matplotlib.pyplot as plt >>> x = np.linspace(-2, 2, 100) >>> for i in range(10): ... df = nd.Derivative(np.tanh, n=i) ... y = df(x) ... h = plt.plot(x, y/np.abs(y).max())plt.show()
在 x == 1 处计算 exp(x) 的一阶和二阶导数:
>>> fd = nd.Derivative(np.exp) # 1'st derivative >>> fdd = nd.Derivative(np.exp, n=2) # 2'nd derivative >>> np.allclose(fd(1), 2.7182818284590424) True >>> np.allclose(fdd(1), 2.7182818284590424) True
非线性最小二乘:
>>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1)) >>> ydata = 1+2*np.exp(0.75*xdata) >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2 >>> Jfun = nd.Jacobian(fun) >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero True
计算 sum(x**2) 的梯度:
>>> fun = lambda x: np.sum(x**2) >>> dfun = nd.Gradient(fun) >>> np.allclose(dfun([1,2,3]), [ 2., 4., 6.]) True
使用 AlgoPy 的易于使用的界面进行相同的计算:
>>> import numdifftools.nd_algopy as nda >>> import numpy as np >>> fd = nda.Derivative(np.exp) # 1'st derivative >>> fdd = nda.Derivative(np.exp, n=2) # 2'nd derivative >>> np.allclose(fd(1), 2.7182818284590424) True >>> np.allclose(fdd(1), 2.7182818284590424) True
非线性最小二乘:
>>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1)) >>> ydata = 1+2*np.exp(0.75*xdata) >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2 >>> Jfun = nda.Jacobian(fun, method='reverse') >>> np.allclose(np.abs(Jfun([1,2,0.75])), 0) # should be numerically zero True
计算 sum(x**2) 的梯度:
>>> fun = lambda x: np.sum(x**2) >>> dfun = nda.Gradient(fun) >>> np.allclose(dfun([1,2,3]), [ 2., 4., 6.]) True
也可以看看
scipy.misc.derivative
文档和代码
Numdifftools 适用于 Python 2.7+ 和 Python 3.0+。
官方版本可在: http: //pypi.python.org/pypi/numdifftools
官方文档位于:http: //numdifftools.readthedocs.io/en/latest/
出血边缘:https ://github.com/pbrod/numdifftools 。
安装
如果您安装了 pip,则只需键入:
$ pip install numdifftools
获取最新的稳定版本。使用 pip 还具有自动安装所有需求的优点。
单元测试
要测试工具箱是否正常工作,请将以下内容粘贴到交互式 python 会话中:
import numdifftools as nd nd.test('--doctest-modules', '--disable-warnings')
致谢
Python的numdifftools 包由 Per A. Brodtkorb 基于 John D'Errico [DErrico06]在Matlab中编写的自适应数值微分工具箱编写。
后来这个包被扩展了一些功能,这些功能在由 Josef Perktold [JPerktold14]编写的基于[ Rid09] 的 statsmodels.tools.numdiff 模块中找到。双复数的实现基于[Ver14]的项目报告中描述的matlab实现,它基于[GLD12]。为了完整起见,添加 了用于计算一般有限差分公式中的权重和点的[For98]方法以及用于使用 FFT 计算复解析函数的泰勒系数的 [For81] 方法。
参考
Perktold, J (2014), numdiff 包 http://statsmodels.sourceforge.net/0.6.0/_modules/statsmodels/tools/numdiff.html
Adriaen Verheyleweghen,(2014 年)“使用多复步法计算高阶导数”,项目报告,NTNU
Gregory Lantoine、RP Russell 和 T. Dargent (2012) “使用多重变量自动计算高阶导数”,ACM Transactions on Mathematical Software,Vol。38,第3,第16条,2012年4月,21页, http://doi.acm.org/10.1145/2168773.2168774
ME Luna-Elizarraras, M. Shapiro, DC Struppa1, A. Vajiac (2012),“双复数及其初等函数”,CUBO A 数学杂志,卷。14,第 2 期,(61-80)。2012 年 6 月。
Gregory Lantoine (2010),“一种在多体环境中稳健优化低推力轨迹的方法”,博士论文,乔治亚理工学院
Ridout, MS (2009) “数值微分的复杂步法的统计应用”, 美国统计学家,63, 66-74
D'Errico, JR (2006),“自适应鲁棒数值微分”, http://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation
K.-L。Lai, JL Crassidis, Y. Cheng, J. Kim (2005),“新的复杂阶跃导数近似与二阶卡尔曼滤波的应用”,AIAA 指导、导航和控制会议,加利福尼亚州旧金山,2005 年 8 月,AIAA- 2005-5944。
B. Fornberg (1998) “计算有限差分公式中的 weights_and_points”,SIAM 评论 40,第 685-691 页。
Fornberg, B. (1981)。“分析函数的数值微分”,ACM Transactions on Mathematical Software (TOMS),7(4),512-526。http://doi.org/10.1145/355972.355979
莱尼斯,JM,莫勒,CB(1969 年)。“导数积分的广义 Romberg 方法”,Numerische Mathematik。
莱尼斯,JM,莫勒,CB(1966 年)。“范德蒙德系统和数值微分”,Numerische Mathematik。
纳格图书馆。NAG Fortran 库文档:D04AAF
变更日志
版本 0.9.40 2021 年 6 月 2 日
- 每一个 Brodtkorb (109):
在 .travis.yml 中将 python 3.5 替换为 3.9
从 appveyor.yml 中删除了 python 3.5
添加 bibtex_bibfiles = ... 到 docs/conf.py
- 修复了 doctest 失败
docs/src/numerical/derivest.rst
文档/教程/getting_started.rst
numdifftools.core.py
numdifftools.limits.py
numdifftools.nd_algopy.py
numdifftools.nd_scipy.py
numdifftools.nd_statsmodels.py
if __name__ =='__main__' 子句中的 click 绝缘导入。
添加激活到 appveyor.yml
在 extrapolation.py 中为 Epsilon 算法添加了https://mathworld.wolfram.com/WynnsEpsilonMethod.html参考。
禁用 LogJacobianRule 中 n 必须为 1 的限制
向 JacobianDifferenceFunctions 添加了 complex_even 和 central_even 方法
更新了 core.py 中衍生的文档
更新了理查森的文档。
从 test_nd_scipy.py 中删除了过时的测试
修复了 test_nd_scipy.py 中 TestJacobian.test_scalar_to_vector 中 method=”complex' 的错误
从 core.py 重构代码到finite_difference.py
将 LogJacobianRule、LogHessdiagRule、LogHessianRule 添加到finite_difference.py
修复了 Richardson._estimate_error 中的错误:复杂规则错误地导致复杂错误值。
添加了 netlib.org/quadpack 参考。
更新了 Dea 以符合 Quadpack
将对 Brezinski 的引用替换为对 Quadpack 的引用。
在外推.py 中降低 Dea 的圈复杂度
删除了 profile_numdifftools.py 中注释掉的代码
更新了 setup.cfg 中的 pycodestyle 忽略部分
删除了 run_benchmark.py 中注释掉的代码 使 get_nominal_step 作为 x 的函数连续
在 run_benchmark.py 中使日期时间调用 python 2.7 兼容
简化 core.py 中的 Derivative._step_generator 函数。
使从 run_benchmark.py 生成的图更漂亮。
step_ratio 在步骤生成器中默认为 2,n=1 和 1.6,否则在 step_generators.py
修复了 core.py 和 nd_statsmodels.py 中失败的文档测试
向 setup.cfg 添加了文档测试。
在 test_example_functions.py 中重新排序导入
修复了 .travis.yml ,使 coverage.xml 中的文件路径可以在 sonar.sources 文件夹下找到。问题是 SonarQube 正在分析签出的源代码(在 src/numdifftools 中),但实际的单元测试和 coverage.py 是针对已安装的代码(在 build/lib/numdifftools 中)运行的。因此安装的绝对文件路径
从 test_numdifftools.py 中删除了注释代码
当 python 版本为 3.7 时仅运行覆盖 xml
更新了 .travis.yml 从 extrapolation.py 和 nd_statsmodels.py 中删除了注释掉的代码
完成将 XXXDifferencdFunctions 从 core.py 移动到finite_difference.py
在 step_generators.py 中为 default_scale 函数添加了缺失的文档字符串。
删除了 _find_default_scale.py 中未使用的 itertools 导入。
当 n=1 时,将复杂/多重复杂方法的默认比例从 1.35 更改为 1.06
在 extrapolation.py 中添加了richardson_demo 在 extrapolation.py 中简化了 EpsAlg 类
更正了 dea3 的一个小错误:现在 dea3 和 Dea(limexp=3) 给出了相同的结果!
将 python 3.8 添加到 appveyor.yml 将 python 3.9 添加到 setup.cfg
修复了对操作方法/索引的参考
向 docs.conf.py 添加了 doctest 配置
通过将函数值 f(x) 添加到 info.f_value 来修复问题 #50。
更新了 README.rst
在这里和那里添加了@UnusedVariable。
通过添加 __init__ 以在给定方法的情况下设置正确的顺序,从而使 Hessian 中的警告静音。
更新了 Richardson._r_matrix 方法以在 step_ratio 为复数时生成复数矩阵。
修复了 profile_numdifftools.py 中的 profile_hessian,使其再次工作。
在 test_nd_algopy.py 中添加 np.errstate(all='ignore') 到 test_derivative_on_sinh 和 test_scalar_to_vector 以消除警告。
将引用样式更改为 alpha。
将 bibliography.rst 替换为 refs1.bib 和 zreferences.rst
删除了乳胶的徽章
更改了声纳插件令牌
添加了 CC_TEST_REPORTER_ID
修复了 docs/numdifftools.rst 中的一个错字
添加了文档/make.bat
从 .travis.yml 中删除了 python 2.7
将 test_requires 从 setup.cfg 移至 setup.py
将乳胶添加到 setup.py
将默认半径更改为 0.0059,这似乎会减少 fornberg.py 中 Taylor 的故障。
更新了 MANIFEST.in
修复问题 #49:标量输入的向量值函数(长度 n)的 Jacobian 维数应为 n X 1
更新了 build_package.py
尝试使除以零和无效警告静音。
修复问题#52:梯度尝试对包含结果和 full_output 对象的输出元组应用挤压。
将 docstring 设为 rawdocstring,因为它包含斜杠。
在适当的地方添加了“# pylint: disable=unused-argument”。
API 更改:将“python setup.py doctests”替换为“python setup.py doctest”
删除了未使用的导入
修复了 test_low_order_derivative_on_example_functions 中的错误:在外部和内部循环中都使用了相同的变量 (i)。
更新了 pypi 的徽章和 fornberg.py 的文档
修复了失败的测试。
更新了文档 + 添加了一个测试
由于 python2.7 32 位上的包冲突,在 appveyor.yml 中添加了“python -m pip install –upgrade pytest”
在 appveyor.yml 中添加了“python -m pip install –upgrade setuptools”以避免构建错误。
在 appveyor.yml 中尝试“python setup.py bdist_wheel”和“pip install numdifftools –find-links=dist”
将 qoutes 放在 appveyor.yml 中的“python -m pip install –upgrade pip”上
- 将“python setup.py install”更改为
python setup.py bdist_wheel”
pip install numdifftools –find-links=dist
在 appveyor.yml 中添加了“pip install –upgrade pip”
更新了详细的包文档。
添加了缺少的 pytest-pep8 进行安装
更新徽章 + appveyor.yml
正在进行的协调 approx_fprime 和 approx_fprime_cs 输出的工作
将 Taylor 类添加到 nd_algopy.py 修复了 fornberg.py 中 _get_best_taylor_coefficient 的错误
更新的参考资料 将 test_mod_c 函数添加到 test_multicomplex.py
修正了一个错字。
删除了--strict-markers
修复了问题 #39 TypeError: /: 'float' 和 'Bicomplex' 的不支持的操作数类型
修正了文档中的一个错字。结束问题 #51
为 nd_scipy 添加了单独的测试。
如果未安装 LineProfiler,则添加跳过测试。
从对 approx_hess1 + pep8 的调用中删除了过时的居中参数
将 Jacobian._increment 方法移动到 _JacobianDifferenceFunctions
在 CStepGenerator.__init__ 中未使用 step_nom 将 pytest.markers.slow 添加到 setup.cfg
为了避免在 travis 上失败,做了两个更宽容的测试。
将nominal_step 和base_step 分别重命名为get_nominal_step 和get_base_step。
从假设中删除了过时的示例导入
更新测试
更新覆盖调用:coverage run -m py.test src/numdifftools/tests
删除过时的 conftest.py
版本 0.9.39 2019 年 6 月 10 日
- 罗伯特·帕里尼 (1):
修复问题 #43:numpy 未来警告
版本 0.9.38 2019 年 6 月 10 日
- 安德鲁·纳尔逊 (1):
MAINT:special.factorial 而不是 misc.factorial
- 杜格尔·J·萨瑟兰 (1):
在发行版中包含 LICENSE.txt
- 每一个 Brodtkorb (140):
调整了假设检验的运行时间以避免失败并修复了 pep8 失败。
修复了 setup.cfg 中的错误
在 step_generators.py 中用 numpy.full 替换了 valarray 函数
添加了除导入算法外的尝试
更新了 README.rst 中使用的标记
用 pytest 替换了 numpy.testing.Tester。
消除了对 pyscaffold 的依赖。
简化的 setup.py 和 setup.cfg
更新了 .travis.yml 配置。
重新组织了文档。
正在进行的简化课程的工作。
用 pytest 替换了 unittest。
添加了finite_difference.py
替换为 .
恢复到覆盖率=4.3.4
新尝试
修复了冲突的导入
缺少 EPS 的导入
添加了缺失的 FD_RULES = {}
移除固定覆盖,移除对 pyscaffold 的依赖
更新了 .travis.yml 和 .appveyor.yml
用 conda-forge 替换了 conda 频道 omnia
删除了注释掉的代码。在 appveyor.yml 中设置 pyqt=5
更新了代码气候检查
放弃了对 python 3.3 和 3.4 的支持。添加了对 python 3.6、3.7 的支持
简化的代码。
固定 IPython==5.0 以使测试服务器不会崩溃。
将 line_profiler 添加到 appveyor.yml
从 requirements.txt 中删除了 line_profiler
修复问题 #37:无法在 Python 2.7 上安装
将 method='backward' 添加到 nd_statsmodels.py
跳过 test_profile_numdifftools_profile_hessian 和 TestDoProfile
添加了缺少的警告导入
为 profile_numdifftools.py、_find_default_scale.py 和 run_benchmark.py 中的脚本添加了测试。
为 unittest.skipIf 添加了原因
将 line_profiler 添加到要求中。
修复了缺少警告的导入。
重命名了测试,所以它排在最后,因为我怀疑这个测试会弄乱覆盖率统计数据。
重新排序测试。
添加了更多测试。
清理_find_default_scale.py
删除了 depsy 的链接
恢复:安装 cython 和 pip install setuptools
为 python 3.5 禁用了 sonar-scanner -X,因为它崩溃了。
恢复 [options.packages.find] 以再次排除测试
添加了 cython 并恢复为 pip install setuptools
将狮身人面像更新到 1.6.7
尝试使用 conda 安装 setuptools。
在 requirements.readthedocs.txt 中添加了假设和 pytest
设置 setuptools 的版本==37.0
在 requirements.readthedocs.txt 中添加了 algopy、statsmodels 和 numpy
限制狮身人面像,希望生成文档。
从测试覆盖范围中删除了测试/目录的排除。
将依赖项添加到 setup.cfg
将六读为依赖
重构并删除了注释掉的代码。
修复了文档字符串示例中的一个错误:确保传递给零的形状是一个整数。
修复了 c_abs,使其适用于 python 3.6 上的 algopy。
修复了不稳定的测试并使其更加健壮。
修复了 .travis.yml 中的错误
将 taylor 函数重构为 Taylor 类以简化代码。
修复了问题 #35 并添加了测试
尝试简化复杂性
使 doctests 更加健壮
更新的项目路径
更改了algopy的安装
修复了小错误
更新的文档字符串
将示例和引用更改为文档字符串中的示例和引用以符合 numpydoc 样式。
将 CHANGES.rst 重命名为 CHANGELOG.rst
重命名源路径
由于算法中的错误或行为改变而导致的黑客攻击。
小修。
尝试降低复杂性
降低 min_num_steps 的认知复杂性
雅可比行列式的简化代码
修复了问题 #34 许可证说明。
锁定覆盖率 = 4.3.4 由于覆盖率中的错误导致代码气候测试报告器失败。
添加了用于查找默认比例的脚本
从 sonarcube 更新到 sonarcloud
确保形状是整数。
将 make_step_generator 重构为 step 属性
将订单设置为与 Hessian 中的 1 或 2 不同的值时,向用户发出警告消息。
更新了渐变中的示例。
将 –timid 选项恢复为覆盖范围,因为运行时间太长。
恢复了 –pep8 选项
pep8 + 在 .travis.yml 覆盖运行中添加了 –timid 以增加错过的覆盖。
重构泰勒以降低复杂性
不支持 python 3.3。添加了python 3.6
修复了一个小错误并更新了测试。
删除了不必要的括号。降低了 do_profile 的复杂度
使python3兼容
删除了断言 False
使单元测试更加宽容。
更新了 nd_scipy.py 和 profiletools.py 中的 doctest 在 travis 上安装 line_profiler
使 python 3 兼容
更新的测试
在 testing.py 中添加了 test_profiletools.py 和 capture_stdout_and_stderr
针对速度优化了 numdifftools.core.py:fd_rules 现在只计算一次。
仅在分发中保留 html 文档。
添加了 doctest 并更新了 .pylintrc 和 requirements.txt
减少测试的时间足迹,希望它能够通过 Travis CI。
比实例方法更喜欢静态方法
更好的内存处理:这修复了问题 #27
在 requirements.txt 中添加了 statsmodels
添加了 nd_statsmodels.py
简化输入
更新了文档链接。
- 罗伯特·帕里尼(4):
在 _get_logn 中避免 RuntimeWarning
允许 fd_derivative 采用复值函数
- 索拉乔 (1):
doc:添加了 nd.directionaldiff 示例
版本 0.9.20,2017 年 1 月 11 日
- 每一个 Brodtkorb (1):
更新了作者的电子邮件地址,以便 twine 能够上传到 pypi。
版本 0.9.19,2017 年 1 月 11 日
- 每一个 Brodtkorb (1):
更新 setup.py 以尝试再次上传到 pypi。
版本 0.9.18,2017 年 1 月 11 日
- 每一个 Brodtkorb (38):
更新设置
在帮助标题示例中添加了导入语句。
使用假设添加了更严格的测试。
强制使用 wxagg 后端
将 matplotlib.pyplot 的导入移至 main 以避免 travis 上的导入错误。
添加了 fd_derivative 函数
更新了参考资料。
尝试自动化声纳分析
为 sonarqube 和 codeclimate 添加了测试覆盖
简化代码
添加了 .pylintrc + pep8
api的主要变化:类成员变量self.f更改为self.fun
修复问题 #25(Jacobian 自 0.9.15 以来已损坏)
版本 0.9.17,2016 年 9 月 8 日
- 安德鲁·福利 (1):
修复 #21 中提到的 ReadTheDocs 链接
- 每一个 Brodtkorb (79):
添加了对 MinMaxStepgenerator 的测试
从 core.py 中删除了过时的文档
更新了 appveyor.yml
固定符号逆矩阵
简化代码
添加了 appveyor 徽章 + 与 README.rst 同步的 info.py。
删除了帮助标题中的绘图
添加编程语言 :: Python :: 3.5
简化代码
将双复重命名为双复
简化的 example_functions.py
- 将 MinStepGenerator、MaxStepGeneretor 和 MinMaxStepGenerator 移至 step_generators.py
统一步骤生成器
将 step_generator 测试移至 test_step_generators.py
step_generators.py 的主要简化
删除重复代码 + pep8
将 fornberg_weights 移至 fornberg.py + 添加了 taylor 和导数
固定打印语句
用范围替换 xrange
添加了示例 + 使计算更加健壮。
在 nd_algopy.py 中制作了“向后”和“反向”的别名
扩展测试 + 将 test_docstrings 添加到 testing.py
用 format() 替换字符串插值
删除了过时的参数
Fornberg 方法的较小起始半径
简化的“n”和“order”属性
简化的 default_scale
删除了不必要的括号和代码。
修复了 Dea + 小重构中的错误。
添加了对 EpsAlg 的测试
避免可变的默认参数,并更喜欢静态方法而不是实例方法。
重构以降低圈复杂度
将一些实例方法更改为静态方法
重命名非pythonic变量名
打开 xvfb (X Virtual Framebuffer) 来模拟显示。
为雅可比添加了额外的测试
用 def 替换 lambda 函数
删除了未使用的导入
添加了对 epsalg 的测试
修复了 test_scalar_to_vector
更新了 test_docstrings
0.9.15 版,2016 年 5 月 10 日
- 科迪(2):
迁移的%字符串格式
迁移的%字符串格式
- 每一个 Brodtkorb (28):
更新了 README.rst + setup.cfg
用静态方法替换实例方法 +pep8
修复了一个错误:替换了缺少的三引号
添加了 depsy 徽章
为 quantificode 添加了 .checkignore
添加了 .codeclimate.yml
修复了失败的测试
将实例方法更改为静态方法
使无类型异常处理程序特定
用静态方法替换本地函数
简化测试
删除了重复的代码 Simplified _Derivative._get_function_name
从 testclimate 中排除测试
将 test_functions.py 重命名为 example_functions.py 添加了 test_example_functions.py
- 根据 A. Brodtkorb (2):
合并来自 pbrod/autofix/wrapped2_to3_fix 的拉取请求 #17
合并来自 pbrod/autofix/wrapped2_to3_fix-0 的拉取请求 #18
- pbrod (17):
更新了 conf.py
将 numpydoc>=0.5, sphinx_rtd_theme>=0.1.7 添加到 setup_requires if sphinx
更新 setup.py
添加 requirements.readthedocs.txt
更新了 README.rst,其中包含有关如何在 anaconda 包中使用 conda 安装它的信息。
更新了 conda 安装说明
固定数量的参数,因此它与覆盖的 '_default_base_step' 方法没有区别
将 codecov 添加到 .travis.yml
尝试删除测试文件的覆盖率
添加了方向差异函数以计算方向导数。修复问题 #16。还在文档中添加了支持测试和示例。
修复了问题 #19 多个观察结果在雅可比行列式中处理不当
将 Rosen 函数移至 numdifftools.testing.py
从 numdifftools.testing 更新了 Rosen 函数的导入
简化代码 + pep8 + 添加 TestResidue
更新了 readme.rst 并用 format() 替换了字符串插值
清洁 Dea 类 + pep8
更新了永利外推法的参考资料。
0.9.14 版,2015 年 11 月 10 日
- pbrod (53):
更新了 setup.py 的文档
更新了 README.rst
更新后的版本
添加了更多文档
更新示例
添加 .landscape.yml 更新 .coveragerc、.travis.yml
将覆盖范围添加到 README.rst。
更新文档/index.rst
删除了未使用的代码并添加了测试/test_extrapolation.py
更新的测试
添加了更多测试
已阅读 c_abs c_atan2
移除了对 wheel、numpydoc>=0.5 和 sphinx_rtd_theme>=0.1.7 的依赖(仅用于构建文档)
更新了 .travis.yml 中的 conda 路径
向 .travis.yml 添加了 omnia 频道
添加了 conda_recipe 文件 过滤了 limits.py 中的警告
0.9.13 版,2015 年 10 月 30 日
- pbrod (21):
更新了 README.rst 和 CHANGES.rst。
更新限制。
使微分复杂函数和允许零阶导数成为可能。
BUG:在梯度、Hessian、Jacobian 中添加了缺失的导数阶数 n。
使测试更加健壮。
根据 pyscaffold 版本 2.4.2 更新了设置中的结构。
更新了 setup.cfg 并删除了重复的测试文件夹。
删除了未使用的代码。
添加了 appveyor.yml。
添加了所需的 appveyor 安装脚本
修复了 appveyor.yml 中的错误。
将轮子添加到 requirements.txt。
更新了 appveyor.yml。
删除了导入 matplotlib。
- 贾斯汀·莱彻(1):
修复 numpy 的最低版本。
- kikocorreoso (1):
修复 run_benchmark.py 上的一些打印以使其与 py3 一起使用
0.9.12 版,2015 年 8 月 28 日
pbrod (12):
更新了文档。
conf.py 中的更新版本。
更新了 CHANGES.rst。
重新实现异常值检测并使其更加健壮。
添加了带测试的limits.py。
更新了主测试文件夹。
将 Richardson 和 dea3 移至 extrapolation.py。
制作一个新版本以便上传到 pypi。
0.9.11 版,2015 年 8 月 27 日
- pbrod (2):
修复了 sphinx-build 和更新的文档。
修复了问题 #9 后向微分方法因附加参数而失败。
0.9.10 版,2015 年 8 月 26 日
- pbrod (7):
修复了 sphinx-build 和更新的文档。
向 nd_algopy 添加了更多测试。
放弃了对 Python 2.6 的支持。
0.9.4 版,2015 年 8 月 26 日
- pbrod (7):
修复了 sphinx-build 和更新的文档。
0.9.3 版,2015 年 8 月 23 日
- 保罗·金泽 (1):
更有用的基准图。
- pbrod (7):
修复了错误并更新了文档。
对 Algopy 易于使用的界面进行了重大改写。
增加了计算 n 阶导数的可能性,而不仅仅是 nd_algopy 中的 n=1。
向 algopy 的易于使用的界面添加了测试。
0.9.2 版,2015 年 8 月 20 日
- pbrod (3):
更新的文档
为调用 print 函数添加了括号
为了通过针对 Python 2.6 和 3.2 的 Travis 测试,降低了测试的严格性。
0.9.1 版,2015 年 8 月 20 日
- 克里斯托夫·戴尔 (1):
修复 Sphinx 构建
- pbrod (47):
- numdifftools 的完全重制,调用语法略有不同。
可以根据使用的函数和方法计算高达 10-14 阶的导数。
相应地更新了文档和测试。
修复了 dea3 中的一个错误。
添加 StepsGenerator 作为自适应选项的替代品。
添加了用于测试复数步二阶导数的双复数类。
添加了 fornberg_weights_all 以稳定地计算最优有限差分规则。
添加了高阶复阶导数方法。
0.7.7 版,2014 年 12 月 18 日
- pbrod (35):
让 travis-ci 工作以自动运行测试。
修复了 Dea 类中的错误。
修复了 Hessian 的更好的误差估计。
修复了 python 2.6 的测试。
添加测试作为子包。
Restructerd 的 numdifftools 文件夹。
0.7.3 版,2014 年 12 月 17 日
- pbrod (5):
小的化妆品修复。
pep8 + 一些重构。
通过重构简化代码。
0.6.0 版,2014 年 2 月 8 日
- pbrod (20):
更新 README.md 并将其重命名为 README.rst。
简化对 Derivative 的调用:删除了 step_fix。
删除了未使用的代码。
简化和重构。现在可以选择 step_num=1。
将默认 step_nom 从 max(abs(x0), 0.2) 更改为 max(log2(abs(x0)), 0.2)。
pep8ified 代码并确保所有测试都通过。
0.5.0 版,2014 年 1 月 10 日
- pbrod (9):
更新了 Gradient 类和 info.py 中的示例。
添加了对 vec2mat 和 docstrings + 外观修复的测试。
将代码重构为私有方法。
修复问题 #7:Derivative(fun)(numpy.ones((10,5)) * 2) 失败。
使打印语句与 python 3 兼容。
0.4.0 版,2012 年 5 月 5 日
- 普罗德 (1)
修复了 inf 和 nan 值的错误。
0.3.5 版,2011 年 5 月 19 日
- 普罗德 (1)
修复了 inf 和 nan 值的错误。
0.3.4 版,2011 年 2 月 24 日
- 普布罗德 (11)
使步长的自动选择更加健壮。
为 algopy 和 sciencepython 模块添加了易于使用的界面。
0.3.1 版,2009 年 5 月 20 日
- pbrod (4)
在 google.code 上发布的第一版 numdifftools
版权所有 (c) 2009-2021,Per A. Brodtkorb,John D'Errico 保留所有权利。
如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:
源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
未经事先明确的书面许可,不得使用版权所有者的姓名或其贡献者的姓名来认可或推广源自本软件的产品。
本软件由版权所有者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务;使用、数据或利润损失;或业务中断),无论是由何种责任理论引起的,无论是在合同、严格责任或侵权行为(包括疏忽或其他方式)中以任何方式使用本软件引起的,即使已被告知存在此类损害的可能性。