Меня просят использовать lstsq из numpy.linalg, чтобы соответствовать набору данных, которые я построил и показал ниже: напряжение против времени напряжение против времени
Дается взаимосвязь между напряжением и временем: деформация = деформация_0 * cos (вес) или \epsilon(t) = \epsilon_0 \cos(\omega t)
Дается взаимосвязь между напряжением и временем: напряжение = E * деформация_0 * cos (вес) -стрейна_rate w штамм_0 * грех (вес) или \sigma(t) = E\epsilon_0 \cos(\omega t) - \eta\omega\epsilon_0 \sin(\omega t)
Вопрос в том, как получить E и скорость деформации (eta), используя lstsq?
Я пытался следующим образом:
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)
Возвращенное число не имеет смысла.Как мне сделать это правильно?