我是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')
答案 0 :(得分:0)
问题源于i
是序列而不是单个值的事实。在您的情况下,它是np.arange(1,70,1)
。
当您致电range(1,i,1)
时,这没有意义:i
不是单个值。您可以将for l in range(1,i,1)
替换为for l in i
来修复此问题。
还有一些其他问题 - 我不确定cosgamma
的定义。您将来应该提供Minimum, Complete, and Verifiable example。