Комментарии 4
Вообще говоря, конечная формула более подвержена погрешностям, чем исходный вариант. Банальнопрям классический кандидат на catastrophic cancellation. С другой стороны, косинус можно посчитать довольно точно. С корнем, конечно, будет потеря точности, но он в обоих вариантах присутствует. И разумеется потеря точности с корнем не такая сильная, как в случае catastrophic cancellation.
Реальная причина, почему график стал лучше в том, что Вы разбили кривую на два лепестка. У кривой есть особая точка в (0, 0) и по сути Вы искусственно добавили контрольную точку, чтобы корректно обработать эту особенность.
Аналогичного результата можно добиться если в исходном подходе просто к списку точек взять и добавить точки.
И это собственно показывает путь к рисованию произвольных кривых. Вместо того, чтобы искать какую-то специфичную параметризацию, нужно искать особые точки: экстремумы, точки перегиба, самопересечения и прочее. И дальше рисовать сегменты между особыми точками наивным подходом.
Но числа и
является иррациональным. И в исходной модели вам пришлось вычислять когда
причем в исходной модели есть на данном интервале, когда исходная модель не определена, так как под корнем получается отрицательное число. Это когда
и
В полученной модели область определения не дробится. Это пожалуй существенный факт
... причем в исходной модели есть на данном интервале, когда исходная модель не определена
Не очень понимаю, к чему это. Я не говорю, что Ваш метод плохой сам по себе. Я лишь говорю, что он не решает проблемы, которую Вы же сами и обозначили: как нарисовать кривую на компьютере.
Точнее сказать, в данном конкретном случае он её решает, но это вопрос чисто совпадения, а не общей закономерности. В общем случае нужно идти через анализ кривой, как я писал выше.
P.S. ну неопределена и неопределена — это же исходная постановка задачи. Если она так исходно была поставлена, значит скорее всего, это никого особо не волнует.
Вместо того, чтобы искать какую-то специфичную параметризацию, нужно искать особые точки: экстремумы, точки перегиба, самопересечения и прочее. И дальше рисовать сегменты между особыми точками наивным подходом.
Обе приведенные параметризации обладают тем недостатком, что содержат особые точки. Именно это приводит к необходимости составлять кривую из кусков различных кривых - (в первом случае это две кривые на разных интервалах изменения параметра, а во втором - просто две разные кривые для одного и того же интервала параметров). Совет строить кривые из кусков является универсальным, но именно для лемнискаты существует единое представление, позволяющее построить всю кривую целиком для одного интервала параметра :
Такое представление не имеет особенностей и является наиболее простым. Насчет точности вычисления тригонометрических функций - не думаю, что это имеет какое-то значение. На рисунке показана лемниската, построенная по приведенному мной представлению с использованием 100 точек, а на отдельном кадре - половинка, построенная с помощью рационального представления из статьи (красным, тоже по 100 точкам). Мне кажется, что они не очень сильно отличаются. Про эконимию времени судить не берусь, возможно, что рациональное представление действительно быстрее


Рациональная параметризация, как метод устранения численных погрешностей при построении графиков