Нумерология на MS SQL — занимательный эксперимент

Люди издревле любят играть в числа. Доказать что отношение длины пирамиды Хеопса к высоте равна… уже не помню чему. Физики тоже не чужды этого, например есть мистическая формула Койде, связывающая массы электрона, мюона и тау частицы. Есть формула для постоянной тонкой структуры – в отличие от формулы Койде кажущаяся очень искусственной. Насколько обоснованы такие формулы? Я провел эксперимент.

Нумерология на MS SQL — занимательный эксперимент

Возьмем N чисел: A,B,C… В моем эксперименте я ограничился тремя числами. К каждому числу мы можем применить унарную функцию: SIN, COS, EXP, LN (я ограничился четыремя). Это дает 4*3=12 новых чисел, что вместе с изначальными дает 15 чисел. Далее применим к их комбинации бинарные операции +, -, *, /. (можно также рассмотреть и другие, например, возведение в степень, но я опять таки ограничился четыремя). Здесь новых комбинаций 15*15*4 (на самом деле меньше, так как некоторые операции запрещены, типа деления на 0, а для + и * количество комбинаций меньше изза их симметричности).

Далее мы можем повторять эти шаги еще и еще. Уже на втором шаге 34’513’800 формул (теперь вы понимаете, почему я ограничил число операций?) которые дали мне для A=1, B=2, C=3 целых 2’776’355 разных чисел.

График выше показывает концентрацию (количество разных чисел) для поддиапазонов длины 1 от -60 до +60. Шкала Y логарифмическая. Видна концентрация чисел около 0.

Делаем zoom для диапазона -2..2:

Тут шкала Y уже обычная. Пики около 0 и 1.

Делаем максимальный zoom, чтобы увидеть «тонкую структуру» распределения чисел:

Интересно, с какой точностью мы можем выразить произвольное число, скажем, 1.23456789? Это определяется (половиной) максимальной длины отрезка между двумя соседними точками (если нам не повезет). Ниже эти рассчеты показаны в виде графика, и дальше от ноля точность приближения падает:

Таким образом, как правило, мы можем выразить любое число с точностью от E-6 до E-5. Например, число 1.23456789 оказывается расположенным между

cos(ln(3)/cos(3))+sin(1/ln(3)) = 1.23456481266341 (0.0002%)
ln(exp(1)*sin(2))+exp(ln(3)/cos(3)) = 1.23456894186555 (0.000085%)

Наконец интересно, что будет, если вместо A=1, B=2,C=3 взять другие числа, например, A=sqrt(2), B=e, C=pi. Сравнение плотности чисел в первом (123) и втором (2epi) вы видите на картинке:

Как видно, по большому счету, разницы нет никакой. В завершении я хочу рассказать, при чем тут MS SQL. Задача переборная, и просто напрашивается решение с cross join, которые реализуют декартовы произведения всех имеющихся чисел для бинарных операций. Небольшой фрагмент кода вы можете увидеть в конце.

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

  -- step 3   insert into Formula (step,path,Value)     select 3,path+' '+op,         case            when op='COS' then COS(Value)           when op='SIN' then SIN(Value)           when op='EXP' then              case when Value<100 then EXP(Value) else NULL end           when Value<=0    then NULL           when op='LN'  then LOG(Value)         end       from Formula, Unary   -- step 4     select L.path+' '+R.path+' '+'+' as path,L.value+R.value as value     into p1       from Formula L, Formula R       where L.n<=R.n   select L.path+' '+R.path+' '+'+' as path,L.value+R.value as value     into p2       from Formula L, Formula R       where L.n<=R.n   select L.path+' '+R.path+' '+'+' as path,L.value+R.value as value     into p3       from Formula L, Formula R   select L.path+' '+R.path+' '+'+' as path,L.value+R.value as value     into p4       from Formula L, Formula R       where R.value<>0 

 
Источник

Читайте также