Как стать автором
Обновить

Комментарии 7

Вы открыли замечательное свойство косинуса: он равен +-1 при аргументе, кратному Pi. Для всех остальных аргументов — косинус меньше 1 по модулю. Это проходят в школе, где-то в 9-ом, наверно, классе.


Поэтому, возводя в четную степень cos(pi*f(x)) вы получаете пики когда f(x) — целое. Ваше f(x) = n/x, поэтому весь график будет иметь пики в рациональных x=p/q т.ч. p|n. Делители числа n тут получаются при q=1. При q>1 вы получаете бесконечное множество пиков около нуля и всякие лишние, вроде 2.5 для n=15.


Лишние рациональные числа для q>1 вы пытаетесь фильтровать, но для этого достаточно составить функцию, которая принимает 1 по модулю только в целых числах. Опять же, можно взять это свойство косинуса и домножить на сos(pi*x).


Ваша же фильтрация с домножением на много синусов не работает. Например, ваш множитель для x=3 дает почти 0 и удаляет этот делитель 15 с графика.


Домножение же только на sin(π⋅n⋅x/2) оставляет любое x — нечетное целое число. Для n=15 вы все правильно отфильтруете, но для n=10 вычеркнете еще и делитель x=2.


Еще вопрос: зачем домножать на f(x) весь график? Почему бы не строить график только косинуса? Тогда все пики будут одинаковой высоты. В итоге искомая функция будет cos(pi*n/x)^20cos(pi*x)^20.


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

Деление на 20 в аргументе синусов исправил на 2. Опечатка. Для n уточнил нечётность, спасибо.
Почему бы не строить график только косинуса?.. В итоге искомая функция будет cos(pi*n/x)^20cos(pi*x)^20

Готовил все по рецепту, только вместо курицы взял рыбу, вместо грибов положил бананы, а вместо пармезана — брынзу…
cos(pi*n/x)^20cos(pi*x)^20 не будет таким же, как cos x sin.
cos(pi*n/x)^20cos(pi*x)^20 не будет таким же, как cos x sin.

Что вам вообще надо, какая у вас задача? cos(pi*n/x)^k cos(pi*x)^k стремиться к 1 при k->бесконечности только для делителей числа n, а для всех остальных чисел — к 0. Судя по вашим графикам и заголовку статьи, именно этого вы и добиваетесь.


Ваш cos(pi n/x)^k sin(pi x / 2)^k будет точно таким же, но только для нечетных делителей числа n.


Если вам так хочется именно синус использовать, то объясните это в статье. Зачем, почему, откуда там коэффициенты 1/2, 3/2, 5/2, 7/2? Почему остановились на 7? Объясните, почему ваша функция имеет пики в делителях? Что за лишние пики и как вы их фильтруете?

Не могли бы Вы для непосвящённых пояснить:
Если я вместо всех предлагаемых косинусов/синусов и т.д. нарисую график простой функции:

Для некоторого целого числа n:
f(x) = 1, если n делится на x нацело; и 0 — в иных случаях.

Есть подозрение, что вычислительно это будет проще (целочисленное деление с остатком против синусов/косинусов и деления с плавающей запятой), а результат (насколько понял Ваши рассуждения) будет аналогичный рисунку 6.

Если не прав — пожалуйста поясните. Иначе — вопрос: к чему такие сложности с синусами?
f(x) = 1, если n делится на x нацело; и 0 — в иных случаях.

Верно для рисунка 6. И для остальных, если отбросить амплитудную составляющую. Более того, так не будет и побочных гармоник.
Есть подозрение, что вычислительно это будет проще...

Вычислительная сложность здесь одна из худших, это факт. Но вряд ли кто-то станет иллюстрировать факторизацию большого числа. Там правильнее будет записать каноническое уравнение.
Иначе — вопрос: к чему такие сложности с синусами?

Синусы пришли из фильтрующего свойства функции sinc, т.к. косинус переменной частоты по сути — ЧМ сигнал.
Более того, так не будет и побочных гармоник

А зачем они вам нужны?

Так и не понял, при чем тут факторизация. И какая собственно задача решается.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории