一个python包,用于多变量函数的前向模式自动微分、jacobian/hessian矩阵计算、根查找和优化例程。
hotAD的Python项目详细描述
热广告
一个python包,用于多变量函数的前向模式自动微分、jacobian/hessian矩阵计算、根查找和优化例程。
背景
传统上,科学家使用符号微分和有限差分法计算函数的导数,但这些方法面临着增加误差和增加时间成本的问题。automatic differentication(ad)将链式规则(一种基本的微分技术)一遍又一遍地应用于构成任何函数的一系列基本算术运算。随着阶数的增加,AD计算的复杂度不比原来的函数差,从而达到了效率。我们的python包使用ad的前向模式来计算函数的一阶和二阶导数。欢迎用户使用我们的前向模式广告模块和基本功能模块为自己的应用程序,或利用我们更加用户友好的雅可比计算和优化模块。
安装
要安装,用户有两个选项
- pip:
pip install hotAD
(即将推出) - 下载源代码:在
hotAD/hotAD
下查找代码,并在requirements.txt
文件中查找需求。
用法
autodiffobject
用户可以实例化想要区分的变量,然后将这些变量组合成一个函数,该函数现在将包含函数值和一阶导数。要调用向量值函数,只需创建一个函数列表。如果用户也希望计算二阶导数,则可以指定可选参数H=True
。
x = AutoDiff(3, 'x')
y = AutoDiff(4, 'y')
f = x*y + x
基本功能
强烈建议用户使用我们的基本功能。目前我们已实施:
- 三角函数(
sin
,cos
,tan
,arcsin
,arccos
,arctan
) - 幂函数(
power
,sqrt
) - 指数函数(
log
,exp
) - 逻辑函数(
logit
)
x = AutoDiff(np.pi, 'x')
y = AutoDiff(np.pi/4, 'y'
f = ef.sin(x) + np.tan(y)
Adfun
用户可以使用此模块中的方法计算函数的雅可比矩阵,通过牛顿法进行求根,通过newton
、quasi-newton-BFGS
和gradient-descent
方法进行最小化。
更多信息
有关如何使用包的其他信息,请参见docs/milestone2.ipynb
。
我们的组员是:
- 王元恒
- 陆家印
- 丽皮卡·拉马斯瓦米
- 安东尼·伦奇