1 - если координаты точки лежат в узле решетки, иначе - 0.
Так это не функция, которая определена только на узлах; она определена всюду и есть индикатор этой решётки.
Но если шаг не постоянный, а задан некоторой функцией от n?
О, тогда это уже не та решётка, о которой лично я по крайней мере думал. С одной стороны задача скучнее (раз решётка, судя по всему, «ортогональная»). С другой стороны хуже.
Я не знаю как обойтись без 'double' и получить, например, логическую 1 или 0...
Если шаг рациональный,
mod должен работать, а если иррациональный, то убедитесь что это вам точно надо, потому что точная арифметика для работы с некоторыми видами иррациональных чисел конечно есть, но это сложно, и при использовании матлаба это как раз символьные вычисления могут в какой-то мере обеспечить, но…
есть порядковый номер вертикальной (горизонтальной) прямой, пересечение которой с соответствующей ортогональной прямой является соответствующим узлом решетки.
Координаты узлов решётки равны в точности
для произвольных целых
? Или они равны
, где
? Или что-то третье?
Задача заключается в поиске такого узла произвольной квадратной решетки (не обязательно с постоянным шагом), через который проходит луч X и который находится ближе всего к началу координат либо получению ответа, что заданный луч не проходит ни через один узел заданной решетки.
Луч X имеет начало в точке (0,0) и проходит через произвольную точку A.
Тогда вам не нужна функция-индикатор, совсем. Она вам не поможет. И если
произвольная, то останется скорее всего просто перебирать узлы решётки по одному в квадранте, в котором лежит луч, в порядке, примерно совпадающем с удалением узлов от начала координат, например перебирать
в порядке
— и для общего случая вы никогда не сможете опровергнуть прохождение луча через хоть какой-то узел.
Но если функция
достаточно хорошая, можно как-то решить уравнение. Как бы вы например решили это для обычной регулярной решётки? Достаточно просто:
для какого-то неизвестного
, где ищем мы наименьшее положительное из них. Тут видно, что шаг решётки
не имеет значения и мы имеем решения ровно если
— рациональное число, и тогда
— числитель и знаменатель соответствующей приведённой дроби. И уже для такой простой задачи мы видим, что для численного решения она плохо поставлена, если вы не знаете, какому множеству принадлежит
по смыслу задачи. Если
без ограничений — всё пропало, ничего хорошего не будет, рациональные числа всюду плотны в
и вы не сможете написать удовлетворительный численный код.
Так что какова
, и каковы возможные
?