勒让德递推公式就不必多说啦,简单的一个迭代
def legendre(n,m,x):
P=[]
for j in range(m+1):
p=[1,x]
if j==0:
for i in range(1,n):
p.append(((2*i+1)*x*p[i]-i*p[i-1])/(i+1))
P.append(p)
else:
p[0]=0
if j==1:
p[1]=1
P.append(p)
else:
p[1]=0
P.append(p)
for i in range(1,n):
p.append((2*i+1)*P[j-1][i]+P[j][i-1])
del P[-1]
P.append(p)
return P[m][n]