内部总和给出索引标签错误

时间:2019-04-01 09:11:38

标签: python typeerror sympy

根据此页面,我正在尝试以下操作:http://tutorial.math.lamar.edu/Classes/DE/FourierSineSeries.aspx

from sympy import *
f = Function('f')
B = IndexedBase('B')
x, L = symbols('x L', real=True)
n = Symbol('n', integer=True)
n = Idx(n, (0, oo))
Bn = Indexed('B', n)
m = Symbol('m', integer=True)
expr = sin(m*pi*x/L)
lhs = integrate(f(x)*expr, (x,-L,L))
rhs = Sum(Bn*integrate(expr*sin(n*pi*x/L), (x,-L,L)), n)

它在最后一行崩溃,说明:

TypeError: Idx object requires an integer label.

但是,Idx对象确实具有显式设置的整数标签。此外,表达式Sum(Bn*sin(n*pi*x/L),n)可以正常工作。

我在积分中加一个整数是否有问题?还是只是一个较小的语法问题?

1 个答案:

答案 0 :(得分:1)

问题是因为变量n既用作Symbol又用作Idx对象。以下代码不会引发错误。 (尽管我不确定它是否符合您的目的)

from sympy import *
f = Function('f')
B = IndexedBase('B')
x, L = symbols('x L', real=True)
n = Symbol('n', integer=True)
n_index = Idx(n, (0, oo))
Bn = Indexed('B', n)
m = Symbol('m', integer=True)
expr = sin(m*pi*x/L)
lhs = integrate(f(x)*expr, (x,-L,L))
rhs = Sum(Bn*integrate(expr*sin(n*pi*x/L), (x,-L,L)), n_index)