<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nbvehbectw</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nbvehbectw"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Nbvehbectw"/>
	<updated>2026-10-23T17:19:01Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nbvehbectw/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BD%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0&amp;diff=23306</id>
		<title>Участник:Nbvehbectw/Алгоритм нахождения точек множества Мандельброта</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Nbvehbectw/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BD%D0%B0%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%B5%D0%BA_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0&amp;diff=23306"/>
		<updated>2017-10-22T16:38:35Z</updated>

		<summary type="html">&lt;p&gt;Nbvehbectw: Новая страница: «Жалеев Тимур, группа 404. == Свойства и структура алгоритмов == File:Mandelset hires.png|400px|thumb|right|Множ…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Жалеев Тимур, группа 404.&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
[[File:Mandelset hires.png|400px|thumb|right|Множество Мандельброта]]&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
Множество Мандельброта - множество точек &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; комплексной плоскости таких, что последовательность &amp;lt;math&amp;gt;z_{n+1} = z_n^2 + c, z_0 = 0&amp;lt;/math&amp;gt; ограничена&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;[https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0 Множество Мандельброта]&amp;lt;/ref&amp;gt;. Для изображения области множества выбирается некоторое количество итераций (обычно зависящее от размеров изображаемой области) и так называемый &amp;quot;радиус выхода&amp;quot;, и для соответствующих &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; из области вычисляются элементы данной последовательности. Если на всех итерациях модуль элемента остается не больше радиуса выхода, то считается, что последовательность ограничена, и данная точка принадлежит множеству. В противном случае последовательность считается уходящей в бесконечность, а точка - не принадлежащей множеству. Можно доказать, что если для какого-либо элемента последовательности выполняется &amp;lt;math&amp;gt;\left| z_n \right| &amp;gt; 2&amp;lt;/math&amp;gt;, то последовательность не ограничена&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;, то есть в качестве радиуса выхода можно взять число 2.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Для изображения прямоугольной области множества Мандельброта можно выбрать следующие параметры: координаты центра изображения &amp;lt;math&amp;gt;(\overline{x}, \overline{y})&amp;lt;/math&amp;gt;, ширина &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; и высота &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; изображения и расстояние между соседними пикселями &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Тогда для каждого пикселя с координатами &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по горизонтали и &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; по вертикали вычисляется число &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; по следующим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{Re} \, c = \overline{x} + \left(i - \frac{W}{2}\right)p&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\operatorname{Im} \, c = \overline{y} - \left(j - \frac{H}{2}\right)p&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для полученных &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; определяется их принадлежность множеству по указанному выше алгоритму с количеством итераций &amp;lt;math&amp;gt;O \left( \frac{1}{\sqrt p} \right)&amp;lt;/math&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;[https://github.com/cslarsen/mandelbrot-js Mandelbrot.js by cslarsen]&amp;lt;/ref&amp;gt; и радиусом выхода 2. В зависимости от того, определяется точка принадлежащей или не принадлежащей множеству, соответствующий ей пиксель окрашивается одним или другим цветом. &lt;br /&gt;
&lt;br /&gt;
Также существуют различные способы построить изображение более наглядно с использованием цвета. Самый простой - окрашивать точки множества черным цветом, а остальные точки окрашивать различными цветами в зависимости от того, сколько потребовалось итераций &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, чтобы элемент последовательности &amp;lt;math&amp;gt;z_{n+1} = z_n^2 + c, z_0 = 0&amp;lt;/math&amp;gt; превысил радиус выхода. Однако этот метод тоже дает изображение с резкими границами: число итераций - это всегда целое число, и образуются области, окрашенные одним цветом. Более гладкий способ окрашивания точек вне множества использует следующую формулу: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu = n + 1 - \frac{\ln(\ln \left| z_n \right|)}{\ln 2}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - число итераций, потребовавшееся для для превышения элементом последовательности радиуса выхода, а &amp;lt;math&amp;gt;z_n&amp;lt;/math&amp;gt; - этот элемент&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;[http://linas.org/art-gallery/escape/smooth.html Smooth Shading for the Mandelbrot Exterior]&amp;lt;/ref&amp;gt;. Для понимания сути этой формулы можно использовать описание, приведенное Earl L. Hinrichs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;«Игнорируя &amp;lt;math&amp;gt;+ c&amp;lt;/math&amp;gt; в обычной формуле, получим, что точки последовательности растут как &amp;lt;math&amp;gt;z := z^2&amp;lt;/math&amp;gt;. То есть у нас есть последовательность &amp;lt;math&amp;gt;z, z^2, z^4, z^8, z^{16}&amp;lt;/math&amp;gt;, и т.д. Подсчет числа итераций означает присвоение целого числа этим значениям. Если игнорировать множитель, логарифм этой последовательности получится: &amp;lt;math&amp;gt;1, 2, 4, 8, 16&amp;lt;/math&amp;gt;». Логарифм логарифма: &amp;lt;math&amp;gt;0, 1, 2, 3, 4&amp;lt;/math&amp;gt;, что соответствует целому значению из подсчета итераций. Таким образом, подходящим обобщением дискретного подсчета итераций на непрерывную функцию будет двойной логарифм»&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При использовании этой формулы число &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; получается примерно равным &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, однако меняющимся практически непрерывно по &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Также заметим, что определение принадлежности точки ко множеству не зависит от других точек, то есть может выполняться параллельно. Также параллельно могут строиться сразу несколько изображений, например, с одним центром и убывающим расстоянием между пикселями для получения наглядной анимации &amp;quot;погружения&amp;quot; во множество Мандельброта.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
{{примечания}}&lt;/div&gt;</summary>
		<author><name>Nbvehbectw</name></author>
	</entry>
</feed>