根据此页面,我正在尝试以下操作: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)
可以正常工作。
我在积分中加一个整数是否有问题?还是只是一个较小的语法问题?
答案 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)