Комментарии 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 раза больше их ширины.
Почему бы не строить график только косинуса?.. В итоге искомая функция будет 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, т.к. косинус переменной частоты по сути — ЧМ сигнал.
Так и не понял, при чем тут факторизация. И какая собственно задача решается.
Визуальное представление разложения числа на множители с помощью тригонометрических функций