2015-04-23 76 views
0

我试图与SciPy的特殊功能克服广播错误勒polynomails,SciPy的eval_legendre

scipy.special.eval_legendre(n, x) 

它允许你在某些点评估勒评估勒让德多项式P_N(X)。然后,我想将这些勒让德多项式求和,\ Sigma_n P_n(x)。

通过在几个N个值评估P_N(x)的开始,让我们说10定义的数组

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

,你可以(x)的这些值评估P_N。

但是我的论点是100乘100的矩阵。所以,

eval_legendre(np.arange(10), matrix) 

将无法​​正常工作,因为有广播错误。这很容易克服。

但随后,我想借这些Legendre多项式

“总和= 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) 

有没有更干净/整洁的方式做到这一点?

回答

1

这应该做的工作:

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

每次调用eval_legendre函数返回您传递给它的矩阵形状的矩阵。因此,我们可以使用列表理解来列出这些矩阵,并按照您的建议对它们进行求和。

+0

不需要for循环,只需像往常一样使用广播和np.newindex即可。 –

+0

@ pv。 :我不知道我跟着你。这是一个带n个值(10,)的Legendre多项式P_n(x)和一个矩阵(100,100)的自变量。 – ShanZhengYang

+0

@StackG:我很感激帮助。我唯一的问题是为什么“Sum”保持我的矩阵形状(即数组(100,100)),但np.sum返回一个浮点数? – ShanZhengYang