【问题标题】:Defining a range of symbols whose bounds are OTHER symbols定义以其他符号为边界的符号范围
【发布时间】:2014-08-22 21:16:38
【问题描述】:

我试图表达对任意(但有限)数量的符号的求和,我希望由另一个符号给出。例如,是否可以说:

N,ci,cj = symbols('N,c_i,c_j')
# pseudocode
k = sum(ci+cj,(ci,0,N),(cj,0,N))

或者,更确切地说,

k = sum(ci+cj, (ci != cj))

我的直觉是它不是,但我希望 sympy 能够实现对它的支持!

更新

似乎 sympy 为索引变量提供了规定。即:

x = IndexedBase('x')
i,j = symbols('i j',cls=Idx)

但是,尝试时可能会出错:

y = Sum(x[i], (i, 0, 2))

这是:

ValueError: Invalid limits given: ((i, 1, 5),)

【问题讨论】:

  • 是的,Indexed 的实例需要在 Sum 中得到支持,我自己也遇到了这个问题,但还没有解决它。这“只是”修补 sympy 代码库并发送 PR 的问题。 :)

标签: python math sympy


【解决方案1】:

您可以使用函数,例如 x = symbols('x', cls=Function)x(i)。索引也应该有效,但看起来 Sum 有一个不允许 Idx 的错误。不过,如果您只使用i = symbols('i'),它就可以工作。

【讨论】:

  • 谢谢!这正是我最终所做的。
猜你喜欢
  • 2016-01-06
  • 2016-02-06
  • 1970-01-01
  • 2011-04-23
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多