Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/56: Рейтинг темы: голосов - 56, средняя оценка - 4.95
 Аватар для gavrichenko
7 / 7 / 3
Регистрация: 20.07.2012
Сообщений: 132

Фрактал по типу множества Жюлиа

20.07.2012, 19:06. Показов 11352. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты. Проверьте пожалуйста и укажите на ошибки. Нужно получить фрактал по типу множества Жюлиа. Функция f(x)=ch z. Выделил действительную и мнимую часть. Получилось следующее: Re: (e^x+e^(-x))/2*cos y; Im: (e^x-e^(-x))/2*sin y. Но что-то тут не ладится. Помогите плиз.
P.S. Что должно получиться смотрите на прикреплённый рисунок.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
PROGRAM Zadanie_14c;
Uses Graph,Crt;
CONST
  iter=50;
  max=16;
TYPE
  TComplex=Record
            x:Real;
            y:Real;
           End;
VAR
  z,t,c:TComplex;
  x,y,n:Integer;
  Cancel:Boolean;
  gd,gm:Integer;
  mx,my:Integer;
BEGIN
 ClrScr;
 Cancel:=False;
 Randomize;
 gd:=Detect;
 InitGraph(gd,gm,'');
 mx:=GetMaxX div 2;
 my:=GetMaxY div 2;
 For y:=-my To my Do
  For x:=-mx To mx Do
    begin
      n:=0;
      z.x:=x*0.005;
      z.y:=y*0.005;
      c.x:=0.11;
      c.y:=-0.66;
      While (sqr(z.x)+sqr(z.y)<max) and (n<iter) Do
       begin
         t:=z;
         {ch z}
         z.x:=(exp(t.x)+exp(-t.x))/2*cos(t.y);
         z.y:=(exp(t.x)-exp(-t.x))/2*sin(t.y);
         Inc(n);
         If KeyPressed Then Cancel:=True;
       end;
      If n<iter Then PutPixel(mx+x,my+y,8+(n mod 16));
      If Cancel Then Exit;
    end;
 ReadKey;
 CloseGraph;
END.
Миниатюры
Фрактал по типу множества Жюлиа  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2012, 19:06
Ответы с готовыми решениями:

Построение множества Жюлиа
Постройте множество Жюлиа для функции h(z)=f(z)*g(z), где f(z)=z2+0,1+0,1i и g(z)=z2-2. Если я верно понимаю, то если в этой программе,...

множества Жюлиа
Здравствуйте! Помогите пожалуйста реализовать в PascalABC этот алгоритм Алгоритм построения множества Жюлиа Шаг 0: Выбрать...

Фрактал Жюлиа
program J2; uses Graph, Crt; type TComplex = record X : Real; Y : Real; end;

44
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
20.07.2012, 21:38
1
 Аватар для gavrichenko
7 / 7 / 3
Регистрация: 20.07.2012
Сообщений: 132
20.07.2012, 22:03  [ТС]
Ну а разве у меня не то же самое?

Добавлено через 1 минуту
Просто я записал формулы, которыми задаётся ch x и sh x.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 09:31
gavrichenko, Все верно просто я попросил vetvet, проверить поскольку сам не умею. Нужно же искать почему не то рисует...

Добавлено через 1 час 33 минуты
Не знаю, меняя параметры iter,max а также вид фрактала
-достигает определённого максимального числа;
-действительная часть меньше определённого числа;
-мнимая часть меньше определённого числа;
-и мнимая, и действительная части меньше какого-либо числа.
получил кучу разных фракталов, но тот что на картинке не получается.
Вообще это описано например здесь.
http://fractalworld.xaoc.ru/Julia_set
Видимо это как-то знать нужно, метод тыка не подходит....

Добавлено через 30 минут
Кстати c.x,c.y здесь не нужны, убери их из кода.
2
 Аватар для gavrichenko
7 / 7 / 3
Регистрация: 20.07.2012
Сообщений: 132
21.07.2012, 09:38  [ТС]
Puporev,я этот сайт уже можно сказать наизусть изучил. какая-то ерунда.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 09:41
Цитата Сообщение от gavrichenko Посмотреть сообщение
какая-то ерунда.
Ну не совсем ерунда, по крайней мере коды рабочие, но в целом мне тоже не нравится, по крайней мере картинки не совпадают с тем что рисует программа.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 12:15
Короче сделал такой код, в принципе тоже.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Uses Graph,Crt;
CONST
  iter=50;
  max=16;
TYPE
  TComplex=Record
            x:Real;
            y:Real;
           End;
VAR
  z,t,c:TComplex;
  x,y,n:Integer;
  Cancel:Boolean;
  gd,gm:Integer;
  mx,my:Integer;
BEGIN
 ClrScr;
 Cancel:=False;
 Randomize;
 gd:=Detect;
 InitGraph(gd,gm,'');
 mx:=GetMaxX div 2;
 my:=GetMaxY div 2;
 For x:=-mx To mx Do
 For y:=-my To my Do
  begin
   n:=0;
   z.x:=x*0.005;
   z.y:=y*0.005;
   while(sqr(z.x)+sqr(z.y)<=2.25)
   {while (sqr(z.x)+sqr(z.y)<max)}
   and (n<iter) Do
    begin
     t:=z;
     {ch z}
     z.x:=(exp(t.x)+exp(-t.x))/2*cos(t.y);
     z.y:=(exp(t.x)-exp(-t.x))/2*sin(t.y);
     Inc(n);
     If KeyPressed Then Cancel:=True;
    end;
   If n<max Then PutPixel(mx+x,my+y,16+n mod 16)
   else PutPixel(mx+x,my+y,0);
   If Cancel Then Exit;
  end;
 ReadKey;
 CloseGraph;
END.
Получается такое(111.jpg).
Вставил эту формулу в чужую программу, получил в принципе тоже, просто цвета другие.
Миниатюры
Фрактал по типу множества Жюлиа   Фрактал по типу множества Жюлиа  
1
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
21.07.2012, 14:25
http://www.mycomp.com.ua/text/... 1684058425

Добавлено через 39 минут
И ещё вопрос: вы исходный код, который переделывали:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
program J2;
 
uses Graph, Crt;
 
type
    TComplex = record
        X : Real;
        Y : Real;
    end;
    
const
    iter = 50;
    max  = 16;
    
var
    z, t, c : TComplex;
    x, y, n : Integer;
    Cancel  : Boolean;
    gd, gm  : Integer;
    mx, my  : Integer;
    
begin
    Cancel := false;
    Randomize;
    gd := Detect;
    InitGraph(gd,gm,'c:\bp\bgi');
    Mx := GetMaxX div 2;
    My := GetMaxY div 2;
    for y := -my to my do
        for x := -mx to mx do 
        begin
            n := 0;
            z.x := x * 0.005;
            z.y := y * 0.005;
            c.x := 0.11;
            c.y := -0.66;
            while (sqr(z.x) + sqr(z.y) < max) and (n < iter) do 
            begin
                t := z;
                {z^2 + c}
                z.x := sqr(t.x) - sqr(t.y) + c.x;
                z.y := 2*t.x*t.y + c.y;
                Inc(n);
                if keypressed then 
                    cancel := true;
            end;
            if n < iter then 
            begin
                PutPixel(mx + x,my + y,16 - (n mod 16));
            end;
            if cancel then 
                exit;
        end;
    Readkey;
    CloseGraph;
end.
прогоняли? Проверяли, что он строит?
2
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 14:35
vetvet, Он строит множество Жулиа по формуле z^2+c
Миниатюры
Фрактал по типу множества Жюлиа  
0
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
21.07.2012, 14:46
А должна что-то подобное строить, насколько я поняла:
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 14:49
Так это и строит в принципе, широкий дендрит, просто картинки на том сайте вряд ли взяты с программ в Паскале и сильно не совпадают, а синий фон вообще просто пририсован.
0
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
21.07.2012, 15:29
Кроме того, что мне вообще ничего в данном коде не понятно, первое, что интересует, зачем выполняется зто:
Pascal
1
2
z.x := x * 0.005;
z.y := y * 0.005;
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 15:41
Это типа обратного масштабирования, приведения экранных координат к реальным, х,y имеют значения x=[-320,320], y=[-240,240], а для вычисления нужны малые величины.
По идее нужно наоборот, берут реальные координаты например по х,y от -1,5 до 1,5, делают вычисления и через масштабирование, уже с увеличением , рисуют пиксели в экранных координатах.
Например на картинке программы в Делфи так и сделано.
0
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
21.07.2012, 15:45
Puporev, тогда может попробовать взять значение не 0.005, а ещё меньше. Экспонента ведь растёт быстрее квадратичной функции. Ну и поиграться с радиусом, который max=16.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 15:48
vetvet, Тут вообще меняя разные параметры и условия получаются всякие разные фракталы, я когда экспериментировал, то мне надоело, но получить ту картинку что в задании все равно даже близко не мог.
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 15:54
При уменьшении этих коэффициентов происходит детализация картинки, уменьшается область рисования, но вылазят подробности, вот например при коэффициенте 0,001.
Миниатюры
Фрактал по типу множества Жюлиа  
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 16:03
Кстати ту что по условию пытался сделать уменьшать некуда, можно только увеличивать.
0
21.07.2012, 16:13

Не по теме:

Мне проверять и пробовать не на чем.

0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
21.07.2012, 16:19
vetvet, Если у тебя ХР, скачай здесь Турбо Паскаль, если семерка, то FreePascal, в нем тоже будет работать.
Скачать Паскаль
Чтобы запустить программу нужно скопировать код из темы в Блокнот и сохранить его в папке Bin с расширением .pas. Потом запустить файл .exe Паскаля, найти через меню Файл этот файл, открыть и вперед.

Добавлено через 35 секунд
Да, имя файла из латинских букв и не более 8.
0
Змеюка одышечная
 Аватар для vetvet
9864 / 4595 / 178
Регистрация: 04.01.2011
Сообщений: 8,574
21.07.2012, 16:20
Ну и ещё из различий.
У ТС
Pascal
1
If n<iter Then PutPixel(mx+x,my+y,8+(n mod 16));
У Вас:
Pascal
1
If n<max Then PutPixel(mx+x,my+y,16+n mod 16)
В коде с сайта:
Pascal
1
PutPixel(mx + x,my + y,16 - (n mod 16));
Оно, насколько я знаю, ставит точку с координатами, которые в скобках, а вот что даёт 16 - (n mod 16), я не понимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2012, 16:20
Помогаю со студенческими работами здесь

Фрактал (множество) Жюлиа
Привет всем! Достаточно срочно ищется реализация фрактала Жюлиа на с++, может есть у кого?) был бы очень благодарен

Множества Жюлиа
Построить множества Жюлиа.

Алгоритм построения простейшего множества Жюлиа
Заранее прошу прощения, если не там пишу..просто действительно нужна помощь. Прошу помочь с созданием простейшего алгоритма построения...

Написать код для отображения множества Жюлиа
Здраствуйте. помогите пожалуйста написать код для отображения множества Жюлиа в C++ Builder. заранее огромное спасибо.

Выражение должно относиться к целочисленному типу или типу перечисления без области видимости
Необходимо реализовать класс Factory, который представляет из себя строку символов и предусмотреть оператор вычитания подстроки из строки. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru