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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Повторяющиеся элементы массива http://www.cyberforum.ru/cpp-beginners/thread567034.html
Есть произвольный массив, в котором нужно отсортировать повторяющиеся элементы по уменьшению и вывести общее кол-во повторений. Решил реализовать следующим образом: сначала просто отсортировать массив методом пузырька, после чего циклом прогнать условие на совпадения, и если они есть просто выводить их на экран и добавлять к счетчику совпадений +1, таким образом избегая пересоздания массива....
C++ Классы, конструктор копирования (разбор куска программы) class string{ char *str; void load(char *s) { str=strdup(s); } void add(char *s) { str=(char*)realloc(str,strlen(str)+strlen(s)+1); strcat(str,s); } int find(char *s) { char *p=strstr(str,s); return p==NULL ? -1 : p-str; } int cmp(string &t) { return strcmp(str,t.str); } public: string(){ load(""); } string(char *s){ load(s); } http://www.cyberforum.ru/cpp-beginners/thread567020.html
C++ теоритический вопрос - память
как вычислить адрес(реальный , а не тот который нам ядро подсовывает) какого либо объекта в виртуальной памяти? Добавлено через 5 минут имеется в виду 32 битная адресация
C++ Решение половинным делением.
Составить функцию нахождения корня F(x) = 0 методом деления напополам. Интервал разбить на отрезки с шагом h. Уравнение x*x*x -2 = 0; , h = 0.5. #include <cmath> #include <iostream> #define pi 3.14 using namespace std; double f(double x) {
C++ Перегрузка операции + http://www.cyberforum.ru/cpp-beginners/thread567005.html
Всем привет! Ребята, обясните, пжлста, почему конструктор вызывается дважды. Rational integer1( c, d ),h;// инициализация h ( здесь я понимаю почему вызывается конструктор) h=integer + integer1;// а почему вызывается здесь не пойму, ведь должен вызываться operator = Заранее спасибо.
C++ Мартица В данной действительной квадратной матрице порядка n найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный. подробнее

Показать сообщение отдельно
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
06.05.2012, 15:10     Моделирование фрактала в координатной плоскости
Требуется написать программу, которая будет строить множество Мандельброта на координатной плоскости и выполнять некоторые функции. Цитирую текст задания:
--------------------------------------------------------------------------------------------------------
Отображение 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-функций, в четвёртых - многое из того, чего я наверное и не подозреваю. Что порекомендуете почитать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru