Уже давно мы хотели определить, есть ли явная зависимость между значением фокусного расстояния (по датчику на P2) в первичном фокусе БТА от температуры. А вчера (отчасти в рамках помощи студенту, готовящему отчет, но по большому счету - интереса ради) я сделал небольшие расчеты. Оказалось, что некоторая корреляция есть, но уж больно она невелика.
Итак, уже давно установленные в подкупольном и на БТА термодатчики (к сожалению, не все) регулярно (где-то 1 раз в 15 минут) опрашиваются с занесением значений в БД (термодатчики: Кравченко В.М., опрос и запись в БД: Карпов С.В.). Я когда-то делал веб-морду с псевдо-3D на SVG для датчиков подкупольного и телескопа + веб-морду с 3D на webGL для датчиков на зеркале. Афанасьев В.Л. снабдил нас табличкой с результатами фокусировки по наблюдениям на SCORPIO за 2012 г. Осталось лишь сопоставить температуры с отсчетами фокуса.
Отсчеты температур были получены из веб-морды доступа к БД датчиков (С.В. Карпов) и сохранены в файл sensor5.txt (датчик на штанге). Вытащить значения оттуда и преобразовать время к unix-time не составило труда:
[date time T ] = textread('sensor5.txt', "%s %s %f", 30000, 'headerlines', 1);
L=size(date,1);
for i=1:L; Ttime(i) = mktime(strptime([date{i} " " time{i}], "%Y-%m-%d %X")); endfor
В переменной T теперь находятся значения температуры, а в Ttime - соответствующие значения unix-time.
Сводная табличка с фокусами была посложней, почему-то octave отказался ее считывать напрямую, поэтому я подготовил промежуточную табличку с тремя столбцами (дата, время, фокус):
awk '{print $5 " " $6 " " $13}' 2012_mod.txt > 2012_mod_right.txt
sed -i -e 's/| /\t/g' -e 's/\.20/.2012/' 2012_mod_right.txt
Из этой таблички тоже считал значения фокуса и unix-time:
[date time F] = textread('2012_mod_right.txt', "%s %s %f", 30000, 'headerlines', 2);
L=size(date,1);
for i=1:L; Ftime(i) = mktime(strptime([date{i} " " time{i}], "%d.%m.%Y %X")); endfor
Понятно, что времена различаются: во-первых, наблюдения производятся только ночью, да и не так уж и часто; во-вторых, где-то в августе прошлого года сервер "сгорел", поэтому логгирование температур длительное время не велось. Выбрасываем из параметров для фокуса даты, для которых не было записей температуры:
idxs = find(Ftime > Ttime(end));
F(idxs)=[];
Ftime(idxs)=[];
Теперь остается получить значения температур для времен измерения отсчетов фокуса. Я просто сделал элементарную интерполяцию:
Tinterp = interp1(Ttime, T, Ftime);
Теперь в переменной Tinterp находятся значения температуры, соответствующие времени измерения значений F. Графики температур и фокусов на первый взгляд не сильно-то обнаруживают какую-нибудь зависимость:
Значения температуры и отсчетов фокусного расстояния за 2012г.
И действительно, коэффициент корреляции получился небольшим:
corr(F, Tinterp)
ans = -0.56538
Не единица, конечно, но и не нуль. Вот что представляет собой график T-F:
Температура штанги и отсчеты фокуса.
Ну, а раз у нас ненулевой коэффициент корреляции, попробуем все-таки получить коэффициенты линейной аппроксимации наименьшими квадратами:
X=[Tinterp' ones(size(Tinterp'))];
X \ F
ans =
-0.12449
39.60753
Таким образом, у нас получилось: F = -0.12449*T + 39.60753. Нарисуем аппроксимацию на графике:
Аппроксимация прямой.
Ложатся точки вроде бы более-менее нормально, но уж очень большой разброс получается. Т.е. однозначно сказать: «да, мы можем в течение наблюдений подфокусироваться без применения длительной процедуры с измерением полуширин изображений звезд для разных значений F и последующим поиском минимума квадратичной аппроксимацией, а лишь исходя из значений температуры штанги» - мы не имеем права. Слишком уж много параметров вовлечено в изменение фокуса. Это вам не светоприемник, расположенный на одном-единственном швеллере!
Кстати, насчет швеллера: если считать ТКЛР штанг равным 13·10¯⁶, коэффициент в зависимости F(T) был бы равен 13e-6*24e3=0.312! Возможно, особая форма каркаса телескопа позволяет снизить почти в 3 раза изменение фокуса из-за теплового расширения.