Департамент образования г.Москвы Западное окружное Управление образования ГОУ Средняя общеобразовательная школа №887 УЧЕБНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ПРОЕКТ Роль компьютерного эксперимента в исследовании динамических систем на комплексной плоскости Исследователь: Костуров Георгий, 10Б Руководители проекта: Ермишина Надежда Федоровна, учитель математики Жилин Сергей Анатольевич, учитель информатики Москва, 2010-2011. 2 СОДЕРЖАНИЕ 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ................................................................................................................................ 3 1.1. ПРЕДМЕТ И ЦЕЛИ ИССЛЕДОВАНИЯ ............................................................................................................... 3 1.2. ЗАДАЧИ И МЕТОДЫ ИССЛЕДОВАНИЯ ............................................................................................................ 3 1.2.1. Задачи исследования................................................................................................................... 3 1.2.2. Методы и средства исследования ............................................................................................ 4 1.3. КОМПЛЕКСНЫЕ ЧИСЛА. ИСТОРИЯ, СВОЙСТВА, ОПЕРАЦИИ. .......................................................................... 4 1.4. ДИНАМИКА ЧИСЕЛ НА КОМПЛЕКСНОЙ .......................................................................................................... 9 ПЛОСКОСТИ. МНОЖЕСТВО МАНДЕЛЬБРОТА. ....................................................................................................... 9 2. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ................................................................................................................... 12 2.1. ПОРЯДОК И УСЛОВИЯ ПРОВЕДЕНИЯ ЭКСПЕРИМЕНТА 1 ............................................................................... 13 2.2. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 1 .................................................................................................................. 13 2.3. ПОРЯДОК И УСЛОВИЯ ПРОВЕДЕНИЯ ЭКСПЕРИМЕНТА 2 ............................................................................... 17 2.4. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 2 .................................................................................................................. 17 2.5. ПОРЯДОК И УСЛОВИЯ ПРОВЕДЕНИЯ ЭКСПЕРИМЕНТА 3 ............................................................................... 17 2.6. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 3 .................................................................................................................. 17 3. ПРОГРАММНЫЕ СРЕДСТВА ПРОЕКТА ....................................................................................................... 18 4. ИТОГИ И ВЫВОДЫ ........................................................................................................................................ 22 БИБЛИОГРАФИЯ ................................................................................................................................................ 23 3 1. Теоретическая часть 1.1. Предмет и цели исследования Идея настоящей работы возникла следующим образом. Понятия «эксперимент» и «математика» обычно не используют рядом. Математика изучает не явления природы, а логические построения. Но существуют математические задачи и объекты, где экспериментальные работы не только применяются, но являются очень полезным инструментом научного исследования. Эксперименты в математике являются не испытанием природы, а испытанием гипотез в условиях логики. Под экспериментальной математикой можно понимать те математические исследования, которые стали доступны при использовании вычислительной техники, методы математики, в которых используются элементы машинных вычислений. Экспериментальная математика – это получение математических суждений с помощью компьютерной техники и технологии. Понятно, что использование машинных вычислений имеет смысл только там, где ручной счет приводит к очень большим затратам времени. Т.е. там, где математика сталкивается с изучением объектов очень сложной структуры и с очень сложными моделями поведения. Одна из таких областей математики – это динамика чисел на комплексной плоскости (комплексная динамика). Исследования в этой области привели к открытию очень сложных математических объектов, которые обычно называют алгебраическими или динамическими фракталами (фрактальными множествами). 1.2. Задачи и методы исследования 1.2.1. Задачи исследования 1. Изучить возможности экспериментальных исследований математических объектов со сложной моделью поведения с помощью компьютерной технологии. Для примера объекта использовать множество Мандельброта и аналогичные фрактальные объекты с более высокой степенью функции преобразования. 2. Изучить динамические свойства чисел на комплексной плоскости – формы распределения количества чисел по скоростям «убегания» в бесконечность, зависимость скорости «убегания» от степени преобразования и расстояния от начала координат, возможность существования нижнего предела для скорости «убегания». 4 1.2.2. Методы и средства исследования Основным методом исследования выбирается метод вычислительного эксперимента. Для проведения исследования необходимо разработать программные средства. Программные средства проекта должны обеспечивать создание графической визуальной модели множества Мандельброта и множеств, которые порождаются преобразованием вида z→zn+c. Так же должны определяться границы множеств точек на комплексной плоскости, которые имеют одинаковую скорость «убегания» в бесконечность – одинаковое количество итераций до пересечения окружности R=2. 1.3. Комплексные числа. История, свойства, операции. Решение многих задач физики и техники приводит к квадратным уравнениям с отрицательным дискриминантом. Эти уравнения не имеют решения в области действительных чисел. Но решение многих таких задач имеет вполне определенный физический смысл. Значение величин, получающихся в результате решения указанных уравнений, назвали комплексными числами. Комплексные числа широко использовал отец русской авиации Н. Е. Жуковский (1847 – 1921) при разработке теории крыла, автором которой он является. Комплексные числа и функции от комплексного переменного находят применение во многих вопросах науки и техники. Древнегреческие математики считали, что реальный смысл имеют только натуральные числа. При этом в практических расчетах за две тысячи лет до нашей эры в Древнем Египте и Древнем Вавилоне уже применялись дроби. Следующим важным этапом в развитии понятия о числе было введение отрицательных чисел – это было сделано китайскими математиками за 2 века до нашей эры. Отрицательные числа применял в 3 веке нашей эры древнегреческий математик Диофант, знавший уже правила действий над ними, а в 7 веке нашей эры эти числа подробно изучили индийские ученые, которые сравнивали такие числа с долгом. С помощью отрицательных чисел можно было единым образом описывать изменение величин. Уже в 8 веке нашей эры было установлено, что квадратный корень из положительного числа имеет два значение - положительное и отрицательное, а из отрицательных чисел квадратные корни извлечь нельзя: нет такого числа х, чтобы х2 = -9. В 16 веке в связи с изучением кубических уравнений оказалось необходимым извлекать квадратные корни из отрицательных чисел. В формуле для решения кубических уравнений содержатся кубические и квадратные корни. Эта формула безотказно действует в случае, когда уравнение имеет один действительный корень (например, для уравнения х3+3х-4=0), а если оно имело 3 действительных корня (например, х37х+6=0),то под знаком квадратного корня оказывалось отрицательное число. Получалось, что путь к этим 3 корням уравнения ведет через невоз- 5 можную операцию извлечения квад- ратного корня из отрицательного числа. Чтобы объяснить получившийся парадокс, итальянский алгебраист Дж. Кардано в 1545 предложил ввести числа новой природы, которые допускают возможность такой операции. Кардано называл такие величины «чисто отрицательными» и даже «софистически отрицательными», и считал их бесполезными. С помощью таких чисел нельзя выразить ни результат измерения какойнибудь величины, ни изменение этой величины. Но уже в 1572 г. вышла книга итальянского алгебраиста Р. Бомбелли, в котором были установлены первые правила арифметических операций над такими числами, вплоть до извлечения из них кубических корней. Название «мнимые числа» ввел в 1637г. французский математик и философ Р. Декарт, а в 1777г. один из крупнейших математиков VIIIвека Х. Эйлер предложил использовать первую букву французского числа i = (мнимой единицы), этот символ вошел во всеобщее употребление благодаря К. Гауссу (1831г). В течениe 17 века продолжалось обсуждение арифметической природы мнимостей, возможности дать им геометрическое истолкование. Постепенно развивалась техника операций над комплексными числами. На рубеже 17-18 веков была построена общая теория корней n-й степени сначала из отрицательных, а впоследствии и из любых комплексных чисел. В конце 18 века французский математик Ж. Лагранж смог сказать, что математический анализ уже не затрудняют мнимые величины. С помощью комплексных чисел научились выражать решения линейных дифференциальных уравнений с постоянным коэффициентом. Я. Бернулли применил комплексные числа для вычисления интегралов. Хотя в течении 18 века с помощью комплексных чисел были решены многие вопросы, в том числе и прикладные задачи, связанные с картографией, гидродинамикой и т. д., однако еще не было строго логического обоснования теории этих чисел. Поэтому французский ученый П. Лаплас считал, что результаты, получаемые с помощью мнимых чисел, - только наведение, приобретающие характер настоящих истин лишь после подтверждения прямыми доказательствами. В конце 18- начале 19 веков было получено геометрическое истолкование комплексных чисел. Датчанин Г.Вессель, француз Ж. Арган и немец К. Гаусс независимо друг от друга предложили изображать комплексное число z=a+bi точкой М(а,b) на координатной плоскости. Позднее оказалось, что еще удобнее изображать число не самой точкой М, а вектором ОМ, идущим в эту точку из начала координат. При таком истолковании сложению и вычитанию комплексных чисел соответствуют эти же операции над векторами. В наше время комплексные числа принято записывать в виде: a+bi. Здесь a и b – действительные числа, а i – мнимая единица, 6 т.e. i = –1. Число a называется абсциссой, a комплексного числа. 2 b – ординатой Действительное число а может быть также записано в форме комплексного числа: a+ 0 i или a – 0 i. Например, записи 5 + 0 i и 5 – 0 i означают одно и то же число 5. Комплексное число 0+ bi называется чисто мнимым числом. Запись bi означает то же самое, что и 0+ bi. Два комплексных числа a+ bi и c+ di считаются равными, если a= c и b= d. В противном случае комплексные числа не равны. Два комплексных числа a+ bi и a – bi называются сопряжёнными комплексными числами. Сложение. Суммой комплексных чисел a+ bi и c+ di называется комплексное число ( a+ c ) + ( b+ d ) i. Таким образом, при сложении комплексных чисел отдельно складываются их абсциссы и ординаты. Это определение соответствует правилам действий с обычными многочленами. Вычитание. Разностью двух комплексных чисел a+ bi (уменьшаемое) и c+ di (вычитаемое) называется комплексное число ( a – c ) + ( b – d ) i. Таким образом, при вычитании двух комплексных чисел отдельно вычитаются их абсциссы и ординаты. Умножение. Произведением комплексных чисел a+ bi и c+ di называется комплексное число: ( ac – bd ) + ( ad + bc ) i . Это определение вытекает из двух требований: 1) числа a+ bi и c+ di должны перемножаться, как алгебраические двучлены, 2) число i обладает основным свойством: i 2 = –1. П р и м е р . ( a+ bi )( a – bi )= a 2 + b 2. Следовательно, произведение двух сопряжённых комплексных чисел равно действительному положительному числу. Деление. Разделить комплексное число a+ bi (делимое) на другое c+ di (делитель) - значит найти третье число e+ f i (частное), которое будучи умноженным на делитель c+ di, даёт в результате делимое a+ bi. Если делитель не равен нулю, деление всегда возможно. П р и м е р . Найти ( 8 + i ) : ( 2 – 3i ). Р е ш е н и е . Умножив её числитель и знаменатель на 2 + 3i и выполнив все преобразования, получим: 7 Геометрическое представление комплексных чисел. Действительные числа изображаются точками на числовой прямой: Здесь точка A означает число –3, точка B – число 2, и O – ноль. Комплексные числа изображаются точками на координатной плоскости. Выберем для этого прямоугольные (декартовы) координаты с одинаковыми масштабами на обеих осях. Тогда комплексное число a+ bi будет представлено точкой Р с абсциссой а и ординатой b (см. рис.). Эта система координат называется комплексной плоскостью. Модулем комплексного числа называется длина вектора OP, изображающего комплексное число на координатной (комплексной) плоскости. Модуль комплексного числа a+ bi обозначается | a+ bi | или буквой r и равен: Сопряжённые комплексные числа имеют одинаковый модуль. __ 8 Аргумент комплексного числа - это угол между осью OX и вектором OP, изображающим это комплексное число. Отсюда, tan = b / a . Тригонометрическая форма комплексного числа. Абсциссу a и ординату b комплексного числа a + bi можно выразить через его модуль r и аргумент : Операции с комплексными числами, представленными в тригонометрической форме. Это знаменитая формула Муавра. Здесь k - целое. Чтобы получить n различных значений корня n-ой степени из z необходимо задать n последовательных значений для k ( например, k = 0, 1, 2,…, n – 1 ) . 9 1.4. Динамика чисел на комплексной плоскости. Множество Мандельброта. В начале 20 века французский математик Пьер Фату (Pierre Fatou) работал в области аналитической динамики комплексных чисел. В 1905 году он впервые дал описание интересного точечного множества на комплексной плоскости. Фату изучал рекурсивные преобразования вида: Начиная с точки на комплексной плоскости, можно получить новые точки, последовательно применяя к ним эту формулу. Такая последовательность точек называется орбитой . Фату нашел, что орбита при этом преобразовании показывает достаточно сложное и интересное поведение. Существует бесконечное множество таких преобразований — своё для каждого значения . В те времена компьютеров ещё не было, и Фату, конечно, не мог построить орбиты всех точек плоскости. Основываясь на своих расчётах, он доказал, что орбита любой точки, лежащей на расстоянии больше 2 от начала координат, всегда уходит на бесконечность. Точки, для которых последовательность остается внутри этой окружности, образуют множество очень сложной формы. Фату никогда не видел изображений этого множества - необходимое количество вычислений совершенно невозможно провести вручную. Профессор Бенуа Мандельброт был первым, кто использовал для этого компьютерную технику и придумал название для математических объектов подобного типа – «фракталы». Фракталы были описаны Мандельбротом в 1975 году в его книге «Les Objets Fractals: Forme, Hasard et Dimension» («Фрактальные объекты: форма, случайность и размерность»). В этой книге Мандельброт впервые использовал термин «фрактал» для обозначения математического феномена, демонстрирующего столь непредсказуемое и удивительное поведение. Эти феномены рождались при использовании рекурсивного алгоритма для получения какой-либо кривой или множества. Множество Мандельброта, один из самых известных фрактальных объектов, впервые было построено визуально с применением ЭВМ весной 1980 г. в исследовательском центре фирмы IBM им. Томаса Дж. Уотсона. И хотя исследования подобных объектов начались ещё в прошлом веке, именно открытие этого множества и совершенствование технических 10 средств машинной графики в реша- ющей степени повлияли на развитие фрактальной геометрии и теории хаоса. Что же такое множество Мандельброта? Рассмотрим функцию комплексного переменного . Положим и рассмотрим последовательность , где для любого . Такая последовательность может быть ограниченной (т.е. может существовать такое R, что для любого ) либо "убегать в бесконечность" (т.е. для любого R>0 существует ). Множество Мандельброта можно определить как множество комплексных чисел (с), для которых орбита точки 0 является ограниченной, т.е. не уходит в бесконечность. Поскольку уже вторая точка последовательности совпадает с точкой (с), то можно сказать еще проще: множество Мандельброта – это все точки комплексной плоскости с ограниченной орбитой. К сожалению, не известно аналитического выражения, которое позволяло бы по данному c определить, принадлежит ли оно множеству Мандельброта или нет. Поэтому для построения множества используют компьютерный эксперимент: просматривают с некоторым шагом множество точек на комплексной плоскости, для каждой точки проводят определённое число итераций (находят определённое число членов последовательности) и смотрят за её "поведением". Доказано, что множество Мандельброта размещается в круге радиуса r=2 с центром в начале координат. Таким образом, если на некотором шаге модуль очередного члена последовательности превышает 2, можно сразу сделать вывод, что точка, соответствующая c, определяющему данную последовательность, не принадлежит множеству Мандельброта. Строго математически, изображения множеств Мандельброта должны быть чёрно-белыми. Точка либо попадает внутрь множества, либо нет. Несмотря на это, с помощью компьютера можно строить и цветные изображения. 11 Самым распространённым спосо- бом является раскрашивание точек снаружи множества в цвет, равный количеству итераций, за которое точка уходит в «бесконечность» или, с точки зрения программы, на определённое расстояние от нуля. Порядок определения, попадает ли точка внутрь множества или нет следующий: на каждой итерации для вычисляется значение модуля , которое затем сравнивается с «границей бесконечности». Здесь важно обратить внимание, что уже на данном этапе можно ввести определённую оптимизацию вычислений, если сравнивать не время обработки. ,а , что значительно снизит Значение , фактически, обозначает скорость движения в бесконечность. Итак, мы получили алгоритм определения, лежит ли точка снаружи множества Мандельброта — это происходит, если она удаляется больше чем на 2 от начала координат. Каким же образом определить, что она лежит внутри множества? Это не так просто и для этого есть много способов. Самое простое решение — это ограничить максимальное количество итераций. Если при достижении максимального количества повторений рекурсии, точка не вышла за границу окружности R=2, то можно считать, что она находится внутри множества. 12 2. Экспериментальная часть Для изучения динамических свойств комплексных чисел были разработаны программные средства (язык и среда программирования – Delphi). С помощью программы были построены модели точечных множеств на комплексной плоскости для различных степеней функции преобразования. К одному множеству точек были отнесены точки с одинаковой скоростью выхода последовательности zn+c в бесконечность. При достижении критического количества итераций (от 600 и выше) считается, что точка не выходит из круга и является элементом множества Мандельброта соответствующей степени. Если точка «уходит» в бесконечность, то измеряется количество итераций до выхода за границу окружности и выбирается цвет для изображения точки на графической плоскости. Точки с различными скоростями выхода окрашены в различные оттенки серого цвета. 13 2.1. Порядок и условия проведения эксперимента 1 Цель эксперимента: Исследовать свойства распределения количества точек комплексной плоскости по скоростям убегания в бесконечность. Исследовать характер поведения границ между множествами точек с различными скоростями убегания. 2.2. Результаты эксперимента 1 1) Изучение графических моделей и числовых данных показало, что за пределами множества Мандельброта наблюдается обратная зависимость между количеством итераций цикла и количеством точек, которые выходят за границу окружности R=2 после данного количества итераций. Чем ближе к множеству Мандельброта, тем больше падает количество точек, уходящих в бесконечность с данной скоростью. 2) Границы между множествами точек с различными скоростями убегания явно не являются фрактальными. При этом «гладкость» линий увеличивается по мере удаления множества от множества Мандельброта. С возрастанием степени функции фигура множества стремится к форме круга с фрактальной гранью. 14 Параметры распределения скоростей и визуальные модели точечных множеств на комплексной плоскости с постоянной скоростью «убегания» для функции преобразования 2 степени. 15 Параметры распределения скоростей и визуальные модели точечных множеств на комплексной плоскости с постоянной скоростью «убегания» для функции преобразования 3 степени. 16 Параметры распределения скоростей и визуальные модели точечных множеств на комплексной плоскости с постоянной скоростью «убегания» для функции преобразования 4 степени. 17 2.3. Порядок и условия проведения эксперимента 2 Цель эксперимента: Исследовать зависимость скорости убегания точки от степени функции преобразования и расстояния от начала координат. 2.4. Результаты эксперимента 2 1) В зависимости от степени функции меняется «насыщенность» скоростей. Чем больше степень, тем больше «насыщенность» на первых скоростях и тем меньше на высоких скоростях. Например у функции 2 степени в промежутке от 500 до 1000 количество точек ≈ 50, а у 10 степени ≈ 10. 2) С возрастанием степени увеличивается количество точек «убегающих» на 1 скорости и уменьшается количество остальных точек. 3) Чем ближе к границе множества Мандельброта, тем больше нужно операций для ухода в бесконечность. 2.5. Порядок и условия проведения эксперимента 3 Цель эксперимента: Исследовать вопрос о существовании наименьшей скорости убегания точки, т.е. наибольшего количества итераций, после достижения которого любая точка будет принадлежать множеству Мандельброта. 2.6. Результаты эксперимента 3 Точно говорить о существовании или отсутствии минимальной скорости убегания невозможно. При этом очевидно, что количество точек, убегающих с малыми скоростями уменьшается и при определенных значениях скорости становится равным нулю на всем интервале значений, которые используются для наблюдения. Например, при количестве наблюдаемых итераций до 250000 и степени функции 1000 не наблюдается ни одной точки, которая уходит в бесконечность после 388 итераций цикла. Интересно, что эта «критическая» скорость монотонно уменьшается для всех степеней функции от 2 до 9, потом увеличивается до 10140 для десятой степени, после чего снова монотонно уменьшается. Функция преобразования Z2+C Z3+C Z4+C Z5+C Z6+C Z7+C Z8+C Z9+C Z10+C Z500+C Z1000+C Нижняя граница скорости убегания точки в бесконечность для наблюдаемого количества операций (до 250000) 78028 67485 12542 9858 7090 6056 5912 2189 10140 451 388 18 3. Программные средства проекта //Исследовательская проектная работа. //Роль компьютерного эксперимента //в исследовании динамических систем //на комплексной плоскости unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls, jpeg; type //Форма TForm1 = class(TForm) TabControl1: TTabControl; Image1: TImage; Button1: TButton; Button2: TButton; Button3: TButton; ListBox1: TListBox; ProgressBar1: TProgressBar; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure TabControl1Change(Sender: TObject); procedure ShowMandelbrot(Sender: TObject); procedure Znc(Sender: TObject); procedure Trigonom(x,y: real; var argz,modz: real); procedure Power(n: integer; argz,modz: real; var x1,y1: real); end; const //Максимальное количество повторений цикла //После MAX считаем, что точка не уходит //на бесконечность MAX = 666; var //Форма Form1: TForm1; //Степень числа stz: integer; //Масштаб изображения Mash: real; implementation {$R *.dfm} //Построить рисунок множества Мандельброта степени stz procedure TForm1.Znc(Sender: TObject); var x, y, x1, y1, cx, cy: real; i, ix, iy: integer; modz, argz, p: real; m, n, k: integer; v, v2: string; W, W2, H, H2: integer; a: array [0..MAX] of integer; begin W := Image1.Width; H := Image1.Height; W2 := W div 2; H2 := H div 2; m:=W*H; n:=0; 19 for i :=0 to MAX do a[i] := 0; k := 0; //Основной цикл для построения рисунка множества for ix := 0 to W-1 do for iy := 0 to H-1 do begin inc(n); ProgressBar1.Position:=n*100 div m; cx := Mash*(ix-W2); cy := Mash*(H2-iy); x := cx; y := cy; i := 0; //Проверяем - убегают точки или нет repeat //Проверяем выход за границу окружности R = 2 if x*x + y*y > 4 then break; //Вычисляем степень комплексного числа (x,y) Trigonom(x,y,argz,modz); Power(stz,argz,modz,x1,y1); //Прибавляем число (cx,cy), получаем новую точку x1 := x1 + cx; y1 := y1 + cy; //Меняем значения для следующей итерации x := x1; y := y1; inc(i) until i>MAX; //Теперь надо проверить результаты if i>MAX then //Точка принадлежит множеству Мандельброта //цвет этой точки - черный Image1.Canvas.Pixels[ix,iy]:=RGB(0,0,0) else begin //Точка не принадлежит множеству Мандельброта //цвет этой точки зависит от скорости убегания //Чем больше скорость, тем ближе к белому case i of //Точка на расстоянии больше 2 от начала координат 0: Image1.Canvas.Pixels[ix,iy]:=RGB(66,0,66); //Точки с большой скоростью убегания (0<i<8) 1: Image1.Canvas.Pixels[ix,iy]:=RGB(255,255,255); 2: Image1.Canvas.Pixels[ix,iy]:=RGB(220,220,220); 3: Image1.Canvas.Pixels[ix,iy]:=RGB(200,200,200); 4: Image1.Canvas.Pixels[ix,iy]:=RGB(180,180,180); 5: Image1.Canvas.Pixels[ix,iy]:=RGB(160,160,160); 6: Image1.Canvas.Pixels[ix,iy]:=RGB(140,140,140); 7: Image1.Canvas.Pixels[ix,iy]:=RGB(120,120,120); //Точки с малой скоростью убегания (i>7) 8..100: Image1.Canvas.Pixels[ix,iy]:=RGB(100,100,100); 101..1000: Image1.Canvas.Pixels[ix,iy]:=RGB(255,0,0); 1001..10000: Image1.Canvas.Pixels[ix,iy]:=RGB(255,255,0); end; //Посчитать точку "убегания" inc(a[i]); inc(k) end end; //Определить данные о распределении скоростей: //Количество точек с данной скоростью убегания //От большей скорости - к меньшей скорости ListBox1.Clear; 20 if k > 0 then for i := 1 to MAX do begin v := IntToStr(a[i]); p := a[i]*100/k; p := round(p*100000)/100000; v2 := FloatToStr(p); v := v + '; ' + v2 + '%'; v2 := IntToStr(i); v := v2 + ' -> ' + v; ListBox1.AddItem(v,ListBox1); end; //Нарисовать оси координат Image1.Canvas.Pen.Color := RGB(255,0,0); Image1.Canvas.MoveTo(W2, 0); Image1.Canvas.LineTo(W2, H); Image1.Canvas.MoveTo(0, H2); Image1.Canvas.LineTo(W, H2) end; //Определить аргумент и модуль комплексного числа procedure TForm1.Trigonom(x,y: real; var argz,modz: real); begin argz := 0; if x <> 0 then argz := arctan(y/x) else begin if y > 0 then argz := pi/2; if y < 0 then argz := -pi/2 end; if x < 0 then argz := argz + pi; modz := sqrt(x*x+y*y) end; //Определить степень комплексного числа procedure TForm1.Power(n: integer; argz,modz: real; var x1,y1: real); var an,mn: real; i: integer; begin an:=argz * n; mn := 1; for i := 1 to n do mn := mn * modz; y1 := mn * sin(an); x1 := mn * cos(an) end; //Создать рисунок множества procedure TForm1.TabControl1Change(Sender: TObject); begin Mash := 0.0058; ShowMandelbrot(Form1) end; //Создать рисунок множества procedure TForm1.Button1Click(Sender: TObject); begin Mash := 0.0058; ShowMandelbrot(Form1) end; //Увеличить масштаб изображения //Создать рисунок множества 21 procedure TForm1.Button3Click(Sender: TObject); begin if Mash > 0 then begin Mash := 0.0019; ShowMandelbrot(Form1) end; end; //Создать рисунок множества procedure TForm1.ShowMandelbrot(Sender: TObject); begin //Определить нужную степень числа case TabControl1.TabIndex of 0: stz:=2; 1: stz:=3; 2: stz:=4; 3: stz:=5; 4: stz:=6; 5: stz:=7; 6: stz:=8; 7: stz:=9; 8: stz:=10 end; //Вызвать процедуру для рисования множества Znc(Form1); Image1.Show end; //Сохранить рисунок множества в формате jpeg procedure TForm1.Button2Click(Sender: TObject); var j: TJPEGImage; begin if Mash > 0 then begin j:=TJPEGImage.Create; try with j do begin ListBox1.Clear; ListBox1.AddItem('Сохраняется...',ListBox1); Assign(Image1.Picture.Bitmap); //Файл сохраняется SaveToFile('dsk.jpg'); end finally //Операции после сохранения j.Free; ListBox1.Clear; ListBox1.AddItem('Сохранен.',ListBox1); end end end; begin Mash := 0 end. //конец модуля 22 4. Итоги и выводы 1. При исследовании очень сложных объектов со сложным поведением компьютерный эксперимент позволяет определить свойства объекта, которые трудно или невозможно получить с помощью только логических рассуждений. Визуальные модели, полученные с помощью компьютера, могут также служить дополнительным средством для иллюстрации и ознакомления с той или иной математической структурой. 2. Для комплексных чисел за пределами множества Мандельброта наблюдается обратная зависимость между количеством итераций цикла и количеством точек, которые выходят за границу окружности R=2 после данного количества итераций. Чем ближе к множеству Мандельброта, тем больше падает количество точек, уходящих в бесконечность с данной скоростью. 3. Границы между множествами точек с различными скоростями убегания явно не являются фрактальными. При этом «гладкость» линий увеличивается по мере удаления множества от множества Мандельброта. С возрастанием степени функции фигура множества стремится к форме круга с фрактальной гранью. 4. В зависимости от степени функции меняется «насыщенность» скоростей. Чем больше степень, тем больше «насыщенность» на первых скоростях и тем меньше на высоких скоростях. Например у функции 2 степени в промежутке от 500 до 1000 количество точек ≈ 50, а у 10 степени ≈ 10. С возрастанием степени увеличивается количество точек «убегающих» на 1 скорости и уменьшается количество остальных точек. Чем ближе к границе множества Мандельброта, тем больше нужно операций для ухода в бесконечность. 5. Точно говорить о существовании или отсутствии минимальной скорости убегания невозможно. При этом очевидно, что количество точек, убегающих с малыми скоростями уменьшается и при определенных значениях скорости становится равным нулю на всем интервале значений, которые используются для наблюдения. Например, при количестве наблюдаемых итераций до 250000 и степени функции 1000 не наблюдается ни одной точки, которая уходит в бесконечность после 388 итераций цикла. Интересно, что эта «критическая» скорость монотонно уменьшается для всех степеней функции от 2 до 9, потом увеличивается до 10140 для десятой степени, после чего снова монотонно уменьшается. 23 Библиография 1. Арнольд В.И. Экспериментальная математика. — М.: Фазис, 2005. 2. Малаховский В.С. Числа знакомые и незнакомые. Учебное пособие. – Калининград: ФГУИПП «Янтарный сказ», 2005. 3. Мандельброт Б. Фрактальная геометрия природы. — M.: Институт компьютерных исследований, 2002.