2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Визуализация 4D
Сообщение29.01.2012, 15:35 
Аватара пользователя


25/02/07

887
Симферополь
Здравствуйте.
Мне известен способ представления натуральных чисел точками в пространстве размерности $N=4$. Интересно было бы увидеть, как в этом пространстве распределены простые числа.
Пожалуйста, помогите закодировать в C++ алгоритм, который я приведу ниже. Потребуется работа с массивами и матрицами, но программа должна получиться несложной. Вся работа выполняется исключительно в натуральных числах.

Алгоритм представления натуральных чисел точками в пространстве размерности $N=4$

1. Число вычисляется как результат скалярного произведения векторов $(\vec a_{pu},\vec a_{qv})=S$ и, таким образом, зависит от четырех параметров, которые мы будем считать его координатами: $S(p,u,q,v)$ .

2. Каждый из векторов, например, вектор $\vec a_{pu}$ принадлежит упорядоченному множеству $T_p$ где $p$ - номер множества, и имеет в этом множестве номер $u$.

3. Построение множества $T_p$ рассмотрим на примере $T_1$ . Алгоритм его построения следующий:

3.1. Построить матрицу $C$ по правилу: $c_{1j}=c_{i1}=1\ , c_{ij}=c_{i,j-1}+c_{i-1,j}$ . В результате (здесь для $i,j=1 \dots 5$) получится "квадрат Паскаля":

$ C=\left ( \begin {array} {ccccс}
1 & 1 & 1 & 1 & 1 \\
1 & 2 & 3 & 4 & 5 \\
1 & 3 & 6 & 10 & 15 \\
1 & 4 & 10 & 20 & 35 \\
1 & 5 & 15 & 35 & 70
\end {array} \right ) $

3.2. Извлечь из матрицы $C$ первую строку и построить матрицу $A_1$ содержащую на главной диагонали и первой диагонали под ней эту строку, а остальные элементы имеющую равными нулю:

$ A_1=\left ( \begin {array} {ccccс}
1 & 0 & 0 & 0 & 0 \\
1 & 1 & 0 & 0 & 0 \\
0 &1 & 1 & 0 & 0 \\
0 & 0 & 1 & 1 & 0 \\
0 & 0 & 0 & 1 & 1
\end {array} \right ) $

3.3. Возвести матрицу $A_1$ в соответствующие степени и получить векторы множества $T_1$ по правилу: $A_1^u \vec e_1=\vec a_{1u}$ где $ \vec e_1=\left ( \begin {array} {c} 1 \\ 0 \\ 0 \\ 0 \\ 0 \end {array} \right ) $ - первый орт (упорядоченное множество векторов $T_1$ является ни чем иным, как Треугольником Паскаля):

$ T_1=\left ( \begin {array} {ccccс}
1 & 0 & 0 & 0 & 0 \\
1 & 1 & 0 & 0 & 0 \\
1 &2 & 1 & 0 & 0 \\
1 & 3 & 3 & 1 & 0 \\
1 & 4 & 6 & 4 & 1
\end {array} \right ) $

Любое другое множество $T_p$ строится аналогично при помощи строки с номером $p$ из матрицы $C$.

4. Построить все множества $T_i$ при помощи $i$-тых строк матрицы $C$.

5. Вычислить все скалярные произведения векторов принадлежащих полученным множествам при том условии, что нельзя перемножать между собой векторы принадлежащие одному множеству: $(\vec a_{pu},\vec a_{qv})=S\ ,\ p \ne q$ .

6. Проверить полученные значения $S$ на простоту. В случае положительного результата вывести их в виде $S(p,u,q,v)$ .

7. Построить четыре трехмерных сечения полученного множества точек: $S(p,u,q)\ ,\ S(p,u,v)\ ,\ S(p,q,v)\ ,\ S(u,q,v)$ или визуализировать результать каким-либо иным способом.

P.S. Конечно, совсем не обязательно строить и хранить все множества $T_i$ для того чтобы организовать перебор попарных сочетаний принадлежащих им векторов. Видимо, будет экономнее строить каждый вектор скалярного произведения по его индексам, проверять получившееся число и переходить к следующему скалярному произведению.

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение30.01.2012, 11:56 
Заслуженный участник


26/07/09
1559
Алматы
2serval
Интересно, однако. Но некоторые моменты абсолютно непонятны. Например,
Цитата:
Извлечь из матрицы $C$ первую строку и построить матрицу $A_1$ содержащую на главной диагонали и первой диагонали под ней эту строку

Но ведь главная диагональ ($i=j$) и диагональ под ней (как я понял, с индексами $i=j+1$, где $i$, $j$ -- номера соответственно строки и столбца) имеют разную длину, как именно вместить первую строку матрицы $C$ в элементы непосредственно под главной диагональю матрицы $A_1$?

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение30.01.2012, 13:43 
Аватара пользователя


25/02/07

887
Симферополь
Circiter в сообщении #533007 писал(а):
2serval
как именно вместить первую строку матрицы $C$ в элементы непосредственно под главной диагональю матрицы $A_1$?

Извиняюсь на неточности. Я так привык к своим треугольникам, что многое кажется мне очевидным.
В данном случае, нужно заполнять ячейки под главной диагональю, начав с верхнего левого, пока не заполнятся все. Их будет на 1 меньше, чем элементов исходной строки. Например, матрица $A_2$ будет выглядеть так:

