Переход:.....Назад.....Содержание.....Вперед

Моделирование пульсаров

Программа моделирования пульсаров.

{1} {$N+}

{2} Program Pulsar_5;

{3} Label Lm115, Lm118, Lm125, Lm127, Lm137, Lm140, Lm143, Lm144, Lm149, Lm153, Lm157, Lm162, Lm163, Lm167, Lm176, Lm183, Lm185,Lm187;

{4} Var {5} Z : Array[1..13000] of LongInt; {6} Y : Array[1..2000] of LongInt;

{7} Accuracy, Accur2, C1, CosinusFA, CurrentLightSpeed, D0, Difference, DistToStar, Dzero, Eccentr, FA, FirstApprox, H1, H2, LiSp_0, LightSpeedMin, LightSpeedMax, LiSpMinMin, LiSpMaxMax, LiSp_X, LS0_2, LSX_2, MaxTime, MaxTimeSmall, MeanAnomaly, MinTime, Perem, Pin, PulsPer, PR3, PR4, PR5, PR6, PR7, PR8, PR9, Qzw, RadiationPeriod, ReceptionCell, Rkps, R_star, S1, SecondApprox, SinusFA, Something, StarPeriod, TangensFA, Tay, TayMaxMax, TayMinMin, T_X, Tinit, Tizl, Traspr, Traspr_1, Traspr_2, Traspr_3, Umax_2, Uzero, Uzero_2, Umin_2, U2, W : Extended;

{8} F1: Text; {9} I, IKK, INN, IRT, IZ, J, J1, J2, JVM, K, K_df, Kmn, Ksum, Kz, KZR, Less, MaximumValue, More, MV, Mz, Mzw, N1, Nav, Nprob, N_e: LongInt;

{10} Procedure Gistogram (Time: Extended);

{11} Label Lm18,Lm20,Lm21; begin {12} If Time < 0 then goto Lm18 else begin {13} If Time > MaxTimeSmall then goto Lm20 else begin {14} W:=(Time/ReceptionCell)+1.0E0; {15} K:=Trunc(W); {16} Z[K]:=Z[K]+1; end; end; {17} goto Lm21; Lm18: Less:=Less + 1; {19} goto Lm21; Lm20: More:=More + 1; Lm21: Exit; end;

{22} Procedure LSpeedFT (Tizl: Extended);

{23} Label Lm28,Lm37; begin {24} MeanAnomaly:=2*Pin*Tizl/StarPeriod; {25} H1:=(MeanAnomaly - Pin)/PR3; {26} H2:=H1*H1*H1; {27} FirstApprox := Pin + H1 + Eccentr*H2/PR5; Lm28: SinusFA:=Sin(FirstApprox); {29} CosinusFA:=Cos(FirstApprox); {30} S1:=Eccentr*SinusFA; {31} C1:=Eccentr*CosinusFA; {32} SecondApprox:=FirstApprox-(FirstApprox-S1-MeanAnomaly)/(1-C1); {33} Difference := abs(FirstApprox - SecondApprox); {34} If Difference < Accuracy then goto Lm37 else begin {35} FirstApprox := SecondApprox; end; {36} goto Lm28; Lm37: U2:= Uzero_2*(1+C1)/(1-C1); {38} CurrentLightSpeed:= LiSp_0*Sqrt(1+U2); {39} Exit; end;

{40} Procedure FirstCycle (Tinit: Extended);

{41} Label Lm44,Lm51; begin {42} MaxTime := Tinit + MaxTimeSmall; {43} J1:=-1; Lm44: J1:=J1+1; {45} Perem := J1*RadiationPeriod; {46} Tizl := MaxTime - Perem; {47} LSpeedFT (Tizl); {48} If J1 > 0 then goto Lm51 else begin {49} LightSpeedMax:=CurrentLightSpeed; {50} Traspr_1:=DistToStar/LightSpeedMax; end; Lm51: Traspr:=DistToStar/CurrentLightSpeed; {52} Tay := Tizl + Traspr - Traspr_1 - Tinit; {53} Gistogram (Tay); {54} If Tizl > Tinit then goto Lm44 else {55} Exit; end;

{56} Procedure SecondCycle (Tinit: Extended);

