파이썬의 방정식에 일부 데이터를 맞추려고하는데 어려움이 있습니다.파이썬과 gnuplot의 방정식에 데이터 피팅
y(t)=yo+a(t-ti)^b+kt
a
,
ti
,
k
b
및 피팅 파라미터이다
및 t
disp
및 배열은 각각의 시간과 변위를 나타내는 한다거나 할있다 : 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]
고마워요!
't'와'disp'가 어떻게 생겼는지 보여줄 수 있습니까? – ford
아 죄송합니다 disp_list [0] 요 값 (내 데이터에서 읽은 목록에서 첫 번째 값 (변위를 나타냅니다) t는 초 단위의 시간입니다 (독립형) – Phil
오, t는 배열 변수 형식입니다 – Phil