Наименьшие квадраты с квадратом и переменной границей - PullRequest
0 голосов
/ 06 января 2020

В магистерской работе я пытаюсь реализовать код, который оценивает измеренные данные времени и температуры, а затем вычисляет переменные методом наименьших квадратов. Проблема в том, что Python, похоже, не меняет переменные в интегральной границе. Модель основана на источнике движущейся линии для испытания теплового отклика, если кто-то знаком с этим. Код показан ниже:

def model(time_s, coeffs):
  integral = []
    for t in time_s:

        def f(u):
            return np.exp(-((x0 ** 2 / ((coeffs[0] / cv) + alpha_l * vth))
                            + (y0 ** 2 / ((coeffs[0] / cv) + alpha_t * vth)))
                          * (vth ** 2 / (16 * ((coeffs[0] / cv) + alpha_l) * vth * u)) - u) * (1 / u)

        i, err = quad(f, 0, ((vth ** 2) * t / (4 * ((coeffs[0] / cv) + alpha_l * vth))))
        integral.append(i)

    integral = np.asarray(integral)
    return (heatflow / (4 * m.pi * cv * np.sqrt(((coeffs[0] / cv) + alpha_l * vth) *
                                                ((coeffs[0] / cv) + alpha_t * vth)))) \
           * np.exp((vth * x0) / (2 * ((coeffs[0] / cv) + alpha_t * vth))) * integral\
           + Tb + coeffs[1] * heatflow


def residuals(coeffs, y, time_s):
    return y - model(time_s, coeffs)

guess = [lam_guess, Rb_guess]

x, flag = leastsq(residuals, guess, args=(time_s, temperature_mean))

Поэтому мне нужно получить хорошее значение для coeffs[0] и coeffs[1]. Проблема в том, что Python меняет только переменную на coeffs[1]. Есть ли лучший способ реализовать модель с изменением интегральной границы для каждого временного шага? Наверное, я неправильно понял, как работает квад и / или метод наименьших квадратов.

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