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

в 11:58, , рубрики: math, mathematics, Microsoft SQL Server, MS SQL, MS Sql Server, science, Алгоритмы, астрономия, Исследования и прогнозы в IT, Научно-популярное, нумерология

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

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


Возьмем 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.

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

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

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

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

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

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

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

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

Таким образом, как правило, мы можем выразить любое число с точностью от 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%)

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

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

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

Как видно, по большому счету, разницы нет никакой. В завершении я хочу рассказать, при чем тут 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

Автор: Tzimie

Источник

* - обязательные к заполнению поля