Форум программистов, компьютерный форум CyberForum.ru

Моделирование фрактала в координатной плоскости - C++

Восстановить пароль Регистрация
 
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
06.05.2012, 15:10     Моделирование фрактала в координатной плоскости #1
Требуется написать программу, которая будет строить множество Мандельброта на координатной плоскости и выполнять некоторые функции. Цитирую текст задания:
--------------------------------------------------------------------------------------------------------
Отображение f(z)=z^4+c, где c комплексная постоянная. Последовательность z(n) определим соотношением z(n+1)=f(z(n)) и начальным условием z(0). Последовательность z(n) зависит от c. Множеством Мандельброта M отображения f(z) назовём множество таких значений параметра c (комплексных чисел), что zn не стремится к бесконечности. Обозначим через M_N(R) множество таких комплексных чисел c? xnj d gjcktljdfntkmyjcnb я(т) gthdst Т xktyjd eljdktndjhz.n cjjnyjityb. |z(k)|<R (k=0,1,...,N). При подходящем выборе R и достаточно большом N vножества M_N(R) и M будут очень похожи.
1) Напишите программу, которая при заданных значениях параметров z(0) (например, z(0)=0 или другое комплексное число) Необходимо перебрать с небольшим шагом всевозможные комплексные значения c, лежащие в некотором квадрате -a<Rec<a, -a<Imc<a (a - параметр). Для каждой точки c необходимо проверить, что первые N элементов последовательности z(n) тоже лежат внутри круга радиуса R с центром в нуле. Если это условие выполняется, то по определению текущая точка c принадлежит множеству M_N(R) - отмечаем её на рисунке одним цветом, если же какой-то из элементов z(n) лежит вне этого круга (то есть условие нарушилось), то соответствующую точку c отмечаем другим цветом (возможно, в зависимости от номера n элемента z(n), который первый вышел из круга).
2) Определите "эффективные" значения a и R. Если эти параметры слишком большие, то программа будет работать довольно долго - много перебирать. С другой стороны, если взять их слишком маленькими, то можно потерять часть множества. Определите опытным путём "наилучшие" значения для a и R. Для этого при достаточно больших значениях N (порядка 100-500) постройте множества M_N(R) при разных значениях a и R. Нам нужно наименьшее из таких значений, что их увеличение не изменяет получившийся рисунок.
3) Использую программу, подберите несколько значений параметра z(0) (помните, что он комплексный), чтобы построенное множество обладало фрактальной природой. Имейте ввиду, что при разных z(0) "эффективные" значения R и a могут отличаться.
Ожидаемые результаты
1) Программа (исходный код и исполняемый файл), строящая изображение множества Мандельброта (M_N(R)), в зависимости от z(0), N, R, a.
2) Определённые опытным путём "эффективные" значения a и R.
3) Определённые опытным путём значения z(0), при которых наблюдается наиболее интересная (с вашей точки зрения) картинка.
Дополнительно
1) Сделайте возможность сохранения построенной картинки в jpeg-файл.
2) Дайте возможность пользователю изменять параметры z(0) (не забывайте, что он комплексный), a, R и N.
3) Сделайте возможность изменения масштаба по осям сдвига координатной сетки, чтобы можно было детально рассмотреть любую часть построенного множества
4) Докажите, что сущетвует такое R*, что при z(0)=0 всё множество лежит внутри круга радиуса R*.
--------------------------------------------------------------------------------------------------------

Всё, что я знаю - основные функции библиотеки работы со строками, ввод/вывод, алгоритмы сортировки массивов (ну и само собой динамические массивы, разумеется), ну и ещё некоторые функции, позволяющие, например, написать простенькую программу для работы с базой данных в оперативной памяти из консоли. Читаю том Страуструпа, но ничего подходящего для этого задания пока не нашёл. Во-первых: нужна либа работы с комплексными числами, во-вторых - координатная плоскость, в третьих - множество Windows API-функций, в четвёртых - многое из того, чего я наверное и не подозреваю. Что порекомендуете почитать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2012, 15:10     Моделирование фрактала в координатной плоскости
Посмотрите здесь:

В какой координатной четверти плоскости находится точка. C++
Четверти на координатной плоскости C++
C++ Очередь, состоящая из точек координатной плоскости
C++ Графическое изображение геометрических фигур на координатной плоскости
Создать класс Круг на координатной плоскости C++
Поиск точки на координатной плоскости C++
C++ Как расчитать растояние на координатной плоскости напрямую?
Сравнение двух точек на координатной плоскости C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru