簡體   English   中英

積分勒讓德多項式的遞歸

[英]Recursion of integrated Legendre polynomials

附加圖片

我正在用 python 編寫這些遞歸,但不明白為什么官方解決方案與我的不同。 n = 1, 2 的瑣碎情況很清楚。 這是我的方法:

return ((2*(k-1)-1)*x*leg(k-1) - ((k-1)-2)*leg(k-2)) / k

這是官方的解決方案:

return ((2*k-1)*x*leg(k-1) - (k-1)*leg(k-2)) / k

為什么他們減少 k 來調用函數,但在第一部分中系數 (2*k-1) 不是? 為什么第二部分的系數變成了(k-1)?

編輯

所以一般來說,afaiu,你的問題源於公式(在你的附圖中確實顯示了L_{k+1}(x) ),而他們確實實現了L_{k}(x)而沒有顯示如何獲得L_{k}(x)的中間推導L_{k}(x)來自L_{k+1}(x)

我進一步認為這里有一些混亂,所以我會稍微偏離符號。 下面讓m = k+1

然后我們通過直接替換得到:

m * L(x, m) = (2*(m+1)-1) * x * L(x, m-1) - ((m-1)-2) * L(x, m-2)  # for m >= 3

這產生

L(x, m) = ( (2*m + 2 - 1) * x * L(x, m-1) - ((m-3) * L(x, m-2) ) / m

在 python 語法中,這是:

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


>>> (2*(k-1)-1)

是否第一計算k-1乘以它由2 ,然后減去1 ,其是從淡漠2*k-1 例如:

k = 5確實產生了您的解決方案(2*(5-1)-1) = 7和來自官方解決方案(2*5-1) = 9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM