ESPN DeportesCuando las palabras pesan, golpean y ripostanThe Jerusalem PostBen-Gvir’s gallows betray the Jewish values at the heart of Zionism - opinionPunch2027: Osun APC rallies electorate for candidates, says current hardship temporaryESPN'She never stopped encouraging me': How Dawn Staley refused to let hearing loss hinder Ayla McDowellRTP DesportoCampeão FC Porto vence Sporting por 80-76 e conquista Supertaça de basquetebolVilaWebJoan Dausà fon en una sola cançó les històries de “Jo mai mai” i de “Judit”Collider‘The Twilight Zone’s Creepiest Episode Is Still an Unforgettable 25 MinutesSRF NewsWM-Strassenrennen der Frauen – Reusser verpasst Bronze bei Triumph von Vollering knappGuardian SportEngland v Spain: Nations League football – liveThe GuardianStrictly Come Dancing: week one – liveThe South AfricanThe Daily Lotto results for Saturday, 26 September 2026BBC SportLynn remaining positive despite Wales' USA setback
The Daily Newsstand · Free, Always
Saturday, September 26, 2026

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

Translate

При построении графиков по математическим формулам, особенно если они заданы в полярных координатах или в параметрической форме в окрестностях некоторых точек они могут существенно искажаться. Обычно это происходит вблизи точки O с координатами 0;0, потому что ошибка округления в районе этой точки имеет такой же порядок или даже выше, что и значения функции. Но есть и вторая причина этого – для некоторых функций 0 является пограничной точки, то есть с одной стороны нуля, как правило, с положительной функция определена, а с другой, как правило отрицательной – неопределенна. Примером такой функции является квадратный корень.

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

  • Не является универсальным

  • Не для всех функций дает желаемый результат

  • Бывает чрезвычайно сложно найти требуемые уравнения функции.

Но мы все-таки рассмотрим этот теоретический способ на примере построения кривой Лемниската Бернулли, которая очень напоминает лежащую восьмерку или знак бесконечности.

Как известно, Лемниската Бернулли в полярных координатах имеет следующее уравнения:

.\rho=a\cdot\sqrt{\cos2\psi}

Для построения программы была использована программа моей разработки, написанная на языке C# по технологии NET WPF, использующая две сторонних библиотеки mXparser и OxyPlot. На данный момент программа может строить графики явных функций и кривые, заданные параметрическими уравнениями.

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

\rho=f\left(\psi\right)

где ρ – полярный радиус, а φ-полярный угол

Тогда данное уравнение можно записать в декартовой системе координат можно записать в параметрической форме следующим образом:

\left\{\matrix{X\left(\psi\right)=f\left(\psi\right)\cdot\cos\phi\\X\left(\psi\right)=f\left(\psi\right)\cdot\sin\psi}\right.

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

Но прежде запишем для Лемнискаты Бернулли параметрические уравнения для декартовой системы координат:

\left\{\matrix{X\left(\psi\right)=a\cdot\sqrt{\cos2\psi}\cdot\cos\psi\\Y\left(\psi\right)=a\cdot\sqrt{\cos2\psi}\cdot\sin\psi}\right.

Ниже приводится график, который построен по этим формулам по 100 точкам:

Вместо лемнискаты Бернулли мы получили какую-то гантелеобразную кривую.

При увеличение числа точек до 200 мы  видим, что кривая стала намного плавнее и больше похожа на лемнискату Бернулли. Но если присмотреться, то в районе начала координат не наблюдается пересечение линий.

Можно и дальше увеличивать число точек, и наш график будет все ближе и ближе приближаться к истинной лемнискате Бернулли, но это увеличивает объемы требуемых расчетов для построения графиков и требуемую память для хранения массива точек в ОЗУ.

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

Прежде, чем выполнить их запишем уравнение лемнискаты Бернулли в полярных координатах немного в другом виде:

\rho^2=a^2\cdot\cos2\psi

И соответственно в декартовой системе координат оно запишется следующей системой параметрических уравнений:

\left\{\matrix{X^2\left(\psi\right)=a^2\cdot\cos2\phi\cdot\cos^2\psi\\Y^2\left(\psi\right)=a^2\cdot\cos2\psi\cdot\sin^2\psi}\right.

или

\left\{\matrix{X^2\left(\psi\right)=a^2\left(\cos^2\psi-\sin^2\psi\right)\cdot\cos^2\psi\\Y^2\left(\psi\right)=a^2\cdot\left(\cos^2\psi-\sin^2\phi\right)\cdot\sin^2\psi}\right.

Если сложить уравнения в последней системе, то получим:

X^2\left(\psi\right)+Y^2\left(\psi\right)=a^2\cdot\left(cos^2\phi-sin^2\phi\right)

или

X^2\left(\psi\right)+Y^2\left(\psi\right)=a^2\cdot\cos2\psi

Чтобы исключить из последнего выражения переменную φ, используем формулы перевода декартовых координат в полярные:

\rho^2=x^2+y^2\sin\psi=\frac{y}{\sqrt{x^2+y^2}}\cos\psi=\frac{x}{\sqrt{x^2+y^2}}

Подставив эти формулы в последнее уравнение лемнискаты Бернулли и сделав несложные арифметические преобразования получим уравнение данной кривой в декартовой системе координат:

\left(x^2+y^2\right)^2=a^2\cdot\left(x^2-y^2\right)

Данное уравнение является неявным уравнением Лемнискаты Бернулли. Из него довольно сложно вывести зависимость одной декартовой координаты от другой. Чтобы это легче было сделать, сделаем следующую подстановку y=x·t

\left(x^2+x^2*t^2\right)^2=a^2\cdot\left(x^2-x^2*t^2\right)

Данное уравнение легко решить относительно x:

x\left(t\right)=a\cdot\frac{\sqrt{1-t^2}}{1+t^2}

И соответственно для у мы получим:

y\left(t\right)=a\cdot t\cdot\frac{\sqrt{1-t^2}}{1+t^2}

Последние два выражения определены, если t принадлежит отрезку [-1;1]

Они являются параметрическими уравнениями правой половины лемнискаты Бернулли. Чтобы построить левую половину достаточно x взять со знаком минус.

Данная математическая модель лучше исходной по следующим причинам:

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

  • Свели отрезок аргумента к отрезку [-1;1];

Данный график был построен по последней математической модели.

Данная кривая наиболее похожа на лемнискату Бернулли.

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.