{57} Label Lm60,Lm67; begin {58} MinTime := Tinit - MaxTimeSmall; {59} J2:=-1; Lm60: J2:=J2+1; {61} Perem := J2*RadiationPeriod; {62} Tizl := Tinit - Perem; {63} LSpeedFT (Tizl); {64} If J2 > 0 then goto Lm67 else begin {65} LightSpeedMax:=CurrentLightSpeed; {66} Traspr_2:=DistToStar/LightSpeedMax; end; Lm67: Traspr:=DistToStar/CurrentLightSpeed; {68} Tay := Tizl + Traspr - Traspr_2 - MinTime; {69} Gistogram (Tay); {70} If Tizl > MinTime then goto Lm60 else {71} Exit; end;

{72} {Main Procedure}

begin {73} Writeln(''); {74} Writeln ('Program for simulation of pulsars'); {75} Pin :=3.1415926535897932385E0; {76} LiSp_0 := 2.99792458E8; {77} Accuracy:=2.0E-18; {78} Accur2:=2.0E-6; {79} KZR := 139; {80} Uzero:=1.E-2; {81} Eccentr:=9.E-4; {82} StarPeriod:=3.6E+10; {83} Rkps:=3.0E+19; {84} K_df := 10; {85} RadiationPeriod :=1.0E-4; {86} ReceptionCell :=1.0E-3; {87} MaxTimeSmall := 13000*ReceptionCell; {88} LS0_2 := LiSp_0*LiSp_0; {89} Uzero_2:=Uzero*Uzero; {90} PR3:=1 + Eccentr; {91} PR4:=1 - Eccentr; {92} PR5:=6*PR3; {93} PR6:=PR3*PR4; {94} PR7:=4*Eccentr*Uzero_2; {95} PR8:=PR4/PR3; {96} PR9:=PR3/PR4; {97} D0 := StarPeriod*LiSp_0*PR6/PR7; {98} DistToStar := K_df*D0; {99} N_e:=Trunc(MaxTimeSmall/ReceptionCell+0.5E0); {100} Nav:=Round(ReceptionCell/RadiationPeriod); {101} R_star:=DistToStar/Rkps; {102} Umin_2:=Uzero_2*PR8; {103} Umax_2:=Uzero_2*PR9; {104} LiSpMinMin:=LiSp_0*Sqrt(1+Umin_2); {105} LiSpMaxMax:=LiSp_0*Sqrt(1+Umax_2); {106} TayMaxMax:=DistToStar/LiSpMinMin; {107} TayMinMin:=DistToStar/LiSpMaxMax; {108} Kmn:=Trunc((TayMaxMax - TayMinMin)/StarPeriod); {109} For I:=1 to N_e do begin {110} Z[I]:=0; end; {111} Tinit := StarPeriod/2; {112} FirstCycle (Tinit); {113} Writeln ('FirstCycle end',',Tinit=',Tinit); {114} J := 0; JVM := 0; Lm115: J:=J+1; {116} If J > Kmn then goto Lm144 else {117} Traspr_2 := Traspr_1 - J*StarPeriod; Lm118: LiSp_X := DistToStar/Traspr_2; {119} LSX_2 :=LiSp_X*LiSp_X; {120} U2 := (LSX_2/LS0_2) - 1; {121} C1 := (U2 - Uzero_2)/(U2 + Uzero_2); {122} CosinusFA := C1/Eccentr; {123} If CosinusFA > -1 then goto Lm125 else {124} CosinusFA := -1; Lm125: If CosinusFA < 1 then goto Lm127 else {126} CosinusFA := 1; Lm127: SinusFA := - Sqrt(1 - CosinusFA*CosinusFA); {128} TangensFA := SinusFA/CosinusFA; {129} FA :=ArcTan (TangensFA); {130} Something := (FA -Eccentr*SinusFA)/(2*Pin); {131} T_X := StarPeriod*Something; {132} Traspr_3 := Traspr_2 + T_X; {133} Difference := abs(Traspr_3 - Traspr_2); {134} If Difference < Accur2 then goto Lm137 else {135} Traspr_2 :=Traspr_3; {136} Goto Lm118; Lm137: If U2 < Umax_2 then goto Lm140 else {138} JVM := JVM + 1; {139} goto Lm143; Lm140: Tinit := StarPeriod*(1/2 + J + Something); {141} SecondCycle (Tinit); {142} Writeln ('J=',J,',SecondCycle end',',Tinit=',Tinit); Lm143: Goto Lm115; Lm144: Mzw:=0; {145} For K:=1 to N_e do begin {146} Mzw:=Mzw + Z[K]; end;

{Search for maximum value}

{147} MaximumValue:=-1; {148} I:=1; Lm149: If I > N_e then goto Lm157 else begin {150} If Z[I] > MaximumValue then goto Lm153 else begin {151} I:=I+1; {152} goto Lm149; end; Lm153: IZ:=I; {154} MaximumValue:=Z[I]; {155} I:=I+1; {156} goto Lm149; end; Lm157: MV:=MaximumValue; {158} IKK:=IZ+1; {159} If IKK > 18 then goto Lm162 else begin {160} INN:=1; {161} goto Lm163; end; Lm162: INN:=IKK-18; Lm163: If MV = 0 then goto Lm167 else begin {164} For I:=INN to IKK do begin {165} Nprob:=Round(60.0*Z[I]/MV); {166} Writeln ('*': Nprob,Z[I]); end; end; Lm167: Writeln ('Kmn=',Kmn,',MV=',MV,',IZ=',IZ,',D_factor=',K_df,',e=',Eccentr); {168} Writeln ('To=',StarPeriod,',R_star=',R_star,'kps',',Less=',Less,',More=',More); {169} Writeln('N_e =',N_e,',Nav =',Nav,',Mzw =',Mzw,',Uzero =',Uzero ,',JVM =',JVM); {170} Writeln('Tinit=',Tinit,',J1=',J1,',J2=',J2,',J=',J); {171} Writeln('RadPer=',RadiationPeriod,',RecCell=',ReceptionCell); {172} For I := 1 to 2000 do begin {173} Y[I]:= Z[KZR+I]; end; {174} Ksum:=0; {175} K:=KZR+1; Lm176: For I:= 1 to 2000 do begin {177} Ksum:= Ksum + abs(Y[I] - Z[K+I]); end; {178} If Ksum = 0 then goto Lm185 else begin {179} K:=K+1; {180} If K =11000 then goto Lm183 else begin {181} Ksum:=0; {182} goto Lm176; end; end; Lm183: Writeln('Period is not defined'); {184} goto Lm187; Lm185: PulsPer: = (K-KZR)*ReceptionCell; {186} Writeln('Period=',PulsPer);

Lm187: {$I-} {188} Assign (F1,'Pulsar-5'); {189} Rewrite (F1); {190} For I:=1 to N_e do begin {191} WriteLn (F1,Z[I]); end; {192} Close(F1); end.

Пояснения к программе моделирования пульсаров

Программа состоит из следующих основных блоков:

1) Основная программа

Основная программа начинается с оператора 72. Сначала в основной программе задаются основные константы:

Pin – число p ;

LiSp_0 – скорость света в вакууме от неподвижного источника;

Accuracy - точность вычисления эксцентрической аномалии (см. оператор 34);

Accur2 – точность вычисления момента начала излучения импульсов света во втором и последующих периодах обращения звезды по эллиптической орбите (см. оператор 134);

KZR – начальный элемент одномерного массива Z, начиная с которого данные копируются в другой меньший одномерный массив Y, который используется для поиска периода пульсаций (см. оператор 173);

Uzero – значение скорости движения звезды при E = p/2 из формулы (П2.8);

Eccentr – эксцентриситет эллипса;

StarPeriod – период обращения звезды по эллиптической орбите в секундах;

Rkps – расстояние в метрах соответствующее 1 килопарсеку;

K_df – безразмерный множитель, позволяющий задавать расстояние до звезды в операторе 98 в величинах, кратных величине Do из формулы (П2.12);

RadiationPeriod – период (в секундах) излучения импульсов (квантов света) звездой, движущейся по эллиптической траектории;

ReceptionCell – временной размер (в секундах) ячейки одномерного массива Z – точность, с которой запоминаются моменты поступления импульсов (квантов) света к земному наблюдателю;

