符号数组表达式

问题描述:

我想知道是否有办法象征性地处理数组变量(像sympy,但数组而不是数值变量)。所以,我可以有数组表达式如符号数组表达式

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

或更先进的东西,如嵌套数组关系

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

通过治疗A,B象征,我可以通过改变A的内容,B使用的取代,例如:

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

我可以再加入f1和f2等

+1

你能写出一个函数来确定''我''和'j'的'A [i]','B [i] [j]'吗?如果是这样,您可能会哄['numpy.fromfunction'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.fromfunction.html#numpy.fromfunction)进行您的出价。 –

+0

也许已编入索引。不过,我不知道它是否可以嵌套。 – asmeurer

从你的标签判断,我假设你主要对Python解决方案感兴趣。

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

  • Theano - 为代码生成构建数组表达式。主要用于机器学习应用程序,但是一个相当普遍的项目。
  • SymPy Matrix Expressions - 限于矩阵,但处理一些线性代数的特殊知识。
  • SymPy Indexed
  • Blaze - Continuum的一个新项目正在成长。

如果你愿意走出Python,你可以看看Mathematica中的xAct

还有很多其他项目,我没有在这里列出可能相关取决于您的应用程序。符号线性代数是一个非常活跃的领域。不过,每个项目都倾向于设计一个特定的应用程序。