Как использовать numpy.linalg.lstsq, чтобы соответствовать косинусной волне - PullRequest
0 голосов
/ 21 сентября 2018

Меня просят использовать 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)

Возвращенное число не имеет смысла.Как мне сделать это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...