克服勒让德多项式的广播错误,scipy eval_legendre

Overcoming broadcasting error for Legendre polynomails, scipy eval_legendre

我正在尝试用 scipy 的特殊函数

计算勒让德多项式 P_n(x)
scipy.special.eval_legendre(n, x)

这使您可以在某些点上评估勒让德。然后我想将这些勒让德多项式加在一起,\Sigma_n P_n(x)。

首先评估 P_n(x) 在几个 n 值,比方说 10。定义一个数组

arr = np.arange(10) = array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])

并且您可以在这些值下评估 P_n(x)。

然而,我的论点是一个 100 x 100 的矩阵。所以,

eval_legendre(np.arange(10), matrix)

将无法运行,因为存在广播错误。这很容易克服。

但是,我想对所有这些勒让德多项式求和

"Sum = P_0(x) + P_1(x) + P_2(x) + ... + P_10(x)"

使用

import numpy as np
np.sum()

这更复杂,因为我正在对每个 P_n(x) 求和。

我怀疑正确的做法是

for i in arr:
    np.sum(i, matrix)

有没有更多的clean/tidy方法来做到这一点?

这应该可以完成工作:

sum( [eval_legendre(x,matrix) for x in range(1,10)] )

每次调用 eval_legendre 函数 returns 一个矩阵,其形状与您传递给它的矩阵相同。所以我们可以使用列表理解列出这些矩阵,并按照您的建议对它们求和。