MaxTimeSmall – промежуток времени, в течение которого запоминаются моменты поступления импульсов (квантов) света к наблюдателю (он равен размеру массива Z, умноженному на временной размер одной ячейки этого массива. Размер массива Z, задаваемый в операторе 5, ограничивается характеристиками компьютера, используемого для моделирования;

LS0_2 – квадрат скорости света в вакууме от неподвижного источника;

Uzero_2 – квадрат скорости Uzero;

PR3, PR4, PR5, PR6, PR7, PR8, PR9 – промежуточные переменные, рассчитываемые в операторах 90 – 96;

D0 – величина Do, рассчитываемая по формуле (П2.12);

DistToStar – расстояние от земного наблюдателя до звезды;

N_e – количество элементов массива Z;

Nav – количество импульсов, излучаемых звездой в течение промежутка времени, равного ReceptionCell;

R_star – расстояние до звезды в килопарсеках;

Umin_2 – квадрат минимальной скорости движения звезды по эллиптической орбите (квадрат скорости звезды, находящейся в апоастре);

Umax_2 – квадрат максимальной скорости движения звезды по эллиптической орбите (квадрат скорости звезды, находящейся в периастре);

LiSpMinMin – скорость света, испускаемого звездой, находящейся в апоастре (когда звезда имеет минимальную скорость движения);

LiSpMaxMax – скорость света, испускаемого звездой, находящейся в периастре (когда звезда имеет максимальную скорость движения);

TayMaxMax – время распространения света от момента его излучения в апоастре до момента прибытия его к наблюдателю;

TayMinMin – время распространения света от момента его излучения в периастре до момента прибытия его к наблюдателю;

Kmn – количество периодов обращения звезды по эллиптической орбите, на которое величина TayMaxMax превышает величину TayMinMin;

В операторах 109 – 110 обнуляются все элементы одномерного массива Z;

В операторе 111 задается момент начала моделирования (излучения импульсов), с которого скорость звезды начинает увеличиваться;

Оператор 112 вызывает исполнение подпрограммы FirstCycle;

В операторе 114 присваиваются нулевые значения некоторым переменным, которые имеют следующий смысл:

J – номер моделируемого периода обращения звезды по орбите;

JVM – количество случаев, при которых рассчитанная скорость движения звезды по орбите (ее квадрат) превышает скорость движения звезды в перицентре (ее квадрат);

В операторе 117 рассчитывается первое приближение Traspr_2 для времени распространения (от звезды до наблюдателя) импульса света, излученного во втором и последующих периодах обращения звезды по эллиптической траектории, который приходит к наблюдателю приблизительно одновременно с импульсами света, излученными в первый период обращения звезды по орбите;

В операторе Lm118 рассчитывается скорость света, которую должен иметь импульс (квант) света, излученный во втором (и последующих) периоде, чтобы он прибыл к наблюдателю примерно одновременно с импульсом света, излученным в первый период обращения звезды;

В операторе 119 вычисляется квадрат скорости света, рассчитанного в операторе Lm118;

В операторе 120 рассчитывается квадрат скорости движения звезды по орбите, обеспечивающий скорость света, рассчитанную в операторе Lm118;

В операторе 121 рассчитывается соответствующая этой скорости звезды величина переменной С1;

В операторе 122 рассчитывается соответствующее этой скорости значение переменной CosinusFA;

Если выполняются условия, указанные в операторах 123 и Lm125, то в операторах Lm127, 128 и 129 рассчитываются значения SinusFA, TangensFA и сама эксцентрическая аномалия FA;

В операторах 130, 131 и 132 рассчитывается второе приближение Traspr_3 для времени распространения (от звезды до наблюдателя) импульса света, излученного во втором и последующих периодах обращения звезды (по эллиптической траектории), который приходит к наблюдателю приблизительно одновременно с импульсами света, излученными в первый период обращения звезды по орбите;

В операторе 133 вычисляется абсолютная величина разности между вторым и первым приближениями, рассчитанными в операторах 117 и 132. Если эта разность превышает наперед заданное значение Accur2, то переменной Traspr_2 присваивается значение второго приближения Traspr_3 и вычисления повторяются, начиная с оператора Lm118.

Рассчитанная в операторе 120 скорость движения звезды сравнивается в операторе Lm137 с максимальной скоростью движения звезды по орбите (со скоростью движения звезды в периастре орбиты). Если рассчитанная скорость движения звезды оказывается меньшей скорости движения звезды в периастре, то осуществляется переход к оператору Lm140.

Если рассчитанная в операторе 134 разность между первым и вторым приближениями времени распространения оказывается меньшей наперед заданного значения Accur2, то в операторе Lm140 рассчитывается значение переменной Tinit для начала моделирования во втором (и последующих периодах) периоде обращения звезды по эллиптической орбите;

В операторе Lm141 вызывается подпрограмма SecondCycle.

Вычисления с использованием операторов Lm115 – 142 повторяются ровно Kmn раз.

В операторах 145 – 146 вычисляется сумма Mzw всех числе, запомненных в элементах массива Z. Перед этим в операторе Lm144 переменная Mzw обнуляется.

В операторах 147 – 171 определяются и выводятся на экран дисплея:

- максимальное число MV среди чисел, записанных в элементах массива Z, и номер IZ элемента массива Z, в котором записано максимальное число MV;

- несколько (двадцать) значений вблизи MV в виде графика;

- исходные данные и результаты расчетов при моделировании.

В операторах 172 – 173 часть элементов (2000) массива Z, начиная с элемента с номером KZR, переписывается в массив Y для последующего отыскания периода пульсаций в массиве Z.

В операторах 174 – 186 вычисляется период пульсаций, если в данных массива Z имеется строгая периодичность.

В операторах 187 – 192 массив Z записывается на жесткий диск.

2) Подпрограмма Gistogram

