要求我使用numpy.linalg中的lstsq来拟合我绘制并显示如下的一组数据: strain vs time stress vs time
应变与时间之间的关系如下:
应变=应变_0 * cos(wt)
或\epsilon(t) = \epsilon_0 \cos(\omega t)
压力和时间之间的关系如下:
应力= E * strain_0 * cos(wt)-strain_rate w strain_0 * sin(wt)
或\sigma(t) = E\epsilon_0 \cos(\omega t) - \eta\omega\epsilon_0 \sin(\omega t)
问题是如何使用lstsq获得E和应变率(eta)?
我尝试过以下方法:
def getModuli(t, strain, stress):
"""
Fit stress and strain with respect to time.
Should return E (elastic modulus)
and eta (strain rate)
"""
A = np.vstack([t,np.ones(len(t))]).T
e_0,w = np.linalg.lstsq(A,strain)[0]
E_raw,eta_raw = np.linalg.lstsq(A,stress)[0]
E = E_raw/e_0
eta = eta_raw/(e_0*w)
return E,eta
data = pd.read_csv('stressStrain.csv')
t = np.array(data['t'])
strain = np.array(data['strain'])
stress = np.array(data['stress'])
getModuli(t, strain, stress)
返回的数字没有意义。我应该如何正确做呢?