Набор из 7 Python скриптов для автоматической генерации LaTeX документов с визуализацией фракталов используя библиотеку TikZ.
Ключевые особенности:
- ✅ Чистый Python 3 (без внешних зависимостей)
- ✅ Генерация готовых LaTeX документов
- ✅ Поддержка русского языка
- ✅ 7 различных типов фракталов
- ✅ Полностью автоматизированная генерация
| Файл | Размер | Фрактал | Метод |
|---|---|---|---|
gen_sierpinski.py |
2.4K | Треугольник Серпинского | L-система |
gen_koch.py |
2.2K | Снежинка Коха | L-система |
gen_pythagoras_tree.py |
3.6K | Дерево Пифагора | Рекурсия |
gen_mandelbrot.py |
4.5K | Множество Мандельброта | Итерация |
gen_julia.py |
4.6K | Множество Жюлиа | Итерация |
gen_landscape.py |
7.0K | Фрактальный ландшафт | Midpoint Displacement |
gen_lyapunov.py |
5.2K | Фрактал Ляпунова | Показатель Ляпунова |
| Файл | Размер | Назначение |
|---|---|---|
generate_all_fractals.py |
3.3K | Запуск всех генераторов |
compile_all.sh |
3.0K | Компиляция всех LaTeX файлов |
| Файл | Размер | Содержание |
|---|---|---|
README_FRACTALS.md |
9.5K | Руководство пользователя |
TESTING_RESULTS.md |
14K | Результаты тестирования |
| Файл | Размер | Статус |
|---|---|---|
sierpinski-triangle.tex |
1.0K | ✅ Генерируется |
koch-snowflake.tex |
935B | ✅ Генерируется |
pythagoras-tree-generated.tex |
342K | ✅ Генерируется |
mandelbrot-set.tex |
923K | ✅ Генерируется |
julia-set.tex |
904K | ✅ Генерируется |
fractal-landscape.tex |
38K | ✅ Генерируется |
lyapunov-fractal.tex |
235K | ✅ Генерируется |
Итого: 20 файлов, ~2.5 MB
Метод: L-система
Рекурсия: 8 уровней
Цвет: Оранжевый градиент
Размер: 1.0 KB
Время: < 0.1 сек
L-система правила:
F -> G-F-GG -> F+G+F
Аксиома: F, угол: 60°
Метод: L-система
Рекурсия: 4 уровня
Цвет: Цветовое колесо
Размер: 935 B
Время: < 0.1 сек
L-система правила:
F -> F-F++F-F
Аксиома: F++F++F (три кривых = снежинка)
Метод: Рекурсивные квадраты
Рекурсия: 10 уровней
Цвет: Зелено-коричневый градиент
Размер: 342 KB (~1000 квадратов)
Время: < 0.2 сек
Алгоритм:
- Каждый квадрат порождает 2 дочерних
- Угол ветвления: 30° (π/6)
- Масштаб: cos(30°) ≈ 0.866
Метод: z(n+1) = z² + c, z₀ = 0
Разрешение: 150×100 пикселей
Итерации: 80
Цвет: HSV по количеству итераций
Размер: 923 KB (~15000 пикселей)
Время: ~3-5 сек (генерация)
Область: Re ∈ [-2.0, 0.5], Im ∈ [-1.25, 1.25]
Условие убегания: |z| > 2
Метод: z(n+1) = z² + c (константа c)
Параметр: c = -0.7 + 0.27015i (Дендриты)
Разрешение: 120×120 пикселей
Итерации: 80
Цвет: HSV градиент
Размер: 904 KB (~14400 пикселей)
Время: ~2-3 сек
Другие интересные значения c:
-0.123 + 0.745i— Кролик Дуади-0.8 + 0.156i— Дракон0.285 + 0.01i— Спираль
Метод: Midpoint Displacement
Сетка: 33×33 точек (2⁵ + 1)
Roughness: 0.7
Seed: 12345
Проекция: Изометрическая
Размер: 38 KB (~256 полигонов)
Время: ~0.5 сек
Цветовая схема (по высоте):
| Высота | Цвет | Рельеф |
|---|---|---|
| < 0.3 | Синий | Вода |
| 0.3-0.5 | Жёлтый | Песок |
| 0.5-0.7 | Зелёный | Трава |
| 0.7-0.85 | Коричневый | Горы |
| > 0.85 | Белый | Снег |
Метод: Логистическое отображение
Формула: x(n+1) = r·x(n)·(1-x(n))
Последовательность: AABAB
Разрешение: 60×60 пикселей
Итерации: 50 warmup + 50 compute
Размер: 235 KB (~3600 пикселей)
Время: ~5-10 сек
Показатель Ляпунова: λ = lim(n→∞) (1/n) Σ ln|f'(x_i)|
Цветовая интерпретация:
- Синий: λ < 0 (устойчивость)
- Красный: λ > 0 (хаос)
- Черный: неустойчивые орбиты
cd /Users/x/comp_graph/TikZ
python3 generate_all_fractals.pyРезультат: 7 файлов .tex
python3 gen_sierpinski.py
python3 gen_koch.py
python3 gen_pythagoras_tree.py
# и т.д.Требования:
- pdflatex
- TikZ библиотека
- lindenmayersystems, shadings, babel, xcolor
Установка LaTeX (macOS):
brew install basictex
sudo tlmgr update --self
sudo tlmgr install pgf tikz-cd babel babel-russianКомпиляция:
# Все файлы
./compile_all.sh
# Отдельный файл
pdflatex sierpinski-triangle.tex| Фрактал | Генерация | .tex размер | PDF (оценка) | Компиляция |
|---|---|---|---|---|
| Sierpinski | 0.1 сек | 1 KB | ~20 KB | 5-10 сек |
| Koch | 0.1 сек | 1 KB | ~25 KB | 5-10 сек |
| Pythagoras | 0.2 сек | 342 KB | ~150 KB | 30-60 сек |
| Mandelbrot | 3-5 сек | 923 KB | ~500 KB | 2-5 мин |
| Julia | 2-3 сек | 904 KB | ~480 KB | 2-5 мин |
| Landscape | 0.5 сек | 38 KB | ~80 KB | 15-30 сек |
| Lyapunov | 5-10 сек | 235 KB | ~250 KB | 2-4 мин |
Общее время:
- Генерация всех .tex: ~15-20 сек
- Компиляция всех PDF: ~10-15 мин
- ✅ Python 3.6+
- ✅ Стандартная библиотека (
math,random) - ❌ Без numpy, matplotlib, PIL
-
L-системы (Lindenmayer systems)
- Треугольник Серпинского
- Снежинка Коха
-
Рекурсивная генерация
- Дерево Пифагора
-
Итеративные алгоритмы
- Множество Мандельброта (escape time)
- Множество Жюлиа (escape time)
-
Стохастические алгоритмы
- Фрактальный ландшафт (Diamond-Square)
-
Динамические системы
- Фрактал Ляпунова (логистическое отображение)
Для ускорения компиляции:
- Уменьшите разрешение пиксельных фракталов
- Уменьшите количество итераций
- Для ландшафта: уменьшите grid_size
Пример:
# gen_mandelbrot.py - быстрая версия
latex_content = generate_mandelbrot_latex(
width=100, # вместо 150
height=75, # вместо 100
max_iter=50 # вместо 80
)Sierpinski - больше рекурсии:
# В gen_sierpinski.py
latex_content = generate_sierpinski_latex(order=10, step='1pt', angle=60)Koch - другой размер:
# В gen_koch.py
latex_content = generate_koch_latex(order=5, step='3pt', angle=60)Julia - другой параметр c:
# В gen_julia.py
c_param = complex(-0.8, 0.156) # ДраконLandscape - более гладкий:
# В gen_landscape.py
latex_content = generate_landscape_latex(
grid_size=65, # больше точек
roughness=0.5, # меньше шероховатость
seed=54321, # другой seed
sample_step=1 # меньше шаг (больше полигонов)
)Lyapunov - другая последовательность:
# В gen_lyapunov.py
sequence = "BBBBBBAAAAAA" # Интересная последовательность- README_FRACTALS.md — Полное руководство пользователя
- TESTING_RESULTS.md — Детальные результаты тестирования
- PROJECT_SUMMARY.md — Этот файл (краткая сводка)
| Компонент | Статус |
|---|---|
| Python генераторы | ✅ 7/7 работают |
| LaTeX файлы | ✅ 7/7 генерируются |
| Документация | ✅ Готова |
| Тестирование | ✅ Пройдено |
| Компиляция PDF |
Общий статус: ✅ Проект готов к использованию
- Образование: Визуализация фрактальных структур для курсов математики и информатики
- Научные публикации: Иллюстрации для статей о фракталах, хаосе, динамических системах
- Документация: Примеры для LaTeX/TikZ руководств
- Искусство: Генеративное искусство и математическая графика
Для добавления нового фрактала:
- Создайте файл
gen_<название>.py - Реализуйте функции:
<название>_algorithm()— алгоритм вычисленияgenerate_<название>_tikz()— генерация TikZ кодаgenerate_<название>_latex()— полный LaTeX документ
- Добавьте в
generate_all_fractals.py:generators = [ # ... ("gen_<название>.py", "Описание"), ]
Всего Python кода: ~1200 строк
Среднее на генератор: ~170 строк
Документация: ~800 строк
Комментарии: ~30%
Языки:
- Python: 100% (генераторы)
- LaTeX/TikZ: 100% (выходные файлы)
- Bash: compile_all.sh
- Markdown: документация
Автор: Автоматическая генерация для проекта comp_graph Дата создания: 2025-10-05 Версия: 1.0 Лицензия: MIT (для образовательных целей)