Дерево Фейгенбаума

rost.jpg

Демонстрация динамики роста популяции.

Следующая формула описывает динамику развития популяции:

f(x) = аx – ах2

Простейшая модель — это пропорциональное соотношение численности с прошлым годом. Допустим в прошлом году у нас было x животных. В этом году их должно быть rx животных. Но это не выполняется в реальных условиях. Лучшее соответствие с реальностью получится если добавить фактор, зависящий от того какой потенциал существует у популяции для дальнейшего развития, и пусть x — коэффициент полноты, который меняется от 0 до 1. Потом добавляется фактор 1 – x, так что территория почти полностью заполнена, популяция не возрастет выше верхнего предела.

Отображение на экране строится, путем циклического выполнения формулы.

uses
  Graph;
 
var
  Driv,Mode:integer;
  I,J:integer;
  R,X:extended;
  Row: array [0..800] of word;
 
const
  K=1.1/600;
  X0=0.3;   
 
 
procedure GenPal;        {определение палитры}
var
  i,c:byte;
begin
  for i:=1 to 255 do
  begin
    c:=10+Round( (63-10)/255*i );
    SetRGBPalette(i,c,c,c);
  end;
end;
 
 
begin
  Driv := InstallUserDriver('SVGA256',nil); {инициализация графики}
  Mode:=3; {800x600x256}
  InitGraph(Driv,Mode,'');
  GenPal;
  for J:=0 to 600 do
  begin
    FillChar(Row,SizeOf(Row),0);
    R:=2.9+J*K;
    X:=X0;
    for I:=1 to 200 do
      X:=X*R*(1-X);               {реализация формулы}
 
    for I:=1 to 10000 do
    begin
      X:=X*R*(1-X);
      inc( Row[Round(X*800)] );
    end;
 
    for I:=0 to 800 do
      PutPixel(I,J,Round(Row[I]/100*255) ) {прорисовка}
 
  end;                                  
  Readln;                               
  CloseGraph;                           
end.

Ключевые слова: 
Дерево Фейгенбаума
ВложениеРазмер
650_attract.rar24.28 кб