Использование curve_fit для подбора данных

Я новичок в scipy и matplotlib, и я пытался подогнать функции к данным. . Первый пример в Scipy Cookbookработает фантастически, но когда я пробую его с точками, считанными из файла, начальные коэффициенты, которые я даю (p0 ниже), кажется, никогда не меняются, а ковариационная матрица всегда ИНФ.

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

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy as sy

with open('data.dat') as f:
    noms = f.readline().split('\t')

    dtipus = [('x', sy.float32)] + [('y', sy.float32)]

    data = sy.loadtxt(f,delimiter='\t',dtype=dtipus)

    x = data['x']
    y = data['y']

    def func(x, a, b, c):
        return a*x**b + c

    p0 = sy.array([1,1,1])

    coeffs, matcov = curve_fit(func, x, y, p0)

    yaj = func(x, coeffs[0], coeffs[1], coeffs[2])

    print(coeffs)
    print(matcov)

    plt.plot(x,y,'x',x,yaj,'r-')
    plt.show()

Спасибо!

10
задан Ironil 3 June 2012 в 17:51
поделиться