2

I'm wondering if there's a way to treat array variables symbolically (something like sympy but for array instead of numerical variables). So that I can have array expressions such as

f1 = 3*A[i] + 4*B[i][j] - 7 == 0

or something even more advanced such as nested array relations

f2= 3 * A[C[i][j]] == B[i] + 3

By treating A, B symbolically, I can change the contents of A, B by using substitution , e.g.:

f1.subs(A=[1,2,3,4],B=[[1,2],[3,4]])

I can then add f1 and f2, etc.

4

1 回答 1

2

从您的标签来看,我假设您主要对 Python 解决方案感兴趣。

有一些项目以符号方式构建数组表达式。我建议你看看

  • Theano - 为代码生成构建数组表达式。主要用于机器学习应用程序,但一个相当普遍的项目。
  • SymPy 矩阵表达式- 仅限于矩阵,但处理我们对线性代数的一些特殊知识。
  • SymPy 索引
  • Blaze - 一个由 Continuum 开发的新项目。

如果您愿意放弃 Python,可以查看 Mathematica 中的xAct

还有许多其他项目我没有在此处列出,它们可能与您的应用程序相关。符号线性代数是一个非常活跃的领域。但是,每个项目的设计都倾向于考虑特定的应用程序。

于 2012-11-30T16:15:12.973 回答