$ A_2=\left ( \begin {array} {ccccс}
1 & 0 & 0 & 0 & 0 \\
1 & 2 & 0 & 0 & 0 \\
0 &2 & 3 & 0 & 0 \\
0 & 0 & 3 & 4 & 0 \\
0 & 0 & 0 & 4 & 5
\end {array} \right ) $

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение30.01.2012, 17:07 
Аватара пользователя


25/02/07

887
Симферополь
К слову, $(\vec a_{1u},\vec a_{2v})=u^v$ - хорошо известное в комбинаторике тождество. Только там кроме биномиальных коэффициентов (множество $T_1$) под суммой стоят еще числа Стирлинга 2-го рода и факториалы.

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение31.01.2012, 01:58 
Заслуженный участник


26/07/09
1559
Алматы
Ещё вопросик. Формула $A_1^u\vec e_1=\vec a_{1u}$ для произвольного $p$ должна выглядеть как $A_p^u\vec e_p=\vec a_{pu}$? Т.е. именно $\vec e_p$, а не все тот же $\vec e_1$? Все никак не получается вникнуть...

В этой же формуле матрица $A_i$ возводится в степень $u$. Какого порядка величина максимальной степени? Я плохо себе представляю как это реализовать программно... Числа очень большие же получаются. Видимо вам придется использовать длинную арифметику? (Так же, правильно ли я понимаю, что $A_1^u e_1$ можно расчитывать по формуле $x_i=A_1 x_{i-1}$, $x_0=e_1$, $a_{1u}=x_u$?)

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение31.01.2012, 10:07 
Аватара пользователя


25/02/07

887
Симферополь
Circiter в сообщении #533283 писал(а):
Формула $A_1^u\vec e_1=\vec a_{1u}$ для произвольного $p$ должна выглядеть как $A_p^u\vec e_p=\vec a_{pu}$? Т.е. именно $\vec e_p$, а не все тот же $\vec e_1$?

Нет, для произвольного $p$ формула должна выглядеть как $A_p^u\vec e_1=\vec a_{pu}$, т.е. именно $\vec e_1$ - все тот же первый орт.
Circiter в сообщении #533283 писал(а):
В этой же формуле матрица $A_i$ возводится в степень $u$. Какого порядка величина максимальной степени? Я плохо себе представляю как это реализовать программно... Числа очень большие же получаются. Видимо вам придется использовать длинную арифметику? (Так же, правильно ли я понимаю, что $A_1^u e_1$ можно расчитывать по формуле $x_i=A_1 x_{i-1}$, $x_0=e_1$, $a_{1u}=x_u$?)

1. Конечно, чем числа больше - тем интереснее должна быть картина. Но, для первого взгляда, думаю, будет достаточно положить $u=10$ или около того.
2. Если я правильно понял вопрос, то да, вектор в множестве получается действием оператора этого множества на предыдущий вектор: $A_1 \vec a_{1,i-1}=\vec a_{1i}$.

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение31.01.2012, 10:24 
Заслуженный участник


26/07/09
1559
Алматы
Цитата:
чем числа больше - тем интереснее должна быть картина.

Плохо себе представляю, как это будет выглядеть на экране. :) Сначала я подумал, что вы предлагаете нарисовать скалярное поле $S(p,u,q,v)$, т.е. $p$, $u$, $q$, $v$ -- координаты, а $S$ -- скажем, цвет точки. Но коль скоро разброс значений $S$ велик, то непонятно как это все ужать в сравнительно узкое (в смысле разумного порога различения оттенков) цветовое пространство. (кстати, раз значения таких координат сравнительно небольшие, получится что-то некрасивое воксельное.)

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

В любом случае напрашивается то ли логарифмический масштаб, то ли ещё какой трюк...

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение31.01.2012, 12:14 
Аватара пользователя


25/02/07

887
Симферополь
Circiter в сообщении #533313 писал(а):
я подумал, что вы предлагаете нарисовать скалярное поле $S(p,u,q,v)$, т.е. $p$, $u$, $q$, $v$ -- координаты, а $S$ -- скажем, цвет точки.

Поле было бы еще интереснее, я об этом думал, но пока задача скромнее. Цвет не нужен. Нужно изобразить точками только простые числа - все одним цветом.
Не исключаю, что некоторые из них будут иметь более чем одно представление (иметь более одного образа в виде точки).
Задача-минимум - посмотреть, не проявится ли в этом пространственном распределении какая-нибудь структура. Если проявится, тогда можно будет ее изучать, если не проявится - тогда ... будем думать дальше :-) Возможно, тогда их и раскрасим :-)
Собственно, нужно подобрать максимальные значения индексов нумерующих векторы $\vec a_{ij}$ такими, чтобы количество изображаемых простых чисел $S$ было порядка нескольких сотен. Для визуализации общей картины этого должно хватить.
Думаю, что хорошо бы сделать эти индексы параметрами чтобы можно было присваивать им значения вручную и экспериментировать.

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение31.01.2012, 21:26 
Аватара пользователя


25/02/07

887
Симферополь
Я вообще предполагал, что программа будет лишь вычислять координаты точек и выводить их в файл.
А из файла их можно забирать, скажем, в Maple, и строить точечные 3D графики.

 Профиль  
                  
 
 Re: Визуализация 4D
Сообщение09.04.2012, 21:13 
Аватара пользователя


25/02/07

887
Симферополь
28 января Circiter предложил мне создать здесь тему и обещал помощь. Его последнее сообщение на форуме датировано 3 февраля. На два личных сообщения он не ответил. Пропал человек. А он, однако, не случайный прохожий, - заслуженный участник, на форуме с 2009 года. Никто не знает, что с ним случилось?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group