¿La mejor manera de escribir una función de Python que integre un gaussiano?

Al intentar usar el método quad de scipy para integrar un gaussiano (digamos que hay un método gaussiano llamado gauss), estaba teniendo problemas para pasar los parámetros necesarios a gauss y dejar el quad para hacer la integración sobre la variable correcta. ¿Alguien tiene un buen ejemplo de cómo usar quad con una función multidimensional?

Pero esto me llevó a una gran pregunta sobre la mejor manera de integrar un gaussiano en general. No encontré una integración gaussiana en scipy (para mi sorpresa). Mi plan era escribir una función gaussiana simple y pasarla a quad (o tal vez ahora un integrador de ancho fijo). ¿Qué harías

Edit: ancho fijo que significa algo así como trapz que usa un dx fijo para calcular áreas bajo una curva.

Lo que he llegado hasta ahora es un método make___gauss que devuelve una función lambda que luego puede entrar en quad. De esta forma puedo hacer una función normal con el promedio y la varianza que necesito antes de integrar.

def make_gauss(N, sigma, mu):
    return (lambda x: N/(sigma * (2*numpy.pi)**.5) *
            numpy.e ** (-(x-mu)**2/(2 * sigma**2)))

quad(make_gauss(N=10, sigma=2, mu=0), -inf, inf)

Cuando intenté pasar una función gaussiana general (que debe llamarse con x, N, mu y sigma) y completar algunos de los valores usando quad como

quad(gen_gauss, -inf, inf, (10,2,0))

los parámetros 10, 2 y 0 NO necesariamente coincidían con N = 10, sigma = 2, mu = 0, lo que provocó la definición más extendida.

El erf (z) en scipy.special requeriría que defina exactamente qué es t inicialmente, pero es bueno saber que está allí.

Respuestas a la pregunta(5)

Su respuesta a la pregunta