使用 python 编码勒让德多项式和无限和

计算科学 Python 特殊功能
2021-12-23 17:02:15

我正在寻找编写以下函数的代码:

|g(θ)=12k=0(2+1)sin(2δ)Pcos(θ)|2

 import numpy as np

 import scipy.special as sp


 def Legendre(n,x):
x=np.array(x)
if (n==0):`
    return x*0+1.0
elif (n==1):
    return x
else:
    return ((2.0*n-1.0)*x*Legendre(n-1,x)-(n-1)*Legendre(n-2,x))/n
def RealFn(x):
  """
Fuction to evaluate the Real element of Phase Shift
"""
# Test for valid input
if (x<0):
    print("Error: x must be non negative");
    return
 RealFn = (1/(2*k)*(?)(2*l + 1)*np.sin(2*delta)*Legendre(??)*np.cos(x))**2
 return RealFn

如果有人可以帮助我编写勒让德多项式和无限和的编码,我将不胜感激!

的价值δ也是已知的,所以这只是一个简单的输入。

我相信我错过了θ还。

1个回答

您试图过于字面化:这些函数是使用无限和定义的,但是计算机当然不能执行无限和。相反,他们需要在有限数量的项之后截断任何总和,以便他们可以在有限的时间后返回结果。

但即便如此,像你这样的函数可能会以这种方式定义,但这并不是它们的实际实现方式。对于给定的参数,有一些非常聪明的方法可以以不同的方式评估这些类型的函数,这些参数可以产生高精度,而无需对大量项求和。换句话说,我们只是按照您展示的方式定义而不是实现这些功能。