AtributoErro em python / numpy ao construir função para determinados valores
Estou escrevendo código Python para gerar e traçar funções 'super-gaussianas', como:
def supergaussian(x, A, mu, sigma, offset, N=8):
"""Supergaussian function, amplitude A, centroid mu, st dev sigma, exponent N, with constant offset"""
return A * (1/(2**(1+1/N)*sigma*2*scipy.special.gamma(1+1/N))) * numpy.exp(-numpy.absolute(numpy.power(x-mu,N))/(2*sigma**N)) + offset
init_x = numpy.arange(-100,100,1.0)
init_y = supergaussian(init_x, 1, 0, 25, 0, N=12)
O código a seguir apenas faz um gráfico disso. Por uma razão que não consigo entender, este código funciona bem quando se usa o valor padrão de 8 paraN
, ou para valores deN
até 13. QuandoN
é 14 ou superior, a função falha com uma mensagem de erro:
AttributeError: 'float' object has no attribute 'exp'
Na linha de retorno na definição da função. Alguma ideia? Como a única coisa nessa linha que usa .exp é anumpy.exp
a mensagem de erro parece implicar quenumpy
está sendo interpretado como um float, mas apenas para grandes valores deN
...
Estou executando o python 3.3.2 com numpy 1.7.1 e scipy 0.12.0