Pull to refresh
9
0
Send message
Все замечания постараюсь внести в содержание публикации, текст не прогонял через Главред , работаю напрямую редактором Харбр.
Теперь что касается детерминистичности для точного решения и аналитики, период повтора траектории при зеркальном отражении элементов в сфере на множестве иррациональных и трансцендентных числах — бесконечность, формально подкоренному выражению ничто не мешает принимать и трансцендентные значения, откуда получаем что вычисление состояния генератора потребует знания функции последовательности иррациональных и трансцендентных чисел, что в действительности невозможно, потому если вы заботитесь про криптографическую стойкость, то она обеспечена аналитически, плюс как упомянуто в статье реализация дополняет поток внешними случайностями и тем усложняет поток, доводя до класса True Random.
Алгоритм отражения шариков без изменения свойств можно реализовать в целых числах,
пожалуйста приведите ссылку где такое реализовано для функции квадратного корня использующегося при вычислении времени до взаимодействия.
Ну и конечно никакого true random и внешней связи с памятью тут нет

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

А теперь вместо квадрата случайное направление и порядка сотни элементов, которые в процессе еще и обмениваются импульсом после каждого взаимодействия с границей.
Я не претендую на место в рынке по производительности или конкуренции с аппаратными устройствами, но мне лично был интересен вопрос о существовании источника для практически прямого получения именно случайных чисел с плавающей точкой.
Плюс я получаю значение целиком, не заботясь о битности или внутреннем устройстве чисел с плавающей точкой. Переносимость такого кода выше, хотя представить ситуацию когда высокоуровневый язык оказывается без возможности использования библиотек практически сложно.
Чтобы получить случайный float достаточно целочисленного генератора


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

… allows you to generate random decimal fractions in the [0,1] interval. The randomness comes from atmospheric noise, which for many purposes is better than the pseudo-random number algorithms typically used in computer programs.
Есть числа с плавающей точкой, а действительных нет.

Паскаль Математика,… используют слово Real
Для использования событий на поверхности сферы — границы или сосуда что содержит газ, используется дополнительное преобразование.
Я не знаю использовалось ли оно в UNIX системах, или использовались внутренние события, которые из-за влияния границы имеют плотность отличную от равномерной, сам генератор тогда требует большого времени разогрева, и еще ряд сложностей.
Шарик ударяется о стенку сосуда, — событие на границе. Для уменьшения сложности вычислений, в алгоритме используется отражение центра шарика.
Да актуально, но приведенная статья посвящена больше внутренней работе функций преобразования, я сразу перешел к следующей главе, но и там не заметил упоминания или построения функции сравнения.
Дело в разных размерах массивов, на практике можно получить нужную последовательность несколькими способами, но они отличаются разными способами подготовки массивов и позициями в них. Что говорить на остаток и саму позицию здесь и разбираем.

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

К той же близкой по виду взаимнокорреляционной функции уже есть вопросы, инверсия порядка и отрицательное время похожи вот только для ряда нет отрицательных индексов, или значения нужно дополнительно определять, или иметь константу обеспечивающую положительность разницы, или и то и другое. На все эти вопросы более просто отвечает DTF.
Мне хватило точности и без использования целочисленного словаря. Но спасибо за точное название метода, может кому то пригодится.
Спор о выборе теории для иллюстрации действия алгоритма. Автокорреляция это еще один термин который от темы уводит дальше чем свертка.
В DFT интегрирования нет вообще, наиболее простое его определение связано со значением полинома в точке, приводящему при подстановке к подобию части ряда Фурье. Соответственно и имеет все свойства этого преобразования, доказательство обычно проводят индукцией, но все же отличие DFT и ряда есть, первое это точное преобразование.

Теперь про интегрирование(приведу без комплексного варианта),
— в сверточном определении f(x)g(y-x)dx
— для взаимнокорреляционной функции f(x+y)g(x)dx
переход от одного к другому это замена переменных
x=x+y — вот откуда смещение.

Если вы будете искать t[i+j]p[j] в произведении полиномов
A×B=InvDFT(DFT(A)×DFT(B))
то получите начальную позицию m.

Я использую именно свойство DFT так как оно определено аналитически точно, но в пределах машинной точности вычислений.

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

Дополнительные действия есть как при использовании DFT, так и при FT, но для первого их меньше. В названии статьи приведено DFT и именно его свойствами я и пользовался в создании алгоритма, хотя можно использовать и свойства FT

сможете его подтвердить реальным примером,

разумеется:
— использование инверсии и взаимнокорреляционной функции приводят началу последовательности PT с позиции m
использование свертки и сопряжения, приводят началу последовательности PT с позиции 1

Такое смещение в точности соответствует преобразованию для изменения «знака функции времени второго аргумента».

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

Однако как оказалось несмотря на близость названий, DFT имеет другой набор свойств хотя и совместим со свойствами обычного преобразования. Само определение DFT для полинома это его значение в точке x=Exp(2*i*Pi/n), — точное, как и формула преобразования, которая вроде похожа на сверточную версию но все же без сопряжения. Соответственно не имеет ошибки связанной с конечностью ряда, а содержит только ошибку связанную точностью машинного вычисления. Которую, как вы упомянули, возможно устранить при сведении вычислений к целочисленным преобразованиям.

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

В итоге как оказалось вроде бы очевидное и легкое дополнение для каждой лекции и статьи которые просматривал, в реализации дюжины строчек кода, показали страшную ретивость и потребовали уйму времени для их отладки и согласования.
Задача которая привела к написанию статьи была связана с нахождением величины смещения двух изображений, меня не устроила скорость «наивной» реализации. Потому такой развлекательный вариант исходного массива.
Спасибо за замечание, тоже думаю внести правку в статью, так как это написано только в коде. Ищется отрезок длинной W/8 с началом в точке W/4 на линии рисунка с вертикальной координатой H/2.
где W-ширина (width), H-высота(height) рисунка в пикселях.

...
y = IntegerPart[H/2]; (*Pattern width and coordinates*)
x = IntegerPart[W/4];
w = IntegerPart[W/8];
Если у вас под рукой есть ссылка на теорию по построению функции сравнения для варианта 2D напишите ее пожалуйста. Вариант TT-2PT очевиден именно для одномерного случая, тогда как для двумерного случая уже не понятно, ведется суммирование по строке или столбцу, а если и то и другое то как это соотносится с точечной разницей яркости.
Причина в разнице начальной позиции в использовании различных функций в определении. При теории основанной на свойствах полиномов необходима инверсия, тогда как использование теоремы о свертке подразумевает дополнительную замену переменных, которая и приводит к величине изменения позиции.

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

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

При использовании дискретного преобразования Фурье, матрица M содержит также элементы от циклического сдвига изображений между собой. Поэтому, если не требуется анализировать циклический сдвиг кадров, то поиск максимального элемента в матрице M нужно ограничить областью (0,0)-(N1-M1, N2-M2).


Именно из-за таких мелочей которые будучи смешаны в кучу дают «абракадабру» я и написал статью.

Information

Rating
Does not participate
Registered
Activity