Работа с переполнением в exp с помощью numpy

Используя numpy, у меня есть такое определение функции:

def powellBadlyScaled(X):
    f1 = 10**4 * X[0] * X[1] - 1
    f2 = numpy.exp(-numpy.float(X[0])) + numpy.exp(-numpy.float(X[1])) - 1.0001
    return f1 + f2

Эта функция оценивается огромное количество раз в процессе оптимизации. Это часто вызывает исключение:

RuntimeWarning: overflow encountered in exp

Я понимаю, что операнд не может быть сохранен в выделенном пространстве для числа с плавающей запятой. Но как решить эту проблему?

21
задан juliomalegria 4 March 2012 в 22:46
поделиться