Эта статья продолжение серии публикаций по эффекту Шноля - космо-физических циклов проявляющихся в случайных процессах (прежде всего в радиоактивном распаде). Здесь приведенный алгоритм используется и в данной статье. Изменение косметические (графики вероятностей не двигаются до более полного совпадения по дистанции Эвклида). Данные предоставлены пользователем 48 дней с 19 декабря 2012 года по 6 февраля 2013 года распад стронция-90, измерение дозиметром ДП-5В.
![27.32 лунный звездный месяц 27.32 лунный звездный месяц](https://habrastorage.org/webt/df/z0/mp/dfz0mpsigvnwlo5z5vkvs63csre.jpeg)
import ephem
date = ephem.now()
str(ephem.next_full_moon(date))
'2021/9/20 23:54:39' - Полнолуние 20 сентября 2021 года 23:54 UTC
Надо отметить что периоды как звездного года так и лунного месяца приблизительны. Продолжительность года, тропического, и сидерического вместе с ним, величина нестабильная...http://www.solar-climate.com/pd/MEZH2013.pdf
![](https://habrastorage.org/getpro/habr/upload_files/50f/968/ee0/50f968ee07c0f9716baa8ad3636d622b.gif)
Продолжение функции pikmatch (из дальнего угла статьи) самое важное — комбинаторное сравнение критических точек.
ret=(ab1/ab2)/(nb1/nb2); — Соотношение высоты (y ось) критических точек внутри одной функции к такому же соотношению внутри другой функции
re=(ac1/ac2)/(nc1/nc2) — То же что и в предыдущем случае но теперь по оси x длины между точками
red=(φ°/ξ°)/(θ°/τ°) — В заключении меряем углы
rme=(ab1+1)*(ab2+1)*(nb1+1)*(nb2+1); — коэффициент важности отношения
Теперь финальная формула res=re*red*ret*rme
res — это показатель похожести функции 1 на функцию 2
for e in range(len(p)+len(p1)):
for l in range(len(p)+len(p1)):
if e>=len(p): me=minx[e-len(p)];pe=p1[e-len(p)];nme=nm1[e-len(p)];
else: me=maxx[e];pe=p[e];nme=nm[e];
if l>=len(p): ml=minx[l-len(p)];pl=p1[l-len(p)];nml=nm1[l-len(p)];
else: ml=maxx[l];pl=p[l];nml=nm[l];
red1=1;red=1;ab=y[pl]-y[pe];ac=pe-pl;au=x[ml]-x[me];ao=me-ml;hip=math.sqrt(ab**2+ac**2);hipe=math.sqrt(ao**2+au**2);
if (hip!=0)and(hipe!=0):
if math.asin(abs(au)/hipe)!=0:
red=abs(abs(math.asin(abs(ab)/hip)/math.asin(abs(au)/hipe))); # меряем углы
ret=abs(1-abs((0.00+abs((y[pl]+0.01)/(y[pe]+0.01)))/(0.00+abs((x[ml]+0.01)/(x[me]+0.01)))));uj=uj+1;
re=0+abs(1-abs(float(abs(pe-pl)+1))/float(abs(me-ml)+1));rme=(y[pe]+1)*(y[pl]+1)*(x[me]+1)*(x[ml]+1);rmu+=rme;
res+=abs(re*rme*red*ret);
return len(pi)*len(pi),res/uj,p,p1; # или /uj? rmu
До этого идет подготовка двух вероятностей к сравнению:
Построенние гистограмм
Их сглаживание
Нахождение ключевых точек экстремумов
Алгоритмом DTW соотнесение экстремумов одной картинки вероятности с другой
Для целей краткости я не буду заново приводить весь код - его можно найти на гитхабе - в частности на stellar_moon_shnoll_radioactivity.py и в предыдущей статье по поиску звездного года и звездных суток
matrix = pickle.load(open("natrix.pkl","rb"));
koeff=60;ex=20;ko=60;b=[0 for e in range(ko+ex)];bb=[0 for e in range(ko+ex)];#C:\\28-08-2004.txt /usr/local/28-08-2004.txt
#matrix = [line.strip() for line in open('/users/andrejeremcuk/downloads/natrix.txt')]; #days.dat
arra=[[ 0 for e in range(koeff)] for t in range(int(len(matrix)/koeff))];harra=[0 for t in range(int(len(matrix)/koeff))];
arrab=[[ 0 for e in range(koeff)] for t in range(int(len(matrix)/koeff))];harrab=[0 for t in range(int(len(matrix)/koeff))];z=0;
for i in range(len(matrix)): matrix[i]=int(matrix[i]);
for jk in range(1440*48): #int(len(matrix)/koeff)
for mk in range(koeff): arra[jk][mk]=matrix[z];z=z+1;
for jk in range(1440*48): #440*48
harra[jk]=np.histogram(arra[jk], bins=ko, density=False);harrab[jk]=np.histogram(arra[jk], bins=ko, density=False);harra[jk]=harra[jk][0];harrab[jk]=harrab[jk][0]
for u in range(5): harra[jk] = movingaverage(harra[jk], 4);harrab[jk]=movingaverage(harrab[jk], 4);
Подготовка и загрузка данных.
Обработка данных и функция сравнения 15*1440 раз попарное с отступом сравнение картинок вероятностей:
def stat_distanc(counter):
for mk in range(1440*15):# 24000
mi=[];mis=[];mis1=[];mii=[];ei=[];ti=[];dots=[];dots1=[];resume=0;resum=0;
if counter=='l': rn=random.randint(0,1439);x=harra[mk];y=harra[random.randint(0,1440*48)];#print rn; #y=harra[random.randint(0,1439)];
else: y=harra[mk+int(1440*29.5306)-counter];x=harra[mk];#29.5306 #27.32
#print(x);print(y)
optimal=0;ret=pik(x,y);minmaxx=ret[6];minmaxy=ret[7];maxx=ret[0];maxy=ret[1];minx=ret[2];miny=ret[3]
optimal1=0;#print mk;
#for k in range(len(minmaxx)): dots.append(x[minmaxx[k]]);#minmaxx[k]=59-minmaxx[k];
#for k in range(len(minmaxy)): dots1.append(y[minmaxy[k]]);#minmaxy[k]=59-minmaxy[k]
outputs=pikmatch(x,y,maxx,maxy,-optimal,minmaxx,miny,minx);
outputs1=pikmatch(y,x,maxy,maxx,optimal,minmaxy,minx,miny);
#.set_alpha(0.5)
mx1=minmaxx[:];my1=minmaxy[:];mxx1=maxx[:];mxx2=minx[:]
for k in range(len(minmaxx)): dots.append(x[minmaxx[k]]);minmaxx[k]=59-minmaxx[k];
for k in range(len(maxx)): maxx[k]=59-maxx[k];
for k in range(len(minx)): minx[k]=59-minx[k];
minmaxx=minmaxx[::-1];maxx=maxx[::-1];minx=minx[::-1];
output=pikmatch(x[::-1],y,maxx,maxy,-optimal1,minmaxx,miny,minx);minmaxx=minmaxx[::-1];mx2=minmaxx[:]; #
for k in range(len(minmaxy)): dots1.append(y[minmaxy[k]]);#minmaxy[k]=59-minmaxy[k]
minmaxx=mx1[:];
output1=pikmatch(y,x[::-1],maxy,maxx,optimal1,minmaxy,minx,miny);
#data.append((min(outputs1[1]+outputs[1],output[1]+output1[1])))
resume+=(min(outputs1[1]+outputs[1],output[1]+output1[1]));
return resume/100;
base=[];
for i in range(1,40):
base.append(stat_distanc(-i));print(i,base[-1])
Итак - это список y=harra[mk+int(1440*29.5306)-counter];x=harra[mk]
В сутках 1440 минут.
Сравнение двух гистограмм y и x
mk пробегает все значения от 0 до 15*1440 int(1440*27.32)=int(39340.8)=39340
или int(1440*27.32)-counter= 39340-(-1)=39341 минуты разницы между парами гистограмм. Всего порядко 71000 пар минутных гистограмм в базе данных natrix.pkl
(1, 0.03720469975390827) - counter=(-1) звездный лунный месяц!
(2, 0.8240805685848609)
(3, 0.18026863339278953)
(4, 0.18890286408574447)
(5, 0.25710611034587094)
(6, 0.40811789053184866)
(7, 0.02679778984615549) - экстремум
(8, 0.19556993703556264)
(9, 0.2656108825684261)
(10, 0.7023092195454633)
(11, 0.9020048813995623)
(12, 0.15056575136836448)
(13, 0.20395566152660963)
(14, 0.13283778948543773)
(15, 0.13547446924583462)
(16, 0.7920960027018115)
(17, 0.2083328640919179)
(18, 0.13067942631807888)
(19, 0.7859644559915133)
(20, 3.604454511125762)
(21, 0.13440820636528378)
(22, 0.20746970222675998)
(23, 0.0510968974544833)
(24, 0.9530861712762281)
(25, 0.1284584909718456)
(26, 0.15656732573418314)
(27, 1.176506212754484)
(28, 0.04871082635360579)
(29, 0.38628477666689237)
(30, 0.15699750109619914)
(31, 0.23916752153424567)
(32, 0.08397878096311373)
(33, 0.10648490713511728)
(34, 0.24418916134642366)
(35, 0.8269781626995687)
(36, 0.05185633430034331)
(37, 23.874726604353317)
(38, 0.8699272070552455)
(39, 0.2904253601196485)
Полный файл от +1 до +1440 минут сравнения 15*1440 пар;
Итак - это список y=harra[mk+int(1440*29.5306)-counter];x=harra[mk]
В сутках 1440 минут.
Сравнение двух гистограмм y и x
mk пробегает все значения от 0 до 15*1440 int(1440*29.5306)=int(42524.064)=42524
или int(1440*29.5306)-counter= 42524-(-1)=42525 минуты разницы между парами гистограмм. Всего порядко 71000 пар минутных гистограмм в базе данных natrix.pkl
(1, 0.03287808742170125) - counter=-1 Экстремум на фазном лунном месяце!
(синодический месяц)
(2, 0.04950575951819716)
(3, 0.806490136900523)
(4, 0.046990467649853505)
(5, 0.0532420976445049)
(6, 0.09002399019948747)
(7, 0.027606309655760546) - тоже экстремум
(8, 0.11782569015338376)
(9, 0.5374459426710351)
(10, 0.07008143466407309)
(11, 0.04994860016543793)
(12, 0.03345387053788801)
(13, 0.30361706608612754)
(14, 0.7318734780107466)
(15, 0.7908768432448845)
(16, 0.03926979110341043)
(17, 0.10123586725375504)
(18, 0.06118780321833314)
(19, 0.7053190975690488)
(20, 0.5964417623151171)
(21, 0.1399610359044906)
(22, 0.425152950080484)
(23, 0.1417306967135202)
(24, 0.17499408827928842)
(25, 0.07561006907504836)
(26, 0.07849399200880486)
(27, 0.08423551075280011)
(28, 0.44475709935476937)
(29, 0.018872329737888528) - экстремум
(30, 0.04165488266741375)
(31, 0.0635971263446504)
(32, 0.11246050170616367)
(33, 0.23838722809785304)
(34, 0.45498725814384633)
(35, 2.553495182239864)
(36, 2.188657924894538)
(37, 0.037402046247959495)
(38, 0.12171633541393172)
(39, 0.24907168355833093)
base=[];
for i in range(1440):
base.append(stat_distanc(-i));print(i,base[-1])
Аномалистический месяц - промежуток времени между последовательными прохождениями Луны через перигей ее орбиты (27.55455 сут).
Драконический месяц - промежуток времени между последовательными прохождениями Луны через один и тот же узел ее орбиты на эклиптике (27.21222 сут); имеет значение в теории затмений.
Сидерический или звездный месяц - промежуток времени, за который Луна совершает оборот вокруг Земли и возвращается в ту же точку небесной сферы относительно звезд; равен периоду вращения Луны (27d07h43m11s = 27.32166 сут).
Синодический или лунный месяц - период смены лунных фаз (29d12h44m03s = 29.53059 сут; меняется от 29.25d до 29.83d вследствие эллиптичности лунной орбиты); служит основанием лунных календарей.
Тропический месяц - период возвращения Луны к той же эклиптической долготе, например, к точке весеннего равноденствия (27.32158 сут).
Вывод такой: очень странно что два экстремума суммы похожих пар гистограмм приходятся на звездный лунный месяц и лунный месяц фаз (синодический месяц).
0.03287808742170125 - 29.5306 дней
0.03720469975390827 - 27.32 дней
Планируется следующая статья про периоды в радиоактивном распаде соотнесенном с временем рассвета заката солнца и луны. Видимость звезд. Эфемериды.