2013-01-14 3 views
1

파이썬의 방정식에 일부 데이터를 맞추려고하는데 어려움이 있습니다.파이썬과 gnuplot의 방정식에 데이터 피팅

y(t)=yo+a(t-ti)^b+kt 
a, ti, k b 및 피팅 파라미터이다

tdisp 및 배열은 각각의 시간과 변위를 나타내는 한다거나 할있다 : I 방정식있다. 방정식은 몇 가지 반복과의 gnuplot 미세에 맞게,하지만 파이썬에 피팅하면 오류의 최대 발생합니다 : -

ValueError: array must not contain infs or NaNs 

전체 스택 추적은 다음과 같습니다

creep_test.py:246: RuntimeWarning: invalid value encountered in power 
    fitfunc = lambda p, t: disp_list[0]+(p[0]*(t-p[1])**p[2])+p[3]*t # Target function 
Traceback (most recent call last): 
    File "creep_test.py", line 374, in <module> 
    main() 
    File "creep_test.py", line 368, in main 
    python_fit(filename) 
    File "creep_test.py", line 256, in python_fit 
    out = optimize.leastsq(errfunc, p0[:], args=(t, disp,err), full_output=1) 
    File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 338, in leastsq 
    cov_x = inv(dot(transpose(R),R)) 
    File "/usr/lib/python2.7/dist-packages/scipy/linalg/basic.py", line 285, in inv 
    a1 = asarray_chkfinite(a) 
    File "/usr/lib/python2.7/dist-packages/numpy/lib/function_base.py", line 590, in asarray_chkfinite 
    "array must not contain infs or NaNs") 
ValueError: array must not contain infs or NaNs 

내가 그 주위에 재생과 발견을 그 용어는 ti 주위에 고정 ti 경우 피팅 작동 문제를 일으키는. 나는 스프레드 시트를 사용했습니다과 ti에서 t의 값을, 방정식은 #VALUE를 던졌습니다 (아마도 때문에 가상)

기본적으로 내가 무시 가정의 gnuplot 같은 곡선을 (에 맞게 파이썬을 얻을 수있는 방법이있다 유효하지 않은 결과)? 나는 내 프로그램의 일부에 사용 된 코드를 다음과 같습니다.

fitfunc = lambda p, t: disp_list[0]+(p[0]*(t-p[1])**p[2])+p[3]*t # Target function 
    errfunc = lambda p, t, y, err: (fitfunc(p, t) - y)/(err) # Distance to the target function 
    err=0.01 
    p0 = [ 50, 35.5,0.005, 0.001] # Initial guess for the parameters 
    out = optimize.leastsq(errfunc, p0[:], args=(t, disp,err), full_output=1) 
    print out[0] 
    print out[1] 

고마워요!

+0

't'와'disp'가 어떻게 생겼는지 보여줄 수 있습니까? – ford

+0

아 죄송합니다 disp_list [0] 요 값 (내 데이터에서 읽은 목록에서 첫 번째 값 (변위를 나타냅니다) t는 초 단위의 시간입니다 (독립형) – Phil

+0

오, t는 배열 변수 형식입니다 – Phil

답변

1

가치있는 교훈을 얻었습니다. 이전에 피팅했던 더 단순한 방정식을 시도하고 해독하기 위해 사용했던 시작 매개 변수는 Im 피팅에 대한 더 복잡한 방정식을 위반했습니다. 피팅이 솔루션이 의미가 없다고 주장하는 경우 항상 시작 매개 변수를 확인하십시오. 힘든 방법을 배우는 파이썬 덕분에 ..... .....