Текст задания

Реализовать программу, строящую фрактал с заданными границами расчета x0 ≤ x ≤ xn, y0 ≤ y ≤ yn . 

В зависимости от варианта задания даются различные значения границ расчета. Ниже представлен код программы для значений X0=-0,9; Xn=0,9; Y0=-0,8; Yn=0,8, Вы можете без проблем вставить свои значения.

Исходный код программы

program Newton;
uses GraphABC,Utils;
type Complex = Record
                x : Real;
                y : Real;
               end;
const iter = 50;
      max  = 1e+6;
      min  = 1e-6;
var  z, t, d : Complex;
     y, x, p : Real;
   xc, yc, n : Integer;
     mx, my  : real;
 x0,xn,y0,yn : real;
{Функция для перевода кода цвета в константу} 
function IntToColor(const kode: integer):color;
begin
  case kode of
  0: result:=clBlack;
  1: result:=clBlue;
  2: result:=clGreen;
  3: result:=clCyan;
  4: result:=clRed;
  5: result:=clDarkMagenta;
  6: result:=clBrown;
  7: result:=clLightGray;
  8: result:=clDarkGray;
  9: result:=clLightBlue;
  10: result:=clLightGreen;
  11: result:=clLightCyan;
  12: result:=clLightPink;
  13: result:=clMagenta;
  14: result:=clYellow;
  15: result:=clWhite;
  end;
IntToColor:=result;
end;
begin
SetWindowSize(790,500);
Window.Title := 'Фрактал Ньютона';
Randomize;
{дипазон по х,у из вашего варианта}
x0:=-0.9;xn:=0.9;
y0:=-0.8;yn:=0.8;
{начало экранных координат, смещено влево и вверх}
xc := round(790*(-x0)/(xn-x0));
yc := round(500*(-y0)/(yn-y0));
{масштаб для перевода координат в экранные}
mx:=xc/(-x0);
my:=yc/-y0;
y:=y0;{цикл по у}
repeat
 x:=x0; {цикл по х}
  repeat
   n := 0;
   z.x := x;
   z.y := y;
   d := z;
   while (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min)
   and (n < iter) do
    begin
     t := z;
     p := sqr(sqr(t.x)+sqr(t.y));
     z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p);
     z.y := 2/3*t.y*(1-t.x/p);
     d.x := abs(t.x - z.x);
     d.y := abs(t.y - z.y);
     Inc(n);
    end;
   PutPixel(xc + round(x*mx),yc + round(y*my),IntToColor(16 - (n mod 16)));
   x:=x+0.001;{шаг по x: чем больше шаг, тем быстрее рисуется, но менее качественная картинка}
  until x>xn;
 y:=y+0.001; {шаг по y}
until y>yn;
end.

Результат выполнения программы

После компиляции и запуска программы у Вас должна получиться следующая картинка:


Написать отзыв

Внимание: HTML не поддерживается! Используйте обычный текст!
    Плохо           Хорошо

Фрактал Ньютона (разработка под PascalABC.net)


0 отзывов / Написать отзыв


Помогло решение? Буду рад маленькой награде=)

Теги: PascalABC

Не подошла работа?

Узнайте стоимость написания работы по Вашему заданию

(это быстро и бесплатно)

Узнать стоимость

Спасибо, не надо