Введение
Статья продолжает цикл методических разработок авторов (Куланин, Степанов, Нуркаева, 2020); (Куланин, Степанов, Нуркаева, 2021); (Куланин, Степанов, 2024); (Куланин, Степанов, 2025).
Непосредственно она продолжает статью «Алгебраические кривые высших порядков в преподавании высшей математики. Кубические кривые» (Куланин, Степанов, 2026). В ней обсуждаются некоторые проблемы, связанные с путями повышения культуры математического мышления студентов-математиков. Главным объектом обсуждения являются алгебраические кривые выше третьей степени. Авторы опираются на опыт работы на факультете информационных технологий МГППУ.
Кривые выше третьего порядка
Кривые высших порядков образуют очень сложные множества. Уже для кубик возникают проблемы с классификацией. И, конечно классификация кривых выше третьего порядка, несравненно сложнее. Шестнадцатая проблема Гильберта, которая предлагает разрешить вопрос о топологии алгебраических кривых и поверхностей, направлена в частности на вопросы, тесно связанные с классификацией алгебраических кривых (Проблемы Гильберта, 1969). Сделаны попытки классифицировать кривые четвёртого и пятого порядка. Кривые выше пятого порядка исследованы лишь по отдельным представителям (Савёлов А.А., 1960).
Однако уже в семнадцатом веке математики хорошо понимали, насколько алгебраических кривые высоких порядков могут иметь прихотливую и сложную форму. Великий математик и философ Готфрид Вильгельм Лейбниц был убежден в существовании гармонии мира и в том, что именно математика способна выразить гармонию вселенной в целом и гармонию телесных форм в частности. У Лейбница есть ссылка на слова амстердамского бургомистра Иоганна Гудде, который активно занимался геометрией, развивая методы Декарта: «Я думаю, что, говоря языком алгебры, если в одной формуле высшей характеристики выразить какое-либо существенное для универсума явление, то в такой формуле можно будет прочесть последующие, будущие явления во всех частях универсума и во все строго определенные времена, подобно тому, как господин Гудде был намерен в свое время начертить такую алгебраическую кривую, контур которой обозначил бы все черты определенного лица». Здесь мы встречаемся с первым указанием на роль алгебраических кривых при математическом моделировании сложных форм.
Мечта Гудде пока не осуществилась, но исследование кривых выше третьего порядка вполне возможно даже на уровне курсовых и дипломных работ. При этом можно двигаться по тем же направлениям, которые использовались при изучении кривых третьего порядка. Прежде всего, можно познакомиться с замечательными кривыми высших порядков, описание которых дано в книге (Савёлов А.А., 1960).
Познакомимся с эпициклоидами и гипоциклоидами. Начнём с эпициклоид. Эпициклоида представляет собой последовательность арок (рис. 1). Кроме того, эти арки могут располагаться на нескольких оборотах неподвижной окружности.
Задание 2. На основе теоремы из предыдущего задания написать программу построения эпициклоиды.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
pi = Math.Pi
'Число арок
n = 5
'Число оборотов, на которые опираются арки
m = 2
k1 = m/n
x0 = 300
y0 = 300
r0 = 100
GraphicsWindow.DrawEllipse(x0-r0,y0-r0,2*r0,2*r0)
r1 = r0*k1
r = r0 + 2*r1
GraphicsWindow.DrawEllipse(x0-r,y0-r,2*r,2*r)
For u1 = 0 To 2*pi*m Step 2*pi/5000
u2 = u1*(1 + 1/k1)
x1 = x0 + r* Math.Cos(u1)
y1 = y0 - r* Math.Sin(u1)
x2 = x0 + r* Math.Cos(u2)
y2 = y0 - r* Math.Sin(u2)
xm = x1 + (k1/(1 + 2*k1))*(x2 - x1)
ym = y1 + (k1/(1 + 2*k1))*(y2 - y1)
GraphicsWindow.SetPixel(xm,ym,"")
EndFor
Рис. 2. Кардиоида. Одна арка на одном обороте
Fig. 2. Cardioid. One arch on one turn
Рис. 3. Эпициклоида с семью арками на одном обороте
Fig. 3. Epicycloid with seven arches in one revolution
Рис. 4. Эпициклоида с пятью арками на двух оборотах
Fig. 4. Epicycloid with five arches in two rotations
Перейдём к гипоциклоидам. Гипоциклоиды возникают при качении подвижной окружности по внутреннему ободу неподвижной окружности. При этом перо находится непосредственно на ободе подвижной окружности.
Задание 5. На основе теоремы из предыдущего задания написать программу построения гипоциклоиды.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
pi = Math.Pi
'Число арок
n = 3
'Число оборотов, на которые опираются арки
m = 1
k1 = m/n
x0 = 300
y0 = 300
r0 = 250
GraphicsWindow.DrawEllipse(x0-r0,y0-r0,2*r0,2*r0)
r1 = r0*k1
r = r0 - 2*r1
q = 1 - 1/k1
GraphicsWindow.DrawEllipse(x0-r,y0-r,2*r,2*r)
For u1 = 0 To 2*pi*m Step 2*pi/5000
u2 = u1*q
x1 = x0 + r* Math.Cos(u1)
y1 = y0 - r* Math.Sin(u1)
x2 = x0 + r* Math.Cos(u2)
y2 = y0 - r* Math.Sin(u2)
xm = x1 + (1/(1 + q))*(x2 - x1)
ym = y1 + (1/(1 + q))*(y2 - y1)
GraphicsWindow.SetPixel(xm,ym,"")
EndFor
Рис. 7. Кривая Штейнера (три арки на одном обороте)
Fig. 7. Steiner curve (three arches in one rotation)
Рис. 8. Гипоциклоида с семью арками на одном обороте
Fig. 8. Hypocycloid with seven arches in one revolution
Рис. 9. Гипоциклоида с девятью арками на двух оборотах
Fig. 9. Hypocycloid with nine arches in two rotations
Задание 6. Написать обучающие или ознакомительные программы для изучения трохоид различных видов.
Рассмотрим в качестве ещё одного вида кривых выше третьего порядка овалы Декарта, имеющие три фокуса (Савёлов А.А., 1960). Один из вариантов их построения этих кривых, основанный на идеях крупного французского геометра Мишеля Шаля, жившего двумя веками позже Декарта, описан в (Степанов М.Е., 1996).
Кратко опишем механизм, с помощью которого может быть построен овал Декарта (рис. 10). Вообще использование механизмов для решения математических задач в духе Рене Декарта.
Рис. 10. Механизм для построения овала Декарта
Fig. 10. The mechanism for constructing the Descartes oval
Стержень РМ с точкой Р, закреплённой шарниром, может вращаться вокруг неё так, чтобы пересекаться сразу с двумя окружностями. Через точки пересечения стержня с окружностями и центры окружностей проходят прямые, которые тоже можно смоделировать рычагами с шарнирами в центрах окружностей. Точка пересечения этих прямых вычерчивает овал Декарта.
Задание 7. Написать программу для построения овала Декарта.
Решение. Написание программы требует предварительного проведения ряда вычислений. Результат её работы показан на рисунке 11.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
x0 = -100
y0 = 300
l1 = 300
r1 = 200
l2 = 100
r2 = 20
d = Math.SquareRoot(l1*l1 - r1*r1)
u = Math.ArcTan(r1/d)
For al = -(u-.001) To u-.001 Step 2*(u-.001)/5005
sb = l1* Math.Sin(al)/r1
cb = Math.SquareRoot(1 - sb*sb)
tb = sb/cb
bt = Math.ArcTan(tb)
sg = 12*Math.Sin(al)/r2
cg = Math.SquareRoot(1 - sg*sg)
tg = sg/cg
gm = Math.ArcTan(tg)
f1 = gm - al
f2 = al + bt
f3 = -(al + gm)
f4 = - (bt - al)
s = (l1 - l2)* Math.Tan(f2)/(Math.Tan(f1) + Math.Tan(f2))
h = s*Math.Tan(f1)
GraphicsWindow.SetPixel(x0 + l2 + s, y0 + h,"")
s = (l1 - l2)* Math.Tan(f4)/(Math.Tan(f1) + Math.Tan(f4))
h = s*Math.Tan(f1)
GraphicsWindow.SetPixel(x0 + l2 + s, y0 + h,"")
s = (l1 - l2)* Math.Tan(f2)/(Math.Tan(f3) + Math.Tan(f2))
h = s*Math.Tan(f3)
GraphicsWindow.SetPixel(x0 + l2 + s, y0 + h,"")
s = (l1 - l2)* Math.Tan(f4)/(Math.Tan(f3) + Math.Tan(f4))
h = s*Math.Tan(f3)
GraphicsWindow.SetPixel(x0 + l2 + s, y0 + h,"")
EndFor
Сравнив рисунки 5 и 11, можно прийти к выводу, что овал Декарта имеет нечто общее с улиткой Паскаля, поскольку он похож на разорванную улитку. Это обстоятельство может послужить темой для исследования.
Решение. Результат работы программы показан на рисунке 12.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
x0 = 300
y0 = 300
ed = 100
For x = -3 To 3 Step .002
For y = -3 To 3 Step .002
s1 = y + x*x*x
s2 = x*y - 1
z = s1*s2
xe = x0 + x*ed
ye = y0 - y*ed
If Math.Abs(z) < .01 Then
GraphicsWindow.FillEllipse(xe-3, ye-3, 6, 6)
EndIf
EndFor
EndFor
For c = -5 To 5 Step .5
For x = -3 To 3 Step .002
For y = -3 To 3 Step .002
s1 = y + x*x*x
s2 = x*y - 1
z = s1*s2 + c
xe = x0 + x*ed
ye = y0 - y*ed
If Math.Abs(z) < .01 Then
GraphicsWindow.SetPixel(xe, ye, "blake")
EndIf
EndFor
EndFor
EndFor
Задание 9. Перейти от схематического изображения лица (рис. 13), выполненного с помощью кругов, на изображение, очерченное двумя алгебраическими кривыми.
Решение. Исходный рисунок состоит из семи окружностей. Следовательно, программа строит две кривые четырнадцатого порядка. Результат показан на рис. 14.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
x0 = 300
y0 = 300
ed = 75
eps = 5
For c = -40 To -5 Step 35
For x = -4 To 4 Step .002
For y = -3 To 3 Step .002
s1 = x*x + .8*y*y - 4
s2 = (x-1)*(x-1) + (y-1/2)*(y-1/2) - 1/4
s3 = (x+1)*(x+1) + (y-1/2)*(y-1/2) - 1/4
s4 = x*x + y*y - 1/4
s5 = x*x + (y+1)*(y+1) - 1/4
s6 = (x-2.25)*(x-2.25) + y*y - 1/9
s7 = (x+2.25)*(x+2.25) + y*y - 1/9
z = s1*s2*s3*s4*s5*s6*s7 + c
xe = x0 + x*ed
ye = y0 - y*ed
If Math.Abs(z) < eps Then
GraphicsWindow.SetPixel(xe, ye, "blake")
EndIf
EndFor
EndFor
eps = 1
EndFor
Рис. 13. Схематическое изображение лица с помощью кругов
Fig. 13. Schematic representation of a face using circles
Рис. 14. Схематическое изображение лица с помощью алгебраических кривых
Fig. 14. Schematic representation of a face using algebraic curves
Результат можно рассматривать как математическую шутку. Но можно воспринять его как малюсенький шажок к выше упомянутой задаче Иоганна Гудде.
Далее обратимся к построению пучков алгебраических кривых. Это построение можно провести программами аналогичными тем программам, которые использовались в заданиях 26 и 27 статьи (Куланин, Степанов, 2026). Вместо девяти точек речь пойдёт о двадцати пяти точках. Пучок в целом мы строить не будем и ограничимся только отдельными кривыми, входящими в него.
Задание 10. Построить алгебраическую кривую пятого порядка на основе двух кривых, распадающихся на два семейства – пять горизонтальных прямых и пять вертикальных прямых.
GraphicsWindow.Width = 600
GraphicsWindow.Height = 600
x0 = 300
y0 = 300
ed = 100
lm1 = .25
lm2 = 1 - lm1
For x = -3 To 3 Step .002
For y = -3 To 3 Step .002
s1 = (x - 2)*(x - 1)*x*(x + 1)*(x + 2)
s2 = (y - 2)*(y - 1)*y*(y + 1)*(y+2)
z = lm1*s1 + lm2*s2
If Math.Abs(z) < .01 Then
xe = x0 + x*ed
ye = y0 - y*ed
GraphicsWindow.SetPixel(xe, ye, "blake")
EndIf
EndFor
EndFor
For x = -2 To 2
For y = -2 To 2
xe = x0 + x*ed
ye = y0 - y*ed
GraphicsWindow.FillEllipse(xe-5, ye-5, 10, 10)
EndFor
EndFor
Рис. 15. Кривая пятого порядка из задания 10 ( 𝜆1 = 0.25)
Fig. 15. Fifth-order curve from task 10 ( 𝜆1 = 0.25)
Рис. 16. Кривая пятого порядка из задания 10
Fig. 16. Fifth-order curve from task 10
Рис. 17. Кривая пятого порядка из задания 10
Fig. 17. Fifth-order curve from task 10
Наконец, можно рассматривать линейные системы алгебраических кривых любого порядка.
Решение. Программа очень компактна.
GraphicsWindow.Width = 620
GraphicsWindow.Height = 600
x0 = 300
y0 = 300
ed = 100
r1 = 1
r2 = 2.5
For lm1 = 0 To 1 Step .1
lm2 = 1 - lm1
For x = -3 To 3 Step .005
For y = -3 To 3 Step .005
xe = x0 + x*ed
ye = y0 - y*ed
z1 = (x*x + y*y - r1*r1)*(x*x + y*y - r1*r1)*(x*x + y*y - r1*r1) + 27*r1*r1*x*x*y*y
z2 = (x*x + y*y - r2*r2)
z = lm1*z1 + lm2*z2
If Math.Abs(z) < .1 Then
GraphicsWindow.SetPixel(xe, ye, "")
EndIf
EndFor
EndFor
EndFor
Заключение
В данной статье рассматриваются вопросы, связанные с углублённым изучением кривых выше третьего порядка. Особое внимание уделяется методам построения алгебраических кривых.
Обсуждение соответствующих вопросов может помочь молодым преподавателям при изучении различных разделов высшей математики. Кроме того, некоторые рассмотренные темы могут быть предложены в качестве тем курсовых и дипломных работ.




