我是python编码的新手我正在编写一个代码来计算序列的总和,我首先编写了一个函数,其中输入是总和的迭代次数,但是当我编译时,它会在 def G(i)
下的行中给我错误:只有 length-1 数组可以转换为 Python 标量
你能帮我吗
import matplotlib.pyplot as plt
import numpy as np
import scipy.special as sp
import pylab as pylab
def G(i):
return (sum(((-1*(2*l+1))/(4*np.pi*(l**2+l)))*sp.legendre(l)(0.5) for l in i))
pylab.ylim([-1,1])
sumrange = np.arange(1,70,1)
plt.plot(sumrange,G(sumrange),color='red')
问题源于i
是一个序列,而不是单个值。在您的情况下,它np.arange(1,70,1)
.
当你调用range(1,i,1)
时,这没有意义:i
不是单个值。您可以通过将for l in range(1,i,1)
替换为for l in i
来修复它。
还有其他一些问题——我不确定cosgamma
在哪里定义。将来应提供最小、完整和可验证的示例。