克服勒让德多项式的广播错误,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 一个矩阵,其形状与您传递给它的矩阵相同。所以我们可以使用列表理解列出这些矩阵,并按照您的建议对它们求和。
我正在尝试用 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 一个矩阵,其形状与您传递给它的矩阵相同。所以我们可以使用列表理解列出这些矩阵,并按照您的建议对它们求和。