首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >积分Legendre多项式的递推

积分Legendre多项式的递推
EN

Stack Overflow用户
提问于 2020-02-02 10:42:08
回答 1查看 205关注 0票数 1

附像

我正在用python编写这些递归,不明白为什么官方解决方案与我的不同。N= 1,2的平凡情形是明确的。这是我的方法:

代码语言:javascript
复制
return ((2*(k-1)-1)*x*leg(k-1) - ((k-1)-2)*leg(k-2)) / k

这是正式的解决办法:

代码语言:javascript
复制
return ((2*k-1)*x*leg(k-1) - (k-1)*leg(k-2)) / k

为什么他们减少k来调用这个函数,而在第一部分,系数(2*k-1)却没有?为什么第二部分中的系数改为(k-1)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-02 10:51:15

编辑

因此,通常,afaiu,您的问题来源于公式(在您所附的图像中确实显示L_{k+1}(x)),而它们实现的是L_{k}(x),而没有显示如何从L_{k+1}(x)获得L_{k}(x)的中间派生。

我进一步认为这里有一些混乱,所以我会很明显地偏离符号。让m = k+1了解下面的内容。

然后,我们通过直接的前向替换:

代码语言:javascript
复制
m * L(x, m) = (2*(m+1)-1) * x * L(x, m-1) - ((m-1)-2) * L(x, m-2)  # for m >= 3

产额

代码语言:javascript
复制
L(x, m) = ( (2*m + 2 - 1) * x * L(x, m-1) - ((m-3) * L(x, m-2) ) / m

在python语法中,这是:

代码语言:javascript
复制
def L(x, m):
    if m == 1:
        return x
    elif m == 2:
        return 0.5 * (x**2 - 1)
    else:  # do this for all m >= 3
        return ( (2*m + 1) * x * L(x, m-1) - ((m-3) * L(x, m-2) ) / m

为什么他们减少k来调用这个函数,而在第一部分,系数(2*k-1)却没有?

他们做了,按照我的推导。

为什么第二部分中的系数改为(k-1)?

老实说,我不知道;在我看来,他们似乎在替换过程中犯了一个错误,也就是说,他们一定是把m+1而不是m-1放在了。

代码语言:javascript
复制
>>> (2*(k-1)-1)

首先计算k-1将其乘以2,然后减去1,后者与2*k-1无关。例如:

k = 5与您的解决方案(2*(5-1)-1) = 7和官方解决方案(2*5-1) = 9一起屈服。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60025288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档