Эта подпрограмма предназначена для вычисления гистограммы распределения промежутков времени между моментом излучения импульса (кванта) света звездой, перемещающейся по кеплеровской орбите, и моментом прихода этого импульса (кванта) света к наблюдателю. Входной переменной является переменная Time. В этой подпрограмме входная переменная Time делится на продолжительность приемной временной ячейки ReceptionCell и берется целая часть от результата деления, увеличенного на единицу. Затем к элементу одномерного массива Zk с номером, равным увеличенному на единицу частному от деления переменной Time на переменную ReceptionCell, прибавляется единица. Переменная Less служит для подсчета случаев, при которых Time < 0. Переменная More служит для подсчета случаев, при которых Time > MaxTimeSmall.

3) Подпрограмма LspeedFT

Эта подпрограмма служит для вычисления скорости распространения света, излученного в момент времени Tizl.

Сначала вычисляется средняя аномалия MeanAnomaly, соответствующая моменту времени Tizl. Затем по формуле (П2.7) вычисляется первое приближение FirstApprox эксцентрической аномалии, а по формуле (П2.6) вычисляется второе приближение SecondApprox эксцентрической аномалии. Абсолютная величина разности между первым приближением и вторым приближением Difference сравнивается с погрешностью вычисления эксцентрической аномалии Accuracy. Если разность между первым и вторым приближением оказывается меньше заданной величины Accuracy, то по формуле (П2.8) с использованием значения первого приближения эксцентрической аномалии рассчитывается квадрат скорости звезды и по формуле (П2.1) рассчитывается скорость света. Если разность между первым и вторым приближением превышает заданную величину Accuracy, то в качестве первого приближения берется вычисленное значение второго приближения и вычисления повторяются до тех пор, пока первое приближение не будет отличаться от второго приближения на величину, меньшую наперед заданного значения Accuracy.

4) Подпрограмма FirstCycle

Эта подпрограмма предназначена для расчета времени движения (от звезды к земному наблюдателю) каждого моделируемого импульса (кванта) света, излученного в первый период обращения звезды по эллиптической траектории через промежуток времени RadiationPeriod, а также для запоминания моментов прибытия импульсов (квантов) света с помощью описанной ранее подпрограммы Gistogram.

Входной величиной для подпрограммы FirstCycle является переменная Tinit (момент излучения первого светового импульса), задаваемая в основной программе.

Сначала в этой подпрограмме (в операторе 42) вычисляется момент MaxTime излучения последнего светового импульса из моделируемой пачки импульсов. Моменты излучения Tizl каждого из моделируемых импульсов рассчитываются в операторе 46. В этом случае моделируется излучение импульсов, начиная с последнего импульса и заканчивая первым импульсом. Такая очередность моделирования импульсов обусловлена тем, что для вычисления моментов прибытия к наблюдателю всех импульсов (квантов) света необходимо определить момент прибытия самого быстрого из них – импульса с наибольшей скоростью (который излучается последним).

В операторе 47 рассчитывается скорость света для импульса, излученного в момент времени Tizl. Расчет производится по подпрограмме LspeedFT, описанной выше. Операторы 48 – 50 обеспечивают расчет и запоминание скорости света для импульса, движущегося с наибольшей скоростью (первого из моделируемых импульсов), а также расчет времени его распространения от звезды до наблюдателя.

