«RuntimeWarning: недопустимое значение, обнаруженное при включении питания» с использованием ODR Scipy - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь подогнать функцию, используя пакет Scipy с ортогональной регрессией расстояния (odr), и постоянно получаю следующую ошибку:

"RuntimeWarning: invalid value encountered in power"

это произошло, когда я использовал scipyЭто функция curve_fit, но я всегда мог спокойно проигнорировать предупреждение.Но теперь кажется, что это вызывает числовую ошибку, которая останавливает примерку.Мой код основан на примере, который я нашел здесь:

Пример python scipy.odrpack.odr (с примером ввода / вывода)?

Вот мой код:

import numpy as np
import scipy.odr.odrpack as odrpack


def divergence(x,xDiv):
    return  ( 1 - (x/xDiv) )**( -2.4 )


xValues = np.linspace(.25,.37,12)
yValues = np.array([  6.94970607,   9.12475506,  10.65969954,  12.30241672,
        14.44154148,  16.00261267,  19.98693664,  25.93076421,
        30.89483997,  35.27106466,  50.81645983,  68.06009144])


xErrors = .0005*np.ones(len(xValues))
yErrors = np.array([ 0.31905094,  0.37956865,  0.24837562,  0.68320078,  1.25915789,
        1.40241088,  0.33305157,  1.37165251,  0.32658393,  0.52253429,
        1.04506858,  1.30633573])




wcModel = odrpack.Model(divergence)

mydata = odrpack.RealData(xValues, yValues, sx=xErrors, sy=yErrors)

myodr = odrpack.ODR(mydata, wcModel, beta0=[.8])


myoutput = myodr.run()
myoutput.pprint()

Из предыдущих вопросов об этой ошибке я обнаружил здесь:

NumPy, RuntimeWarning: недопустимое значение, обнаруженное при включении питания

Iподозревал, что проблема в том, что я поднимаю отрицательное значение до степени дробного значения.Но то, что я поднимаю до степени -2.4 (1-x/xDiv), не является отрицательным (по крайней мере, при первоначальном предположении xDiv=.8).Но когда я пытаюсь сделать свои значения y сложного типа, я получаю новую ошибку:

"ValueError: y could not be made into a suitable array"

из строки с командой

myoutput = myodr.run().

Единственные примеры, которые я могу найти, этоиспользовать этот пакет odr, подходят для полиномов, так что я подозреваю, что это может быть проблемой?

...