1 210
订阅者
无数据24 小时
+17 天
+2030 天
数据加载中...
吸引订阅者
六月 '26
六月 '26
+4
在0个频道中
五月 '26
+33
在2个频道中
Get PRO
四月 '26
+23
在0个频道中
Get PRO
三月 '26
+31
在2个频道中
Get PRO
二月 '26
+50
在2个频道中
Get PRO
一月 '26
+61
在3个频道中
Get PRO
十二月 '25
+28
在2个频道中
Get PRO
十一月 '25
+55
在2个频道中
Get PRO
十月 '25
+25
在0个频道中
Get PRO
九月 '25
+82
在2个频道中
Get PRO
八月 '25
+105
在3个频道中
Get PRO
七月 '25
+51
在1个频道中
Get PRO
六月 '25
+55
在4个频道中
Get PRO
五月 '25
+89
在2个频道中
Get PRO
四月 '25
+55
在1个频道中
Get PRO
三月 '25
+525
在2个频道中
Get PRO
二月 '250
在3个频道中
Get PRO
一月 '25
+114
在4个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 12 六月 | +1 | |||
| 11 六月 | +1 | |||
| 10 六月 | 0 | |||
| 09 六月 | 0 | |||
| 08 六月 | +2 | |||
| 07 六月 | 0 | |||
| 06 六月 | 0 | |||
| 05 六月 | 0 | |||
| 04 六月 | 0 | |||
| 03 六月 | 0 | |||
| 02 六月 | 0 | |||
| 01 六月 | 0 |
频道帖子
+1
в комментариях к прошлому посту спрашивали, получается ли отжигать наилучшие упаковки не кругов, а квадратиков
ну так… с трудом (много жестких конфигураций, всё постоянно застревает где-то не там). у меня после серии доработок какие-то упаковки получается увидеть, но (даже для небольшого числа квадратов) не наилучшие
не хватает каких-то (математических) идей
так что оставлю просто пару картинок
| 2 | в квадратную коробку какого наименьшего размера можно положить N единичных кругов?
если N большое, то известно что примерно мы увидим… или если N какое-нибудь круглое, типа 4 или 9… а если N какое-нибудь дурное, типа 11?
как найти оптимум, блуждая по пространству конфигураций? есть два радикально разных подхода: 1) двигаться в случайном направлении, если получилось поставить рекорд — записать его в книжечку; 2) сдвигаться в новую точку только если в ней лучше, чем в старой
первый подход не может работать потому что оптимальные конфигурации очень конкретные, случайно туда не попадаешь; второй подход не может работать, потому что есть много локальных экстремумов (жестких конфигураций) и из первого же нам не уйти
в simulated annealing эти две идеи смешаны: сначала температура высокая и мы делаем достаточно случайные переходы, потом температура понижается и ухудшающие ситуацию переходы становятся всё менее вероятными… и всё магическим образом работает
это оказалось не особо сложно реализовать… но в зависимости от параметров магия либо работает, либо не работает, и надо как-то подбирать их либо наобум (долго и мучительно), либо из опыта, либо из глубокого понимания происходящего… мне, увы, доступен только первый вариант
вот, собственно, практически весь код:
def simulated_annealing(N, max_iter, T=0.2, cooling=0.9975):
centers = np.random.uniform(0, 1, (N, 2))
best_centers = centers.copy()
best_R = R = max_radius(centers)
history = [R]
for step in range(max_iter):
i = step%N
old_pos = centers[i].copy()
old_dist = point_dist(i, centers)
step_size = min(T**0.5,0.04)
centers[i] += np.random.normal(0, step_size, 2)
centers[i] = np.clip(centers[i], 0.0, 1.0)
delta = point_dist(i, centers) - old_dist
if delta > 0 or np.random.random() < np.exp(delta / T):
R = max_radius(centers)
if R > best_R:
best_R = R
best_centers = centers.copy()
else:
centers[i] = old_pos
T *= cooling
history.append(R)
return best_centers, best_R, history
(кто дочитал досюда, может заметить, что реализован не буквально отжиг… но если двигать точки по одной, работает лучше — и даже интуитивно понятно, почему)
на наилучшие известные упаковки можно посмотреть на странице erich-friedman.github.io/packing/ — мб кто-то из читателей сможет что-то из рекордов улучшить ; | 949 |
| 3 | про сложение точек на кубике и последовательности Сомоса — уточню до конкретного кода
для точки P=(3,5) на кривой y²=x³-2 считали координаты точек nP. можно заметить, что знаменатели иксов все время оказывались точными квадратами… ну вот найдем, чьи именно это квадраты:
from fractions import Fraction
import math
N = 20
x, y = x0, y0 = 3, 5
u = [0]*(N+1)
u[1] = x0.denominator
for n in range(2,N+1):
k = Fraction(y-y0, x-x0) if (x,y) != (x0,y0) \
else Fraction(3*x0*x0, 2*y0)
x = k*k-x0-x
y = -(k*(x-x0)+y0)
b = math.isqrt(b2 := x.denominator)
assert b**2 == b2
u[n] = b
получается последовательность 1, 10, 171, 7660, 12660211, 22652313570…
так вот, можно рядом написать рекурренту типа «Сомос-4» (v[n+2]·v[n-2] = c₁·v[n+1]·v[n-1]+c₂·v[n]² — и рекуррентам именно такого вида удовлетворяют также числа Фибоначчи или количества замощений ацтекского брильянта):
v = [0]*(N+1)
v[:5] = [0, 1, 10, 171, -7660]
c1, c2 = v[2]**2, -v[3],
for n in range(5,N+1):
b = c1*v[n-1]*v[n-3]+c2*v[n-2]**2
assert b%v[n-4] == 0
v[n] = b//v[n-4]
print(f"n = {n:2d}: {u[n] == v[n] or u[n] == -v[n]} ({len(str(u[n])):3d} digits)")
и убедиться, что всё сходится
как введение в последовательности Сомоса в hands-on стиле — был проект на ЛКТГ-2023 и статья А.Устинова в Кванте №№8-9 за 2023 год | 969 |
| 4 | несколько пренебрегая принципом «show, don't tell», хотел кратко написать про связи (местами пунктирные) между некоторыми из сюжетов здесь
начнем с конца. для рациональной точки P на эллиптической кривой знаменатель nP растет примерно как c^{n²}
раньше обсуждались замощения доминошками области на плоскости… и там часто количество растет с той же асимптотикой, c^{площадь}
например, для обсуждавшегося ацтекского брильянта ответ — 2^{n(n+1)/2}. этот ответ можно «сконденсировать», доказав рекурренту M(n+1)M(n-1)=2M(n)²
бывают разные квадратичные рекурренты в таком духе, в т.ч. упоминавшиеся здесь мельком знаменитые последовательности Сомоса… и, скажем, Сомос-4, действительно, кодирует сложение на эллиптической кривой
у этого всего есть игрушечные версии: можно мостить не по настоящему двумерную фигуру, а прямоугольник 2×N (или 3×N и т.п. — такого рода вещи где-то в начале обсуждались), тогда ответы получаются типа Фибоначчи, которые удовлетворяют [не только квадратичным, но и] линейным рекуррентам, имеют более простую асимптотику c^n
расставляя на доминошках веса, можно добиться, чтобы комбинаторика считала вещи типа sin(nx) — т.е. nP не на эллиптической кривой, а просто на окружности (кажется не писал про тригонометрию доминошек здесь, только рассказывал на семинаре учителей)
хотелось бы конечно это поднять на эллиптический уровень, чтобы nP считали доминошки… кажется по кр мере про Сомоса что-то такое известно… в этом тоже не разобрался
разные более конкретные вещи тоже можно пытаться переносить: скажем, F_n | F_{nm} — и вот для последовательности знаменателей nP (скажем, сгенерированных кодом из предыдущего поста конкретно) верно буквально то же… и т.п.
незаконченное обсуждение арифметико-геометрического среднего конечно тоже связано со сложением на кубике, AGM реализует «эллиптический логарифм» (это наоборот, как имея точку xP найти x… вещественное или даже комплексное)
но пока step into the elliptic realm не выходит, только трогаю пальцами холодную воду | 2 511 |
| 5 | выше обсуждалось, что на эллиптической кривой экспоненциально мало точек с небольшими знаменателями (и поэтому даже если их бесконечно много, при наивном переборе их совсем не видно) — и это проявление того, что при сложении знаменатели экспоненциально растут
вот на последнее как раз легко посмотреть экспериментально
конечно сложение точек уже реализовано в sage и т.п., но по сути это просто проведение секущей через пару точек на кубике и нахождение третьего пересечения с кубикой — и это легко сделать и руками:
from fractions import Fraction
# y^2 = x^3 - 2
def add(P, Q):
x1, y1 = P
x2, y2 = Q
k = Fraction(y2 - y1, x2 - x1) if P!=Q \
else Fraction(3*x1*x1, 2*y1)
x3 = k*k - x1 - x2 # Vieta
y3 = -(k*(x3 - x1) + y1)
return (x3, y3)
P = (3, 5)
Q = P
for n in range(1,12):
Q = add(Q, P)
print(f"[{n+1:2d}] {Q[0]}")
экспоненциальный рост прямо визуально виден
выписанные числа на экране образуют параболу, то есть рост ~exp(cn²) | 1 065 |
| 6 | пусть кривая (скажем) задана полиномиальным уравнением на x и y с целыми коэффициентами. есть общий принцип в духе «арифметика отражает геометрию», что количество решений что-то помнит про геометрию этой кривой
слова про «количество решений» при этом можно понимать по-разному. можно считать решения по разным простым модулям — t.me/compmathweekly/45 & t.me/compmathweekly/69
но можно и более прямолинейно: считаем рациональные решения (X/Z,Y/Z) для |X|,|Y|,|Z|<N и смотрим на асимптотику по N (чтобы не считать одно и то же много раз, желательно еще запретить X, Y, Z иметь общий делитель)
для степени кривой возможны такие варианты: 1-2, 3, много
1-2) для разминки можно подумать, что будет для линейного уравнения? а для x²+y²=1? а для другой коники?
этот случай можно считать продолжением того, про что рассказывал школьникам на майском семинаре учителей (впрочем, продолжением той части, до которой дело как раз не дошло )
а сейчас сюжет про рациональные точки на кривых напомнил коллега Горчинский — спасибо ему за лекцию для наших школьников
3) для эллиптической кривой (гладкой кубики) рост логарифмический, причем в асимптотике виден и ранг — всё растет примерно как c(log N)^(r/2)
много) дальше уже никакой асимптотики нет: по теореме Фальтингса при большей степени [если кривая гладкая] — число рациональных точек вообще конечно
***
подумал, что мб разумная тема для компьютерного эксперимента
но в реальности если для первого случая действительно виден полиномиальный рост (и даже константы примерно видны), то для эллиптического случая с наивным перебором не получается увидеть примерно ничего
ну потому что это как носить воду в решете — и так-то кривая имеет положительную коразмерность, а если мы смотрим только на рациональные решения, то еще у nP величина координат растет экспоненциально…
мб будет еще продолжение | 880 |
| 7 | Черепашка Фурье и черепашка Гаусса
Была такая популярная форма программирования для начинающих «черепашка». У нас будет базовая версия, которая умеет 1) двигаться прямо, оставляя след; 2) поварачиваться (на месте) на указанный угол.
Можно написать что-нибудь типа
import math
import matplotlib.pyplot as plt
x, y, phi = 0, 0, 0
def move(s=1,color='blue'):
global x, y
x0, y0 = x, y
x = x0 + s*math.cos(phi)
y = y0 + s*math.sin(phi)
plt.plot([x0,x],[y0,y],color=color)
def turn(s):
global phi
phi += s*2*math.pi
for k in range(100):
move()
turn(1/100)
plt.gca().set_aspect('equal')
plt.show()
и увидеть на экране окружность. Ну… тоже приятно, но не особо интересно.
Забавно, что содержательные вещи буквально в одном шаге от такого. Например, можно вместо move() написать move(<функция от k>) и смотреть, как черепашка занимается преобразованием Фурье.
Но мы лучше оставим сдвиги одинаковыми, а вот поворот пусть растет линейно со временем. Вот на картинке результат
p = 101
for k in range(p):
move()
turn((2*k+1)/p)
Можно задавать вопросы… например, далеко ли черепашка уйдет от начала координат при разных p? Тут есть несколько уровней 1) экспериментальный; 2) эмпирическая прикидка в вероятностном духе для большого p; 3) точный ответ для произвольного p.
Можно, кстати, от 2) пойти чуть-чуть в другую сторону и смотреть для больших p на всю форму кривой (а не только на то, далеко ли мы уйдем). Видим мы, на самом деле, спирали Корню (=кривизна пропорциональна пройденному расстоянию).
***
Напомнил о таком сюжете недавно коллега Гусарев, а еще чуть раньше про это писал Гаусс коллега Клепцын. | 1 032 |
| 8 | в новом Квантике (№5) — статья Олега Мухаметова про сумму цифр степеней числа, почему она становится большой
по этому поводу не мог не поставить мини-эксперимент
будем считать сумму двоичных (для вычислительной эффективности) цифр степеней… ну хотя бы 3 — что можно ожидать увидеть?
ну если так грубо, то n log₂3 цифр числа 3ⁿ довольно случайные, так что единиц среди них должна быть примерно половина
вот какие-то колебания рядом cn для c = log₂3/2 мы и видим на графике
import matplotlib.pyplot as plt
from math import log
ns = range(3_000)
xs = [pow(3,n) for n in ns]
ans = [x.bit_count() for x in xs]
c = log(3)/(2*log(2))
appr = [n*c for n in ns]
plt.plot(ns,ans)
plt.plot(ns,appr)
plt.title(r'2-digit sums of $3^n$')
plt.tight_layout()
plt.show() | 0 |
| 9 | Запишем таблицу умножения чисел от 1 до N. Много ли чисел в ней встречаются?
Ну первая идея, что примерно N²/2… но некоторые числа встречаются несколько раз не только потому что 6×7=7×6, но и нетривиальным образом (24=8×3=6×4, вот это всё)… насколько это существенно?
Для таблицы умножения 10×10 ответ 42, вроде не очень далеко от 50. Но это потому что 10 маленькое число — на самом деле, встречается лишь o(N²) чисел!
На пальцах можно так объяснить. Сколько обычно простых делителей у числа, не превосходящего N? Каждое p является делителем с вероятностью 1/p, поэтому матожидание числа делителей есть ∑1/p, а эта сумма растет (как здесь обсуждалось) как log log N. А для чисел из таблицы умножения типичное количество простых делителей равно 2 log log N, среди чисел от 1 до N² таких чисел очень мало (почти у всех намного меньше простых делителей, log log N²).
Но это только начало истории, дальше — см. t.me/MathfromKrach/213
«Those familiar with the landscape of mathematics will instantaneously recognize this problem as something Erdős would ask. It was indeed Erdős who asked this in 1955. In the following, we discuss some elementary bounds for this problem, a remarkable achievement of Ford who solved the problem up to a constant factor, and finally rather surprising conjectural answer to this question, which is a work in progress by Ben Green and Mehtaab Sawhney.» | 0 |
| 10 | на картинке для не больших чисел (до 47) показано, насколько велик их НОД по сравнению с их произведением (по клеткам разнесена формула `=GCD($A2,B$1)/SQRT($A2*B$1)`)
можно подумать, что видно на этой картинке и почему
в последнее время было маловато собственно экспериментов, в т.ч. наивных… буду стараться чередовать | 0 |
| 11 | какие последовательности обладают свойством
a[1]+a[2]+…+a[2n-1]=a[n]² (для всех n)?
кто складывал идущие подряд нечетные числа, понимает, что a[n]=2n-1 подходит… а что еще можно придумать?
на Всеросе сегодня предлагали (задача 10.2) доказать, что при каких-то доп. условиях других решений нет… а я прочитав условие подумал, что это похоже на то, что обсуждалось напр. в t.me/compmathweekly/120 & t.me/compmathweekly/121 — и можно в таком же духе продеформировать…
ну и действительно, a[n] = sin(2n-1)x / sin x подходит (и примерно так все решения и выглядят — вроде так можно и утверждение с олимпиады при желании доказать) | 0 |
| 12 | здесь пару раз уже обсуждались количества рабиений (t.me/compmathweekly/40 например)
одна стандартная (при этом хорошая) задача — разобраться, почему количество разбиений на различные слагаемые всегда равно количеству разбиений на нечетные слагаемые
например: (7 6+1 5+2 4+3 4+2+1) vs (7 5+1+1 3+3+1 3+1+1+1+1 1+1+1+1+1+1+1)
можно потребовать, чтобы слагаемые были не только различными, но и все четными… ну это по понятной причине мы ничего нового не увидим; с другой стороны, если считать разбиения на различные нечетные слагаемые, то получается какая-то совсем новая последовательность
а чтобы получалась не новая последовательность, а тождество, можно сделать такой странные трюк
будем называть… э… 7-исправленными разбиениями — разбиения в сумму различных слагаемых, где кратные 7 числа бывают двух видов. так вот, если взять 7-исправленные разбиения нечетных чисел на нечетные — то будет та же последовательность oeis.org/A093950 что и просто для 7-исправленных разбиений
например: (15 11+3+1 9+5+1 7+7'+1 7+5+3 7'+5+3) vs (7 7' 6+1 5+2 4+3 4+2+1)
такую теорему опубликовал Кэли в 1876 году. и забавным образом это связано с эллиптическими интегралами из недавнего поста t.me/compmathweekly/128
но в этой теме так и не разобрался, а вместо этого напишу, что вместо 7-исправленных разбиений можно брать 23-исправленные, и тоже будет такого же рода утверждения… а если какие-то другие числа вместо 7 или 23 брать, то ничего не получается (по крайней мере на первый взгляд)
но может кто-то найдет экспериментально каких-то еще родственников этого тождества Кэли
для экспериментов минимально адаптировал count_partitions_upto из упомянутого в начале поста, так что особого кода не будет | 0 |
| 13 | Леня @qtasep Петров со товарищи (D.Anderson, G.Panova) «present computational results related to principal specializations of the Schubert polynomials (…). We find the first counterexample, at n=17, to the conjecture of Merzon-Smirnov that the maximal value of S_w(1^n) is obtained at a layered permutation.»
https://lpetrov.cc/2026/03/schubert-computation-sampling/
вполне себе компьютерная математика — при этом не то что бы просто достаточно перебрать в лоб:
This conjecture was exhaustively verified by one of us (DA) for n≤13 in February 2025. (…) In May 2025, Adam Wagner (along with DA and Alejandro Morales) deployed Google DeepMind’s FunSearch to seek counterexamples to Conjecture. For n≤16 the heuristics found by the model did not uncover any counterexamples, providing weak evidence in favor of the conjecture in this range. (For larger n, time constraints limited the power of this method.) | 0 |
| 14 | Витя Клепцын обратил внимание на дудл Гугла к «дню числа пи» с этих выходных
там периметры вписанных и описанных многоугольнико со всё большим числом сторон вычисляются при помощи динамики a’ = 2ab/(a+b), b’=√(a’b)
если знать тригонометрию, то легко эти формулы проверить, но вижу такое первый раз
более естественно смотрится похожая динамика a’ = 2ab/(a+b), b’=√(ab)… или, если перейти к обратным величинам, a’=(a+b)/2, b’=√(ab)
если такое итерировать, то обе переменные очень быстро сходятся к одному и тому же числу, «арифметико-геометрическому среднему» Гаусса
вот как раз про это думал написать чуть раньше в связи с тем, что (1/4)! тесно связано с AGM(1,√2)… а также в связи с тем, что AGM позволяет параметризовать точки кубической кривой правильно (так, чтобы сложение на кубике соответствовало сложению параметров)
в Мат. просвещение ключевое утверждение про связь AGM с эллиптическими функциями дали в виде задачи: доказать, что интеграл по прямой от dt/√((t²+a²)(t²+b²)) не меняется при замене (a,b) на ((a+b)/2,√(ab))… можно попробовать решить или прочитать решение в mathnet.ru/rus/mp979 или elsewhere | 0 |
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
