Помимо попытки найти зависимость фокуса от температуры я еще проанализировал зависимость между температурой зеркала и подкупольного. Результаты получились из разряда "отсутствие результата — тоже результат": зависимость фокуса от температуры разных элементов крайне неявная (коэффициент корреляции мал, стандартное отклонение велико); зависимость температуры зеркала от разности температур между ним и подкупольным та же, что и была раньше (для изменения температуры зеркала на 1°C за один час в подкупольном температура должна отличаться на 10°C).
Наилучший коэффициент корреляции (-0.66) получился между фокусом и температурой зеркала. Получилось, что F = 40.22 - 0.166*Tmirror. Стандартное отклонение, правда, все равно велико: 1.49°C. Вот картинка:
Фокус и температура зеркала.
Температуры я взял из своего архива, написав утилитку для извлечения данных (на основе CGI, который используется для формирования графиков и выдачи данных в веб). Так как данные шли с разрывами (то сервер ломался, то свет отключали), я выбрал 10 наиболее длинных непрерывных кусков и проанализировал их. Получилось, что, во-первых, почему-то корреляция между температурами зеркала и подкупольного вышла несмещенной (максимум приходится четко на 0). Понятно, что в случаях, когда включалась система охлаждения, наблюдался сдвиг максимума.
Температуры для корреляции
Корреляция температур с рисунка выше
Температуры, когда система охлаждения не включалась
Корреляция температур с рисунка выше
Ну, а для скоростей изменения температуры зеркала получались примерно одинаковые коэффициенты: около 0.01час-1. Вот пример данных с наибольшей корреляцией:
Зависимость скорости изменения температуры зеркала от разности температур зеркала и подкупольного
А вот все (за исключением выбросов) данные:
Все данные: с 31/12/10 23:29:58 по 24/09/13 13:56:57; аппроксимация: F=0.0096*dT+0.0152
Для того, чтобы преобразовать UNIX-time и юлианские даты в обычные даты я использовал простую функцию:
function S = JDtoSTR(J)
fmt = "%d/%m/%y %T";
if(nargin == 2) fmt = "%d/%m/%y"; endif
J = J(:);
S = [];
for i = 1:size(J,1)
S = [S; strftime(fmt, localtime((J(i)-2440587.5)*86400))];
endfor
endfunction
(аналогично с UNIX-time, только не надо юлианские даты в UNIX-time переводить).
function Y = movingavg(Window, Data)
% Y = movavg(Window, Data)
% moving average of *Data* by patterns of *Window* size
%
Y = filter(ones(1,Window)/Window, 1, Data);
endfunction
судя по поведению первого графика (поведение максимумов и минимумов) очень перспективно строить линейную регрессионную модель добавив в неё ещё признаков (в том числе качественных) описывающих условия замера.
Да с температурами-то ничего особо интересного. Это я так, ради любопытства сделал. Интересно было проверить, можно ли однозначно вычислять новое положение фокуса, исходя из изменений температуры. Получается, что нельзя. Надо лазерный дальномер вешать.
скорее всего можно, но не просто из температуры :) то как крайние значения практически лежат на параллельных прямых говорит о простой линейной связи. нужен только параметр в модель --- может это в какую сторону был наклонен агрегат? есть ведь записи привязанные по времени о том как установка была ориентирована в моменты замера температуры?
no subject
Date: 2013-09-26 04:57 pm (UTC)no subject
Date: 2013-09-26 05:09 pm (UTC)no subject
Date: 2013-09-26 06:44 pm (UTC)no subject
Date: 2013-09-26 06:49 pm (UTC)