Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 13, 14, 15, 16, 17  След.
 Re: Кортежи из простых чисел
Yadryara в сообщении #1729601 писал(а):
А так?





Так норм.

-- добавлено через 36 минут --

Yadryara в сообщении #1729598 писал(а):
Так гласит HL1 и я ей верю.

Вот вычисления чистых кортежей, берется два случайных миллиона из порядка.
Код:
? count_clean_tuples([0,60], 2 , 10, 30)
Порядок 10: 434 кортежей на миллион
Порядок 11: 496 кортежей на миллион
Порядок 12: 533 кортежей на миллион
Порядок 13: 529 кортежей на миллион
Порядок 14: 557 кортежей на миллион
Порядок 15: 545 кортежей на миллион
Порядок 16: 556 кортежей на миллион
Порядок 17: 507 кортежей на миллион
Порядок 18: 540 кортежей на миллион
Порядок 19: 520 кортежей на миллион
Порядок 20: 471 кортежей на миллион
Порядок 21: 471 кортежей на миллион
Порядок 22: 445 кортежей на миллион
Порядок 23: 413 кортежей на миллион
Порядок 24: 404 кортежей на миллион
Порядок 25: 415 кортежей на миллион
Порядок 26: 391 кортежей на миллион
Порядок 27: 384 кортежей на миллион
Порядок 28: 376 кортежей на миллион
Порядок 29: 354 кортежей на миллион
Порядок 30: 322 кортежей на миллион
time = 9min, 46,121 ms.
?

Где тут максимум? :-)
Ну где-то в районе 10^14..10^15
Мне кажется, что неплохая получается оценка по упрощённой формуле :)

 Re: Кортежи из простых чисел
Аватара пользователя
wrest в сообщении #1729604 писал(а):
берется два случайных миллиона из порядка.

Что это значит "из порядка"??

Максимум в этой таблице вот:

Код:
Порядок 14: 557 кортежей на миллион

Из какого интервала случайно выбрали два интервала по миллиону?

$10^{13} - 10^{14}$ ?
$10^{14} - 10^{15}$ ?
$5 \cdot 10^{13} - 5 \cdot 10^{14}$ ?
$0.34 \cdot 10^{14} - 0.36 \cdot 10^{14}$ ?

Ещё из какого-то?

wrest в сообщении #1729604 писал(а):
Мне кажется, что неплохая получается оценка по упрощённой формуле :)

По какой именно упрощённой формуле? Не показано что именно считает count_clean_tuples.

 Re: Кортежи из простых чисел
Аватара пользователя
Вот прогноз по HL1:

Код:
Интервал          Кортежей          Рост
в                 на 10         в полных
триллионах        триллионов     тысячах

    0 —  10       5401280530
   10 —  20       5468640553       67360
   20 —  30       5481730625       13090
   30 —  40       5487846399        6115
   40 —  50       5491258431        3412
   50 —  60       5493312773        2054
   60 —  70       5494585931        1273
   70 —  80       5495369591         783
   80 —  90       5495828058         458
   90 — 100       5496061123         233
  100 — 110       5496132929          71
  110 — 120       5496086517         -46

Константы брал такие:

Код:
v = [0, 60]
vC= [3.5208630178499710609483312534109641517, 188.21434494720262256770026689997306913, 4519.3856641913627483153724031458632586, 64385.686512208276789640070322176644313, 605484.05979091535790790183392906964200, 3955853.7835829396531542560485615772019, 18400627.390926766889973056318197328222, 61414321.838249303235971076648271251127, 146295606.79363727461256717251260263658, 244228617.25480130243378539233811462402, 276331834.13881052895580415858380206538, 200731890.86222697547017685986726217505, 85941929.558388462831225000289289085020, 18803859.020336665144516153615916157387, 1502442.8508905714148542453248318629516]

 Re: Кортежи из простых чисел
Yadryara в сообщении #1729623 писал(а):
Не показано что именно считает count_clean_tuples.

Вот код

(Оффтоп)

