# Gauss Quadrature in numerical methods

In the following code I have implemented gauss quadrature. It is working correctly for my first function but for my second function I am getting an error.

So,

Is it possible to do this code without sing p_roots? and if not how do I fix it so my second function works?

from scipy.special.orthogonal import p_roots
[x,w] = p_roots(n+1)
G = 0.5*(b-a)*sum(w*f(0.5*(b-a)*x+0.5*(b+a)))
return G


giving the output

291.6666666666665

---------------------------------------------------------------------------
TypeError                                 Traceback (most   recent call last)
<ipython-input-22-b4248b816207> in <module>()
5     return G
6 print(gaussquad(lambda x: x**2,5,10,100))
----> 7 print(gaussquad(lambda x: sin(x),0,pi/2,100))

<ipython-input-22-b4248b816207> in gaussquad(f, a, b, n)
3     [x,w] = p_roots(n+1)
----> 4     G = 0.5*(b-a)*sum(w*f(0.5*(b-a)*x+0.5*(b+a)))
5     return G
6 print(gaussquad(lambda x: x**2,5,10,100))

<ipython-input-22-b4248b816207> in <lambda>(x)
5     return G
6 print(gaussquad(lambda x: x**2,5,10,100))
----> 7 print(gaussquad(lambda x: sin(x),0,pi/2,100))

TypeError: only size-1 arrays can be converted to Python scalars


Vectorization issues. Use numpy instead

import numpy
from scipy.special.orthogonal import p_roots


1.000000000000001