Проект по математике "Фракталы"
В индивидуальной исследовательской работе и проекте по математике на тему "Фракталы" автор расширил свои знания о фракталах, рассмотрел различные виды фракталов, а также узнал где возможно применение этих удивительных фракталов.
В процессе проведения работы над исследовательским проектом по математике на тему «Фракталы» обучающийся 10 класса изучил способы описания и отображения фракталов с помощью программного кода, а также написал программу и сделал с её помощью несколько изображений.
Подробнее о работе:
В индивидуальном исследовательском проекте по математике «Фракталы» автор сделал выводы о том, что на уроках геометрии в школе мы привыкли иметь дело с регулярными фигурами: кругами, треугольниками, квадратами, и может показаться, что это всё, на что способна математика. Но на самом деле это куда более красивая наука, чем думают многие, просто эта красота прячется за сложными с виду формулами и не всякий сразу её разглядит. Изображение воспринять гораздо легче, поэтому фракталы могут помочь заинтересоваться в математике людям, далёким от неё.
Оглавление
Введение
I. Теоретическая часть
1. Определение фрактала
2. Виды фракталов
3. История и применение
II. Практическая часть
1. Способы изображения фракталов
2. Ход работы
Заключение
Источники
Введение
Геометрию часто называют холодной и сухой. Одна из причин заключается в ее неспособности описать все то, что окружает нас: форму облака, горы, дерева или русла реки. В природе все формы сложнее, чем идеально ровные прямые, плоскости, шары и кубы. Но оказывается, в математике есть и раздел, способный описать такие сложные формы, – фрактальная геометрия.
Актуальность данной работы:
Фракталы являются важной частью современной науки и техники, однако многим они кажутся чем-то очень сложным и непонятным.
Объект исследования: Геометрические абстракции.
Предмет исследования: Форма и строение исследуемых предметов и явлений.
Цель исследования: Создание компьютерной программы для описания и изображения фракталов.
Поставленная цель предусматривает решение следующих задач:
- Изучить информацию о фракталах.
- Рассмотреть различные виды фракталов.
- Узнать где возможно применение фракталов.
- Изучить способы описания и отображения фракталов с помощью программного кода.
- Написать программу и сделать с её помощью несколько изображений.
Методы исследования: теоретический, практический, анализ, обобщение.
Практическая и теоретическая значимость: Использование приобретенных знаний для работы с компьютерной графикой, для описания различных объектов с помощью фракталов. Использование материала на уроках и факультативных занятиях по математике и информатике.
Продукт исследования: программа, изображающая фракталы.
I. Теоретическая часть
1. Определение фрактала
Фракталом могут называть объект, обладающий хотя бы одним из 3 свойств:
- Самоподобие
- При увеличении масштаба сложность структуры остаётся неизменной
- Дробная метрическая размерность
Чаще всего, говоря о фракталах, имеют ввиду самоподобные фигуры. Такие фигуры полностью или частично совпадают с частью себя самого. Например, треугольник Серпинского состоит из 3 таких же треугольников меньшего размера (рис.1)
Не все фракталы обладают самоподобием. Например, береговая линия является фракталом, но не обязательно содержит в себе свои уменьшенные копии. Если взять несколько карт местности с разными масштабами, то можно увидеть, что с его увеличением нам становится видно всё больше неровностей рельефа и береговая линия никогда не станет прямой [1].
В математике под фракталом понимается множество точек в евклидовом пространстве, имеющие дробную метрическую размерность или метрическую размерность, отличную от топологической.
2. Виды фракталов
Фракталы можно разделить на виды:
- Геометрические – строятся на основе исходной фигуры (линии, многоугольника или многогранника) путем ее дробления и выполнения различных преобразований полученных фрагментов. (рис.2)
- Алгебраические – строятся на основе алгебраических формул. (рис.3)
- Стохастические – получаются, если в итерационном процессе случайным образом изменять какие-либо параметры.
3. История и применение
Термин «фрактал» введён Бенуа Мандельбротом в 1975 году и получил широкую известность с выходом в 1977 году его книги «Фрактальная геометрия природы». Широкое распространение фракталы получили благодаря развитию компьютерных технологий.
В естественных науках фракталы используются для моделирования сложных процессов. В радиотехнике применяются фрактальные антенны. В информатике с помощью фракталов сжимают изображения, а в компьютерной графике генерируют изображения объектов природы: деревьев, гор, облаков, рек и т.д.
II. Практическая часть
1. Способы изображения фракталов
Мы нашли 2 способа изобразить геометрический фрактал при помощи компьютера:
- Системы итерирующих функций
- L-системы
Система итерирующих функций - это совокупность сжимающих аффинных преобразований. Аффинные преобразования включают в себя масштабирование, поворот и параллельный перенос. Аффинное преобразование считается сжимающим, если коэффициент масштабирования меньше единицы.
L-система состоит из аксиомы (начальной строки), алфавита и правил. В правилах указывается каким символом или последовательностью символов нужно заменять каждый из символов алфавита. Символы исходной строки заменяются согласно правилам и получается новая строка, далее операция повторяется с новой строкой в качестве исходной.
Для своей работы мы выбрали L-системы на языке Python. Также мы использовали библиотеку turtle, которая позволяет изобразить фрактал, используя строку, сгенерированную L-системой.
2. Ход работы
Для начала мы написали простой код, изображающий только снежинку Коха (рис.4)
Далее мы немного изменили код, чтобы нарисовать более сложный фрактал – треугольник Серпинского (рис. 5).
Теперь сделаем код более универсальным. L-система определяется аксиомой и правилами, ещё для построения необходимо указать количество итераций, угол поворота, начальные координаты и длину шага. Мы дали возможность пользователю указывать вид фрактала и количество итераций, остальное программа определяет сама исходя из вида фрактала. Также мы добавили несколько видов фракталов. (рис.6-8) Полный код находится в приложении 1.
Заключение
На уроках геометрии в школе мы привыкли иметь дело с регулярными фигурами: кругами, треугольниками, квадратами, и может показаться, что это всё, на что способна математика. Но на самом деле это куда более красивая наука, чем думают многие, просто эта красота прячется за сложными с виду формулами и не всякий сразу её разглядит.
Изображение воспринять гораздо легче, поэтому фракталы могут помочь заинтересоваться в математике людям, далёким от неё. Разрабатанная в рамках исследовательского проекта по математике на тему "Фракталы" наша программа создаёт такие изображения и может быть использована с целью получить базовые знания о строении фракталов. Мы выполнили все поставленные задачи и достигли цели.
Источники
- Абачиев С. К. О треугольнике Паскаля, простых делителях и фрактальных структурах // В мире науки, 1989, № 9.
Приложение 1
import turtle
print("[номер]: [название фрактала] (рекомендованное кол-во итераций)")
print("1: Снежинка Коха (4)")
print("2: Треугольник Серпинского (7)")
print("3: Кривая дракона (16)")
print("4: Кристалл (5)")
print("5: 32-сегментная кривая (3)")
print("6: Фрактал Вичека (4)")
Type = int(input("Номер фрактала: "))
itr = int(input("Количество итераций: "))
if Type == 1:
axiom = "F--F--F"
angle = 60
rules = {"+":"+", "-":"-", "F":"F+F--F+F"}
x = -75; y = -150
step = 5
elif Type == 2:
axiom = "F"
angle = 120
rules = {"+":"+", "-":"-", "F":"F-G+F+G-F", "G":"GG"}
x = -300; y = -200
step = 5
elif Type == 3:
axiom = "FX"
rules = {"+":"+", "-":"-", "F":"F", "X":"X+YF+", "Y":"-FX-Y"}
angle = 90
x = -500; y = 0
step = 1
elif Type == 4:
axiom = "F+F+F+F"
rules = {"+":"+", "-":"-", "F":"FF+F++F+F"}
angle = 90
x = -300; y = 200
step = 2
elif Type == 5:
axiom = "F+F+F+F"
rules = {"+":"+", "-":"-", "F":"-F+F-F-F+F+FF-F+F+FF+F-F-FF+FF-FF+F+F-FF-F-F+FF-F-F+F+F-F+"}
angle = 90
x = -300; y = 170
step = 0.7
elif Type == 6:
axiom = "F-F-F-F"
rules = {"+":"+", "-":"-", "F":"F-F+F+F-F"}
angle = 90
x = -200; y = -100
step = 5
turtle.hideturtle()
turtle.tracer(0)
turtle.penup()
turtle.setposition(x, y)
turtle.pendown()
turtle.pensize(2)
S = axiom; newS = ""
for i in range (itr):
for c in S:
newS += rules[c]
S = newS
newS = ""
for c in S:
if c == "+":
turtle.right(angle)
elif c == "-":
turtle.left(angle)
else:
turtle.forward(step)
turtle.update()
turtle.mainloop()