Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2012, 22:00   #1
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию Изменить программу. Pascal.

Помогите изменить программу, чтобы получить фрактал на прикреплённом рисунке. Формула рисунка - ch(z) -гиперболический косинус. Формула гиперболического косинуса ch(z)=(e^z+e^-z)/2. Я выделил действительную и мнимую часть, но получается совсем не то. Что я не правильно делаю?
Код:
PROGRAM Zadanie_14a;
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;
         z.x:=(exp(t.x+t.y)+exp(-t.x-t.y))/2;
         z.y:=(exp(t.x+t.y)+exp(-(t.x+t.y)))/2;
         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.
Изображения
Тип файла: jpg Безымянный.jpg (37.3 Кб, 82 просмотров)
stas45rus вне форума Ответить с цитированием
Старый 10.06.2012, 23:30   #2
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию

вот сам маленько изменил, результат близкий, но не тот
Код:
PROGRAM Zadanie_14a;
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.05;
      z.y:=y*0.05;
      c.x:=0.11;
      c.y:=-0.66;
      While (sqr(z.x)+sqr(z.y)<max) and (n<iter) Do
       begin
         t:=z;
         z.x:=((exp(t.x)+exp(-t.x))/2)*cos(t.y); {Re:((e^x+e^-x)/2)*cos y}
         z.y:=((exp(t.y)-exp(-t.y))/2)*sin(t.y); {Im:((e^x-e^-x)/2)*sin 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.
stas45rus вне форума Ответить с цитированием
Старый 11.06.2012, 14:48   #3
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию

Ещё раз переделал программу. Выделил из ch z действительную и мнимую часть. Формула: ch z=ch x*cos y+i*sh x*sin y. Re: ch x*cos y; Im:sh x*sin y. ch x=(e^x+e^-x)/2; sh x=(e^x-e^-x)/2. Итоговая формула: Re(e^x+e^-x)/2)*cos y; Im(e^x-e^-x)/2)*sin y. Подставил в код но рисунок совсем другой. Уважаемые программисты помогите.
Код:
PROGRAM Zadanie_14a;
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.05;
      z.y:=y*0.05;
      c.x:=0.11;
      c.y:=-0.66;
      While (sqr(z.x)+sqr(z.y)<max) and (n<iter) Do
       begin
         t:=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.
stas45rus вне форума Ответить с цитированием
Старый 12.06.2012, 20:34   #4
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию

Неужели никто не может помочь? Я наверно самого главного не сказал. Речь идёт о фракталах, в частности о множестве Жюлиа.
stas45rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить приведенную программу, используя оператор варианта CASE(Pascal) Nitoo Помощь студентам 2 29.09.2010 15:16
Помогите изменить программу Dmit Софт 0 18.06.2009 22:07
Изменить программу HECTOR.A. Помощь студентам 0 05.06.2009 00:06
Как изменить программу? UberStas Помощь студентам 4 13.06.2008 19:02