34 lines
786 B
ObjectPascal
34 lines
786 B
ObjectPascal
procedure FeigenbaumConstant(Memo: TMemo);
|
|
{ Calculate the Feigenbaum constant }
|
|
const IMax = 13;
|
|
const JMax = 10;
|
|
var I,J,K: integer;
|
|
var A1,A2,D1,X,Y: double;
|
|
var A,D: double;
|
|
begin
|
|
Memo.Lines.Add('Feigenbaum constant calculation:');
|
|
{Set initial starting values for iterations}
|
|
A1:=1.0; A2:=0.0; D1:=3.2;
|
|
Memo.Lines.Add(' I A D');
|
|
for I:=2 to IMax do
|
|
begin
|
|
{Find next Bifurcation parameter, A}
|
|
A:=A1 + (A1 - A2) / D1;
|
|
for J:=1 to JMax do
|
|
begin
|
|
X:=0; Y:=0;
|
|
for K:=1 to 1 shl i do
|
|
begin
|
|
Y:=1 - 2 * y * x;
|
|
X:=A - X * X
|
|
end;
|
|
A:=A - X / Y
|
|
end;
|
|
{Use current and previous values of A}
|
|
{to calculate the Feigenbaum constant D }
|
|
D:= (A1 - A2) / (A - A1);
|
|
Memo.Lines.Add(Format('%2d %2.8f %2.8f',[I,A,D]));
|
|
D1:=D; A2:=A1; A1:=A;
|
|
end;
|
|
end;
|