今天因为要求一个复杂函数的导数, 实在不想自己一步一步做, 于是想找个符号计算库完事. 一番搜索以后, 结果出乎我的意料: 似乎没有一个好的 symbolic tensor calculus lib! 那么退而求其次, matrix calculus的总该有吧? 可是也完全没有. 现存的一些解决方案都不能令人满意:

  • www.matrixcalculus.org. 这个非常好用, 还能生成基于Numpy 的函数和LaTeX 表达式, 但是不开源.
  • sympy. sympy 曾经有过矩阵导数的API, 但是似乎从其出错以后就被移除了.
  • Mathmatica. 可能是我不会用, 里面的 D 对一些操作如 Inverse 不好用. 而且似乎必须得首先指定维度然后才能操作.
  • Jax. Jax是能直接给出导函数的, 但是貌似必须要跑一次才能导出计算图. 而且这个导出的图也没有提供公式 (不过我感觉这个是可以做的, 写一个从tree 到 LeTeX 的解析式即可)

最后我选择用 matrixcalculus.org 来解决问题, 虽然人家不开源, 但是有免费的网页版可以用. 而且矩阵和向量大多数时候已经够用了.