Код:
count_clean_tuples_v2(pattern, num_probes, start_order, end_order) = {
    my(k = #pattern, d);
    my(million = 10^6);
    my(diffs, L, lo, hi, total_found, start, end_n, P, is_match, result,vec_result);

    \\ 1. Подготовка: сортировка и создание вектора шагов (разностей) и вектора результатов
    pattern = vecsort(pattern);
    d = vecmax(pattern);
    vec_result=vector(end_order-start_order+1,i,vector(2));
   
   
    \\ Если паттерн состоит из одного числа, разностей нет
    if(k > 1,
        diffs = vector(k - 1, i, pattern[i+1] - pattern[i]);
        L = #diffs;
    ,
        L = 0;
    );

    for(N = start_order, end_order,
        lo = 10^(N-1);
        hi = 10^N - million;
        total_found = 0;

        for(probe = 1, num_probes,
            start = lo + random(hi - lo + 1);
            end_n = start + million - 1;

            \\ 2. Векторизация: получаем все простые числа на отрезке сразу.
            \\ Добавляем 'd' к верхней границе, чтобы паттерн, начинающийся
            \\ в самом конце отрезка, поместился целиком.
            P = primes([start, end_n + d]);
           
            \\ Защита от пустых массивов (если на отрезке почти нет простых чисел)
            if(#P < k, next);

            \\ 3. Скользящее окно: проходим по сгенерированному массиву
            for(i = 1, #P - L,
                \\ Мы считаем кортеж, только если его начало лежит внутри миллионного отрезка
                if(P[i] > end_n, break);

                is_match = 1;
               
                \\ Сравниваем расстояния между соседними простыми числами с вектором diffs
                for(j = 1, L,
                    if(P[i+j] - P[i+j-1] != diffs[j],
                        is_match = 0;
                        break;
                    );
                );

                if(is_match, total_found++);
            );
        );

        result = round(total_found / num_probes);
        vec_result[N-start_order+1]=[N,result];
        print("От 1e", N-1, " до 1e", N, " : ~ ", result, " кортежей ",pattern," на миллион");
    );
    print("v=",vec_result);
}

Он считает сколько попалось чистых кортежей в случайно выбранных миллионных отрезках внутри порядков.
Я немного доработал печать результата для ясности.
count_clean_tuples_v2(pattern, num_probes, start_order, end_order)
pattern - вектор смещений простых чисел в паттерне, например [0,60] предполагается что первое смещение ноль
num_probes количество отрезков длиной 10^6 для подсчёта (т.е. сколько случайных отрезков длиной миллион проверить)
start_order начальный порядок, показатель степени десятки. "Внутри порядка" имеется в виду числа меньшие 10 в степени start_order
end_order конечный порядок

Запуск:
Код:
? count_clean_tuples_v2([0,60], 5 , 10, 30)
От 1e9 до 1e10 : ~ 435 кортежей [0, 60] на миллион
От 1e10 до 1e11 : ~ 478 кортежей [0, 60] на миллион
От 1e11 до 1e12 : ~ 539 кортежей [0, 60] на миллион
От 1e12 до 1e13 : ~ 542 кортежей [0, 60] на миллион
От 1e13 до 1e14 : ~ 552 кортежей [0, 60] на миллион
От 1e14 до 1e15 : ~ 542 кортежей [0, 60] на миллион
От 1e15 до 1e16 : ~ 535 кортежей [0, 60] на миллион
От 1e16 до 1e17 : ~ 553 кортежей [0, 60] на миллион
От 1e17 до 1e18 : ~ 529 кортежей [0, 60] на миллион
От 1e18 до 1e19 : ~ 501 кортежей [0, 60] на миллион
От 1e19 до 1e20 : ~ 489 кортежей [0, 60] на миллион
От 1e20 до 1e21 : ~ 459 кортежей [0, 60] на миллион
От 1e21 до 1e22 : ~ 425 кортежей [0, 60] на миллион
От 1e22 до 1e23 : ~ 445 кортежей [0, 60] на миллион
От 1e23 до 1e24 : ~ 433 кортежей [0, 60] на миллион
От 1e24 до 1e25 : ~ 408 кортежей [0, 60] на миллион
От 1e25 до 1e26 : ~ 383 кортежей [0, 60] на миллион
От 1e26 до 1e27 : ~ 369 кортежей [0, 60] на миллион
От 1e27 до 1e28 : ~ 370 кортежей [0, 60] на миллион
От 1e28 до 1e29 : ~ 347 кортежей [0, 60] на миллион
От 1e29 до 1e30 : ~ 338 кортежей [0, 60] на миллион
v=[[10, 435], [11, 478], [12, 539], [13, 542], [14, 552], [15, 542], [16, 535], [17, 553], [18, 529], [19, 501], [20, 489], [21, 459], [22, 425], [23, 445], [24, 433], [25, 408], [26, 383], [27, 369], [28, 370], [29, 347], [30, 338]]
time = 1min, 2,976 ms.
?

В конце печатается вектор результатов, его можно скопипастить в какую-то следующую функцию, которая сделает сглаживание, найдёт максимум, а то и, чем чёрт не шутит, методом наименьших квадратов посчитает поправленную безымянную константу или ещё что-нибудь.

 Re: Кортежи из простых чисел
Изображение
Идеально!
Но есть нюанс.
Теоретическую формулу понадобилось немного сдвинуть для учёта среднего по порядку (ведь отрезок в миллион берётся случайно внутри порядка, то в начале то в середине и т.п.)

Формула:
$$E(N) = 10^6 \cdot \frac{3.52086}{\big((N-2)\ln 10\big)^2} \cdot \exp\left(-\frac{60}{(N-2)\ln 10 + 0.3}\right)$$

-- добавлено через 42 минуты --

Ещё пример
Изображение
Тут тоже с поправками на падение плотности внутри порядка.

Надо видимо попробовать кортежи посложнее, типа [0,30,210]

 Re: Кортежи из простых чисел
Аватара пользователя
wrest, благодарю. А что идеально? Я не вижу изображения :cry: . Вы в TikZ умеете?

wrest в сообщении #1729633 писал(а):
Надо видимо попробовать кортежи посложнее, типа [0,30,210]

Пока гораздо более интересны CPAP-x-30, то бишь [0, 30], [0, 30, 60], [0, 30, 60, 90] ...

 Re: Кортежи из простых чисел
Yadryara в сообщении #1729657 писал(а):
Пока гораздо более интересны CPAP-x-30, то бишь [0, 30], [0, 30, 60], [0, 30, 60, 90] ...

А зачем вам вообще вычислять плотность с какой-то повышенной точностью?
Что вы из неё (плотности) достаёте?

-- добавлено через 1 минуту --

Yadryara в сообщении #1729657 писал(а):
Я не вижу изображения :cry: . Вы в TikZ умеете?

Нет. А что вы можете видеть, с каких хостингов?

-- добавлено через 8 минут --

Yadryara в сообщении #1729657 писал(а):
А что идеально?

Совпадение "теоретической" кривой (с поправками) и сглаженных измерений плотности кортежей [0,60| и [0,120]

 Re: Кортежи из простых чисел
Аватара пользователя
Как понимаю, я хорошо вижу графику в ТikZ или pdf. А вдруг ИИ уже умеет в ТikZ рисовать?? Спрошу.

wrest вот здесь, на 1-й странице, есть оценка для CPAP-7-210, но откуда она взялась до сих пор непонятно. Почему и интересно попытаться оценить, в том числе с помощью экстраполяций.

Dmitriy40 в сообщении #1725296 писал(а):
Если чисто наудачу, не запуская вычисления на месяцы и годы, то поискать улучшения вот этих цепочек длиной 7 (и более): https://www.pzktupel.de/CPAP/mini.php (CPAP-7 - 7 последовательных простых с шагом 210).
Найти гарантированно минимальную вряд ли получится (ведь надо доказывать что наименьшая), а вот улучшить текущие рекорды (т.е. уменьшить известные решения) почему бы нет. Тем более там оценка для CPAP-7 на два порядка (раз в 100) меньше текущего рекорда, так что простор для поиска есть. А прогресса нет уже почти 6 лет.
Но шанс наугад найти улучшение - очень невелик.


-- добавлено через 26 минут --

wrest
Ну вот ИИ где-то с 10-й попытки мне нарисовал ваш график. Похоже?

$\tikz[scale=0.3, black!70!]{
% Оси и сетка
\draw[->, thick] (8,0) -- (32,0) node[right] {N};
\draw[->, thick] (8,2) -- (8,13) node[above] {Qty};
\foreach \y in {5,8,12} \draw[gray!30, dashed] (9,\y) -- (31,\y);

% Подписи шкал
\node[left] at (8,5) {250}; \node[left] at (8,8) {400}; \node[left] at (8,12) {600};
\foreach \x in {10,15,20,25,30} \draw (\x,0.2) -- (\x,-0.2) node[below] {\x};

% Теоретическая линия (кусочно-линейная аппроксимация wrest)
\draw[color=blue, thick] (10,8.7) -- (11,9.6) -- (12,10.5) -- (13,10.9) -- (14,11.0) -- 
(15,10.9) -- (16,10.6) -- (17,10.2) -- (18,9.7) -- (19,9.2) -- (20,8.7) -- (21,8.1) -- 
(22,7.6) -- (23,7.1) -- (24,6.6) -- (25,6.1) -- (26,5.7) -- (27,5.3) -- (28,4.9) -- 
(29,4.5) -- (30,4.2);

% Экспериментальные точки
\foreach \x/\y in {
    10/8.70, 11/9.56, 12/10.78, 13/10.84, 14/11.04, 15/10.84, 16/10.70, 
    17/11.06, 18/10.58, 19/10.02, 20/9.78, 21/9.18, 22/8.50, 23/8.90, 
    24/8.66, 25/8.16, 26/7.66, 27/7.38, 28/7.40, 29/6.94, 30/6.76
} \fill[color=red] (\x,\y) circle (0.2);
}$

 Re: Кортежи из простых чисел
Yadryara в сообщении #1729668 писал(а):
Ну вот ИИ где-то с 10-й попытки мне нарисовал ваш график. Похоже?

Отдалённо :D
Вот код на питоне.
Я запускал в https://colab.research.google.com/
Но может и ещё где можно. Я в питоне не силён.

(Оффтоп)

Код:
import numpy as np
import matplotlib.pyplot as plt

# Данные
orders = np.arange(10, 51)
data = np.array([430, 487, 526, 547, 533, 551, 534, 523, 530, 493,
                 480, 470, 466, 434, 397, 409, 405, 378, 358, 344,
                 344, 327, 309, 303, 284, 281, 260, 248, 244, 241,
                 227, 224, 214, 206, 188, 208, 192, 184, 164, 180, 169])

def theory(N, d=60, S=3.52086):
    L = (N-2) * np.log(10)
    return 1e6 * S / (L**2) * np.exp(-d / (L+0.3))

theory_vals = theory(orders)

# Центрированное сглаживание
window = 5
half_w = window // 2
smoothed = np.zeros_like(data, dtype=float)
for i in range(len(data)):
    start = max(0, i - half_w)
    end = min(len(data), i + half_w + 1)
    smoothed[i] = np.mean(data[start:end])

# Построение графика
fig, ax = plt.subplots(figsize=(14, 8))

ax.plot(orders, theory_vals, 'r-', linewidth=2.5, label='Теория (S=3.521)')
ax.plot(orders, smoothed, 'g--', linewidth=2, label='Сглаженный эксперимент (окно=5)')
ax.scatter(orders, data, color='blue', alpha=0.4, s=30, label='Эксперимент (сырые данные)')

ax.set_title('Чистые кортежи [0, 60]: Эксперимент vs Теория (N=10..50)',
             fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Порядок числа N', fontsize=12)
ax.set_ylabel('Кортежей на 1 миллион', fontsize=12)
ax.legend(fontsize=11, loc='upper right')
ax.grid(True, linestyle=':', alpha=0.7)

plt.tight_layout()
plt.savefig('tuples_0_60_fixed.png', dpi=150, bbox_inches='tight')
print("✅ График сохранен как 'tuples_0_60_fixed.png'")
plt.show()


-- добавлено через 24 минуты --

Yadryara в сообщении #1729668 писал(а):
вот здесь, на 1-й странице, есть оценка для CPAP-7-210, но откуда она взялась до сих пор непонятно. Почему и интересно попытаться оценить, в том числе с помощью экстраполяций.

То есть задача найти минимальный чистый кортеж, и для её решения надо знать где их плотность максимальная?

 Re: Кортежи из простых чисел
Аватара пользователя
wrest в сообщении #1729673 писал(а):
То есть задача найти минимальный чистый кортеж, и для её решения надо знать где их плотность максимальная?

Упрощаете. Я постановку уже приводил, но вот ещё раз:

Yadryara в сообщении #1726653 писал(а):
Интересная задача всё-таки вырисовывается.

Она заключается не в поиске кортежа CPAP-7-210, а в оценке количества кортежей CPAP-x-210 для тех или иных интервалов, коль скоро посчитать эту оценку по HL1 представляется практически невозможным.

То есть желательно как можно точнее знать как ведут себя кортежи в том или ином интервале. В том числе интересна и точка экстремума плотности и её величина.

wrest в сообщении #1729673 писал(а):
Отдалённо :D

Видимо, можно будет настроить более точное автоматическое отображение в TikZ. У него есть огромное преимущество: нет отсылок к сторонним ресурсам — картинка находится прямо на форуме. И такие картинки годами не протухают.

 Re: Кортежи из простых чисел
Аватара пользователя
wrest в сообщении #1729633 писал(а):
Тут тоже с поправками на падение плотности внутри порядка.

А может вместо того чтобы делать эти подгонки, надо попросту интегрировать на тех самых интервалах?

 Re: Кортежи из простых чисел
Аватара пользователя
А я всё-таки решил продолжить счёт по реальным данным для [0, 60]. Одно дело надёргать по два миллиона на порядок, и совсем другое — найти все кортежи в интервале. Пока колбасит не по-детски:

Код:
Интервал      Кортежей        Рост
в             на          в полных
триллионах    триллион     тысячах
0 — 1        521616481
1 — 2        535345192       13728
2 — 3        538921769        3576
3 — 4        540899354        1977
4 — 5        542229029        1329
5 — 6        543178469         949
6 — 7        543953423         774
7 — 8        544569418         615
8 — 9        545076235         506
9 — 10       545447607         371
10 — 11      545829503         381
11 — 12      546105425         275
12 — 13      546436484         331
13 — 14      546588506         152
14 — 15      546827947         239
...
100 — 101    549628679
101 — 102    549640996          12
102 — 103    549611121         -29
103 — 104    549623530          12
104 — 105    549603202         -20

 Re: Кортежи из простых чисел
Yadryara в сообщении #1729734 писал(а):
Одно дело надёргать по два миллиона на порядок, и совсем другое — найти все кортежи в интервале.

...
Yadryara в сообщении #1729734 писал(а):
Пока колбасит не по-детски:


А в чём принципиальная разница? "Колбасит" в пятой значащей цифре плотности, это сотые-тысячные доли процента...

 Re: Кортежи из простых чисел
Аватара пользователя
wrest в сообщении #1729737 писал(а):
А в чём принципиальная разница? "Колбасит" в пятой значащей цифре плотности, это сотые-тысячные доли процента...

Конечно. Просто для более плотных кортежей флуктуации обычно заметно меньше.

И, видимо, не удастся увидеть максимум плотности именно на 106-м триллионе. Придётся ещё усреднять.

 Re: Кортежи из простых чисел
Yadryara в сообщении #1729746 писал(а):
И, видимо, не удастся увидеть максимум плотности именно на 106-м триллионе. Придётся ещё усреднять.

Ну так если там "колбасит", то будет куча локальных макимумов и минимумов, ессно. Тогда выбор глобального -- это некоторый волюнтаризм.

 [ Сообщений: 248 ]  На страницу Пред.  1 ... 13, 14, 15, 16, 17  След.


Соглашение о конфиденциальности | Общие правила

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group