В операторах 51 – 52 рассчитываются время распространения всех остальных импульсов и моменты их прибытия к наблюдателю.

В операторе 53 с помощью подпрограммы Gistogram запоминаются моменты прибытия к наблюдателю всех моделируемых импульсов (квантов) света.

5) Подпрограмма SecondCycle

Эта подпрограмма предназначена для расчета времени распространения (от звезды к земному наблюдателю) каждого моделируемого импульса (кванта) света, излученного во второй и последующий периоды обращения звезды по эллиптической траектории, а также для запоминания моментов прибытия импульсов (квантов) света с помощью описанной ранее подпрограммы Gistogram.

Результаты моделирования пульсаров

На рис. П2.63. показан графически результат одного из вариантов моделирования.

Рис. П2.63. Пульсации (с периодом 0,125 с), обусловленные зависимостью скорости света от скорости источника.

По приведенной выше программе произведены расчеты периода пульсации при различных значениях эксцентриситета орбиты. Результаты этих расчетов приведены в табл. П2.2.

Таблица П2.2

Эксцентриситет е

{в операторе 81}

D t, секунд

{в операторе 85}

D t , секунд

{в операторе 86}

Период,

секунд

0,9

10-9

10-8

5,126Ч 10-5

0,8

10-8

10-7

8,111Ч 10-4

0,7

10-7

10-6

3,757Ч 10-3

0,6

10-7

10-6

8,111Ч 10-3

0,5

10-6

10-5

3,125Ч 10-2

0,4

10-6

10-5

3,125Ч 10-2

0,3

10-5

10-4

6,250Ч 10-2

0,2

10-4

10-3

1,25Ч 10-1

0,1

10-3

10-2

2,5Ч 10-1

9Ч 10-2

10-3

10-2

2,5Ч 10-1

9Ч 10-3

10-3

10-2

2,5Ч 10-1

9Ч 10-4

10-3

10-2

2,5Ч 10-1

9Ч 10-5

10-3

10-2

2,5Ч 10-1

9Ч 10-6

10-3

10-2

2,5Ч 10-1

9Ч 10-7

10-3

10-2

1

9Ч 10-8

10-3

10-2

8

9Ч 10-9

10-1

1

128

9Ч 10-10

10-1

1

1024

9Ч 10-11

1

10

4096

              Из табл. П2.2 видно, что чем больше эксцентриситет орбиты, тем меньше период пульсаций.

             По приведенной выше программе произведен также расчет влияния расстояния до звезды на период пульсаций. Результаты расчета приведены в табл. П2.3.

Таблица П2.3

K_df

= R/Do

D t, секунд

{в операторе 85}

D t , секунд

{в операторе 86}

Период,

секунд

1

10-9

10-8

5,126Ч 10-5

2

10-7

10-6

3,757Ч 10-3

4

10-6

10-5

3,125Ч 10-2

6

10-5

10-4

6,25Ч 10-2

8

10-4

10-3

1,25Ч 10-1

10

10-3

10-2

2,5Ч 10-1

20

10-1

1

1

Из табл. П2.3 видно, что чем больше расстояние до звезды, тем больше период пульсаций.

Приведенная выше простейшая программа для исследования пульсаров не позволяет определить такие их важные характеристики [Манчестер Р., Тейлор Дж. Пульсары. Пер. с англ. В. А. Извековой и к.ф.м.н. С. Н. Родионова. Под ред. д.ф.м.н. А. Д. Кузьмина. М.: Мир. 1980] как форма импульса, систематическое увеличение периодов, скачкообразное уменьшение периодов в некоторые моменты времени и др. Но эта программа позволяет продемонстрировать сам факт возникновения пульсаций у звезд, движущихся с увеличивающейся во времени скоростью, что характерно для второго полупериода движения звезд, перемещающихся по кеплеровским орбитам.

Если зависимость скорости света от скорости движения источника этого света вида (П2.1) существует в природе, то астрономические явления, известные в настоящее время как “новые” и “сверхновые” звезды, а также как “пульсары”, можно объяснить не грандиозными взрывами звезд, а процессом пространственного группирования квантов света, движущихся с различными скоростями.

Переход:.....Назад.....Содержание.....Вперед