Когда я запускаю код, линейное приближение не выглядит линейным, а время квадратичного подбора c истекает. Мне нужна помощь, чтобы понять, как правильно построить данные. Данные представляют собой около 40 строк данных о времени и положении с низким порядком величины. Не уверен, почему линейная подгонка так отключена и почему время подбора квадратора истекло.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit
time1 = np.ravel(pd.read_csv('DataRun_solid_2.csv', usecols=[0]))
pos1 = np.ravel(pd.read_csv('DataRun_solid_2.csv', usecols=[1]))
def linear_pos(t, vt, tau):
x = vt*(t-tau*(1-np.exp(-t/tau)))
return x
def quad_pos(t, vt, tau):
x = vt*tau*np.log(np.cosh(t/tau))
return x
popt, pcov = curve_fit(linear_pos, time1, pos1)
tau = popt[1]
vt = popt[0]
#popt1, pcov1 = curve_fit(quad_pos, time1, pos1)
#tau1 = popt1[1]
#vt1 = popt1[0]
#quad = quad_pos(time1, vt1, tau1)
linear = linear_pos(time1, vt, tau)
fig, ax = plt.subplots(num=0, clear=True)
ax.plot(time1, pos1, 'ko')
ax.plot(time1, linear, 'b-')
#ax.plot(time1, quad, 'r-')
ax.grid(True)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Position (mm)')
ax.set_title('3/8ths Ball Drop Test 1')
fig.tight_layout()