Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
2
Task/Feigenbaum-constant-calculation/00-META.yaml
Normal file
2
Task/Feigenbaum-constant-calculation/00-META.yaml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
from: http://rosettacode.org/wiki/Feigenbaum_constant_calculation
|
||||
8
Task/Feigenbaum-constant-calculation/00-TASK.txt
Normal file
8
Task/Feigenbaum-constant-calculation/00-TASK.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
;Task:
|
||||
Calculate the Feigenbaum constant.
|
||||
|
||||
|
||||
;See:
|
||||
:* Details in the Wikipedia article: [https://en.wikipedia.org/wiki/Feigenbaum_constants Feigenbaum constant].
|
||||
<br><br>
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
V max_it = 13
|
||||
V max_it_j = 10
|
||||
V a1 = 1.0
|
||||
V a2 = 0.0
|
||||
V d1 = 3.2
|
||||
V a = 0.0
|
||||
|
||||
print(‘ i d’)
|
||||
L(i) 2..max_it
|
||||
a = a1 + (a1 - a2) / d1
|
||||
L(j) 1..max_it_j
|
||||
V x = 0.0
|
||||
V y = 0.0
|
||||
L(k) 1..(1 << i)
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
a = a - x / y
|
||||
V d = (a1 - a2) / (a - a1)
|
||||
print(‘#2 #.8’.format(i, d))
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Calculate the Feigenbaum constant #
|
||||
|
||||
print( ( "Feigenbaum constant calculation:", newline ) );
|
||||
INT max it = 13;
|
||||
INT max it j = 10;
|
||||
REAL a1 := 1.0;
|
||||
REAL a2 := 0.0;
|
||||
REAL d1 := 3.2;
|
||||
print( ( "i ", "d", newline ) );
|
||||
FOR i FROM 2 TO max it DO
|
||||
REAL a := a1 + (a1 - a2) / d1;
|
||||
FOR j TO max it j DO
|
||||
REAL x := 0;
|
||||
REAL y := 0;
|
||||
FOR k TO 2 ^ i DO
|
||||
y := 1 - 2 * y * x;
|
||||
x := a - x * x
|
||||
OD;
|
||||
a := a - x / y
|
||||
OD;
|
||||
REAL d = (a1 - a2) / (a - a1);
|
||||
IF i < 10 THEN
|
||||
print( ( whole( i, 0 ), " ", fixed( d, -10, 8 ), newline ) )
|
||||
ELSE
|
||||
print( ( whole( i, 0 ), " ", fixed( d, -10, 8 ), newline ) )
|
||||
FI;
|
||||
d1 := d;
|
||||
a2 := a1;
|
||||
a1 := a
|
||||
OD
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# syntax: GAWK -f FEIGENBAUM_CONSTANT_CALCULATION.AWK
|
||||
BEGIN {
|
||||
a1 = 1
|
||||
a2 = 0
|
||||
d1 = 3.2
|
||||
max_i = 13
|
||||
max_j = 10
|
||||
print(" i d")
|
||||
for (i=2; i<=max_i; i++) {
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for (j=1; j<=max_j; j++) {
|
||||
x = y = 0
|
||||
for (k=1; k<=2^i; k++) {
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
d = (a1 - a2) / (a - a1)
|
||||
printf("%2d %.8f\n",i,d)
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
}
|
||||
exit(0)
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
|
||||
procedure Main is
|
||||
procedure feigenbaum is
|
||||
subtype i_range is Integer range 2 .. 13;
|
||||
subtype j_range is Integer range 1 .. 10;
|
||||
|
||||
-- the number of digits in type Real is reduced to 15 to produce the
|
||||
-- results reported by C, C++, C# and Ring. Increasing the number of
|
||||
-- digits in type Real produces the results reported by D.
|
||||
|
||||
type Real is digits 15;
|
||||
package Real_Io is new Float_IO (Real);
|
||||
use Real_Io;
|
||||
|
||||
a, x, y, d : Real;
|
||||
a1 : Real := 1.0;
|
||||
a2 : Real := 0.0;
|
||||
d1 : Real := 3.2;
|
||||
begin
|
||||
Put_Line (" i d");
|
||||
for i in i_range loop
|
||||
a := a1 + (a1 - a2) / d1;
|
||||
for j in j_range loop
|
||||
x := 0.0;
|
||||
y := 0.0;
|
||||
for k in 1 .. 2**i loop
|
||||
y := 1.0 - 2.0 * x * y;
|
||||
x := a - x * x;
|
||||
end loop;
|
||||
a := a - x / y;
|
||||
end loop;
|
||||
d := (a1 - a2) / (a - a1);
|
||||
Put (Item => i, Width => 2);
|
||||
Put (Item => d, Fore => 5, Aft => 8, Exp => 0);
|
||||
New_Line;
|
||||
d1 := d;
|
||||
a2 := a1;
|
||||
a1 := a;
|
||||
end loop;
|
||||
end feigenbaum;
|
||||
|
||||
begin
|
||||
feigenbaum;
|
||||
end Main;
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
maxIt = 13 : maxItj = 13
|
||||
a1 = 1.0 : a2 = 0.0 : d = 0.0 : d1 = 3.2
|
||||
|
||||
print "Feigenbaum constant calculation:"
|
||||
print
|
||||
print " i d"
|
||||
print "======================"
|
||||
|
||||
for i = 2 to maxIt
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j = 1 to maxItj
|
||||
x = 0.0 : y = 0.0
|
||||
for k = 1 to 2 ^ i
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
next k
|
||||
a -= x / y
|
||||
next j
|
||||
d = (a1 - a2) / (a - a1)
|
||||
print rjust(i,3); chr(9); ljust(d,13,"0")
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
next i
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#include <iostream>
|
||||
|
||||
int main() {
|
||||
const int max_it = 13;
|
||||
const int max_it_j = 10;
|
||||
double a1 = 1.0, a2 = 0.0, d1 = 3.2;
|
||||
|
||||
std::cout << " i d\n";
|
||||
for (int i = 2; i <= max_it; ++i) {
|
||||
double a = a1 + (a1 - a2) / d1;
|
||||
for (int j = 1; j <= max_it_j; ++j) {
|
||||
double x = 0.0;
|
||||
double y = 0.0;
|
||||
for (int k = 1; k <= 1 << i; ++k) {
|
||||
y = 1.0 - 2.0*y*x;
|
||||
x = a - x * x;
|
||||
}
|
||||
a -= x / y;
|
||||
}
|
||||
double d = (a1 - a2) / (a - a1);
|
||||
printf("%2d %.8f\n", i, d);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
using System;
|
||||
|
||||
namespace FeigenbaumConstant {
|
||||
class Program {
|
||||
static void Main(string[] args) {
|
||||
var maxIt = 13;
|
||||
var maxItJ = 10;
|
||||
var a1 = 1.0;
|
||||
var a2 = 0.0;
|
||||
var d1 = 3.2;
|
||||
Console.WriteLine(" i d");
|
||||
for (int i = 2; i <= maxIt; i++) {
|
||||
var a = a1 + (a1 - a2) / d1;
|
||||
for (int j = 1; j <= maxItJ; j++) {
|
||||
var x = 0.0;
|
||||
var y = 0.0;
|
||||
for (int k = 1; k <= 1<<i; k++) {
|
||||
y = 1.0 - 2.0 * y * x;
|
||||
x = a - x * x;
|
||||
}
|
||||
a -= x / y;
|
||||
}
|
||||
var d = (a1 - a2) / (a - a1);
|
||||
Console.WriteLine("{0,2:d} {1:f8}", i, d);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void feigenbaum() {
|
||||
int i, j, k, max_it = 13, max_it_j = 10;
|
||||
double a, x, y, d, a1 = 1.0, a2 = 0.0, d1 = 3.2;
|
||||
printf(" i d\n");
|
||||
for (i = 2; i <= max_it; ++i) {
|
||||
a = a1 + (a1 - a2) / d1;
|
||||
for (j = 1; j <= max_it_j; ++j) {
|
||||
x = 0.0;
|
||||
y = 0.0;
|
||||
for (k = 1; k <= 1 << i; ++k) {
|
||||
y = 1.0 - 2.0 * y * x;
|
||||
x = a - x * x;
|
||||
}
|
||||
a -= x / y;
|
||||
}
|
||||
d = (a1 - a2) / (a - a1);
|
||||
printf("%2d %.8f\n", i, d);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
feigenbaum();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import std.stdio;
|
||||
|
||||
void main() {
|
||||
int max_it = 13;
|
||||
int max_it_j = 10;
|
||||
double a1 = 1.0;
|
||||
double a2 = 0.0;
|
||||
double d1 = 3.2;
|
||||
double a;
|
||||
|
||||
writeln(" i d");
|
||||
for (int i=2; i<=max_it; i++) {
|
||||
a = a1 + (a1 - a2) / d1;
|
||||
for (int j=1; j<=max_it_j; j++) {
|
||||
double x = 0.0;
|
||||
double y = 0.0;
|
||||
for (int k=1; k <= 1<<i; k++) {
|
||||
y = 1.0 - 2.0 * y * x;
|
||||
x = a - x * x;
|
||||
}
|
||||
a -= x / y;
|
||||
}
|
||||
double d = (a1 - a2) / (a - a1);
|
||||
writefln("%2d %.8f", i, d);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
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;
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
open System
|
||||
|
||||
[<EntryPoint>]
|
||||
let main _ =
|
||||
let maxIt = 13
|
||||
let maxItJ = 10
|
||||
let mutable a1 = 1.0
|
||||
let mutable a2 = 0.0
|
||||
let mutable d1 = 3.2
|
||||
Console.WriteLine(" i d")
|
||||
for i in 2 .. maxIt do
|
||||
let mutable a = a1 + (a1 - a2) / d1
|
||||
for j in 1 .. maxItJ do
|
||||
let mutable x = 0.0
|
||||
let mutable y = 0.0
|
||||
for _ in 1 .. (1 <<< i) do
|
||||
y <- 1.0 - 2.0 * y * x
|
||||
x <- a - x * x
|
||||
a <- a - x / y
|
||||
let d = (a1 - a2) / (a - a1)
|
||||
Console.WriteLine("{0,2:d} {1:f8}", i, d)
|
||||
d1 <- d
|
||||
a2 <- a1
|
||||
a1 <- a
|
||||
0 // return an integer exit code
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
USING: formatting io locals math math.ranges sequences ;
|
||||
|
||||
[let
|
||||
1 :> a1!
|
||||
0 :> a2!
|
||||
3.2 :> d!
|
||||
|
||||
" i d" print
|
||||
|
||||
2 13 [a,b] [| exp |
|
||||
a1 a2 - d /f a1 + :> a!
|
||||
10 [
|
||||
0 :> x!
|
||||
0 :> y!
|
||||
exp 2^ [
|
||||
1 2 x y * * - y!
|
||||
a x sq - x!
|
||||
] times
|
||||
a x y /f - a!
|
||||
] times
|
||||
a1 a2 - a a1 - /f d!
|
||||
a1 a2! a a1!
|
||||
exp d "%2d %.8f\n" printf
|
||||
] each
|
||||
]
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
program feigenbaum
|
||||
implicit none
|
||||
|
||||
integer i, j, k
|
||||
real ( KIND = 16 ) x, y, a, b, a1, a2, d1
|
||||
|
||||
print '(a4,a13)', 'i', 'd'
|
||||
|
||||
a1 = 1.0;
|
||||
a2 = 0.0;
|
||||
d1 = 3.2;
|
||||
|
||||
do i=2,20
|
||||
a = a1 + (a1 - a2) / d1;
|
||||
do j=1,10
|
||||
x = 0
|
||||
y = 0
|
||||
do k=1,2**i
|
||||
y = 1 - 2 * y * x;
|
||||
x = a - x**2;
|
||||
end do
|
||||
a = a - x / y;
|
||||
end do
|
||||
|
||||
d1 = (a1 - a2) / (a - a1);
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
print '(i4,f13.10)', i, d1
|
||||
end do
|
||||
end
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
' version 25-0-2019
|
||||
' compile with: fbc -s console
|
||||
|
||||
Dim As UInteger i, j, k, maxit = 13, maxitj = 13
|
||||
Dim As Double x, y, a, a1 = 1, a2, d, d1 = 3.2
|
||||
|
||||
Print "Feigenbaum constant calculation:"
|
||||
Print
|
||||
Print " i d"
|
||||
Print "==================="
|
||||
|
||||
For i = 2 To maxIt
|
||||
a = a1 + (a1 - a2) / d1
|
||||
For j = 1 To maxItJ
|
||||
x = 0 : y = 0
|
||||
For k = 1 To 2 ^ i
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
Next
|
||||
a = a - x / y
|
||||
Next
|
||||
d = (a1 - a2) / (a - a1)
|
||||
Print Using "### ##.#########"; i; d
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
Next
|
||||
|
||||
' empty keyboard buffer
|
||||
While Inkey <> "" : Wend
|
||||
Print : Print "hit any key to end program"
|
||||
Sleep
|
||||
End
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
window 1, @"Feignenbaum Constant", ( 0, 0, 200, 300 )
|
||||
|
||||
_maxIt = 13
|
||||
_maxItJ = 10
|
||||
|
||||
void local fn Feignenbaum
|
||||
NSUInteger i, j, k
|
||||
double a1 = 1.0, a2 = 0.0, d1 = 3.2
|
||||
|
||||
print "Feignenbaum Constant"
|
||||
print " i d"
|
||||
|
||||
for i = 2 to _maxIt
|
||||
double a = a1 + ( a1 - a2 ) / d1
|
||||
for j = 1 to _maxItJ
|
||||
double x = 0, y = 0
|
||||
for k = 1 to fn pow( 2, i )
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
next
|
||||
a = a - x / y
|
||||
next
|
||||
double d = ( a1 - a2 ) / ( a - a1 )
|
||||
printf @"%2d. %.8f", i, d
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
next
|
||||
end fn
|
||||
|
||||
fn Feignenbaum
|
||||
|
||||
HandleEvents
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func feigenbaum() {
|
||||
maxIt, maxItJ := 13, 10
|
||||
a1, a2, d1 := 1.0, 0.0, 3.2
|
||||
fmt.Println(" i d")
|
||||
for i := 2; i <= maxIt; i++ {
|
||||
a := a1 + (a1-a2)/d1
|
||||
for j := 1; j <= maxItJ; j++ {
|
||||
x, y := 0.0, 0.0
|
||||
for k := 1; k <= 1<<uint(i); k++ {
|
||||
y = 1.0 - 2.0*y*x
|
||||
x = a - x*x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
d := (a1 - a2) / (a - a1)
|
||||
fmt.Printf("%2d %.8f\n", i, d)
|
||||
d1, a2, a1 = d, a1, a
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
feigenbaum()
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
class Feigenbaum {
|
||||
static void main(String[] args) {
|
||||
int max_it = 13
|
||||
int max_it_j = 10
|
||||
double a1 = 1.0
|
||||
double a2 = 0.0
|
||||
double d1 = 3.2
|
||||
double a
|
||||
|
||||
println(" i d")
|
||||
for (int i = 2; i <= max_it; i++) {
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for (int j = 0; j < max_it_j; j++) {
|
||||
double x = 0.0
|
||||
double y = 0.0
|
||||
for (int k = 0; k < 1 << i; k++) {
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
double d = (a1 - a2) / (a - a1)
|
||||
printf("%2d %.8f\n", i, d)
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
import Data.List (mapAccumL)
|
||||
|
||||
feigenbaumApprox :: Int -> [Double]
|
||||
feigenbaumApprox mx = snd $ mitch mx 10
|
||||
where
|
||||
mitch :: Int -> Int -> ((Double, Double, Double), [Double])
|
||||
mitch mx mxj =
|
||||
mapAccumL
|
||||
(\(a1, a2, d1) i ->
|
||||
let a =
|
||||
iterate
|
||||
(\a ->
|
||||
let (x, y) =
|
||||
iterate
|
||||
(\(x, y) -> (a - (x * x), 1.0 - ((2.0 * x) * y)))
|
||||
(0.0, 0.0) !!
|
||||
(2 ^ i)
|
||||
in a - (x / y))
|
||||
(a1 + (a1 - a2) / d1) !!
|
||||
mxj
|
||||
d = (a1 - a2) / (a - a1)
|
||||
in ((a, a1, d), d))
|
||||
(1.0, 0.0, 3.2)
|
||||
[2 .. (1 + mx)]
|
||||
|
||||
-- TEST ------------------------------------------------------------------
|
||||
main :: IO ()
|
||||
main =
|
||||
(putStrLn . unlines) $
|
||||
zipWith
|
||||
(\i s -> justifyRight 2 ' ' (show i) ++ '\t' : s)
|
||||
[1 ..]
|
||||
(show <$> feigenbaumApprox 13)
|
||||
where
|
||||
justifyRight n c s = drop (length s) (replicate n c ++ s)
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
public class Feigenbaum {
|
||||
public static void main(String[] args) {
|
||||
int max_it = 13;
|
||||
int max_it_j = 10;
|
||||
double a1 = 1.0;
|
||||
double a2 = 0.0;
|
||||
double d1 = 3.2;
|
||||
double a;
|
||||
|
||||
System.out.println(" i d");
|
||||
for (int i = 2; i <= max_it; i++) {
|
||||
a = a1 + (a1 - a2) / d1;
|
||||
for (int j = 0; j < max_it_j; j++) {
|
||||
double x = 0.0;
|
||||
double y = 0.0;
|
||||
for (int k = 0; k < 1 << i; k++) {
|
||||
y = 1.0 - 2.0 * y * x;
|
||||
x = a - x * x;
|
||||
}
|
||||
a -= x / y;
|
||||
}
|
||||
double d = (a1 - a2) / (a - a1);
|
||||
System.out.printf("%2d %.8f\n", i, d);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
def feigenbaum_delta(imax; jmax):
|
||||
def lpad: tostring | (" " * (4 - length)) + .;
|
||||
def pp(i;x): "\(i|lpad) \(x)";
|
||||
|
||||
"Feigenbaum's delta constant incremental calculation:",
|
||||
pp("i"; "δ"),
|
||||
pp(1; "3.20"),
|
||||
( foreach range(2; 1+imax) as $i (
|
||||
{a1: 1.0, a2: 0.0, d1: 3.2};
|
||||
|
||||
.a = .a1 + (.a1 - .a2) / .d1
|
||||
| reduce range(1; 1+jmax) as $j (.;
|
||||
.x = 0 | .y = 0
|
||||
| reduce range(1; 1+pow(2;$i)) as $k (.;
|
||||
.y = (1 - 2 * .x * .y)
|
||||
| .x = .a - (.x * .x) )
|
||||
| .a -= (.x / .y) )
|
||||
| .d = (.a1 - .a2) / (.a - .a1)
|
||||
| .d1 = .d | .a2 = .a1 | .a1 = .a;
|
||||
pp($i; .d) ) ) ;
|
||||
|
||||
Feigenbaum_delta(13; 10)
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
Feigenbaum's delta constant incremental calculation:
|
||||
i δ
|
||||
1 3.20
|
||||
2 3.2185114220380866
|
||||
3 4.3856775985683365
|
||||
4 4.600949276538056
|
||||
5 4.6551304953919646
|
||||
6 4.666111947822846
|
||||
7 4.668548581451485
|
||||
8 4.66906066077106
|
||||
9 4.669171554514976
|
||||
10 4.669195154039278
|
||||
11 4.669200256503637
|
||||
12 4.669200975097843
|
||||
13 4.669205372040318
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# http://en.wikipedia.org/wiki/Feigenbaum_constant
|
||||
|
||||
function feigenbaum_delta(imax=23, jmax=20)
|
||||
a1, a2, d1 = BigFloat(1.0), BigFloat(0.0), BigFloat(3.2)
|
||||
println("Feigenbaum's delta constant incremental calculation:\ni δ\n1 3.20")
|
||||
for i in 2:imax
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j in 1:jmax
|
||||
x, y = 0, 0
|
||||
for k in 1:2^i
|
||||
y = 1 - 2 * x * y
|
||||
x = a - x * x
|
||||
end
|
||||
a -= x / y
|
||||
end
|
||||
d = (a1 - a2) / (a - a1)
|
||||
println(rpad(i, 4), lpad(d, 4))
|
||||
d1, a2 = d, a1
|
||||
a1 = a
|
||||
end
|
||||
end
|
||||
|
||||
feigenbaum_delta()
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
// Version 1.2.40
|
||||
|
||||
fun feigenbaum() {
|
||||
val maxIt = 13
|
||||
val maxItJ = 10
|
||||
var a1 = 1.0
|
||||
var a2 = 0.0
|
||||
var d1 = 3.2
|
||||
println(" i d")
|
||||
for (i in 2..maxIt) {
|
||||
var a = a1 + (a1 - a2) / d1
|
||||
for (j in 1..maxItJ) {
|
||||
var x = 0.0
|
||||
var y = 0.0
|
||||
for (k in 1..(1 shl i)) {
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
val d = (a1 - a2) / (a - a1)
|
||||
println("%2d %.8f".format(i,d))
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
feigenbaum()
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{feigenbaum 11} // on my computer stackoverflow for values greater than 11
|
||||
-> [3.2185114220380866,4.3856775985683365,4.600949276538056,4.6551304953919646,4.666111947822846,
|
||||
4.668548581451485,4.66906066077106,4.669171554514976,4.669195154039278,4.669200256503637]
|
||||
|
||||
with:
|
||||
|
||||
{def feigenbaum
|
||||
{lambda {:maxi}
|
||||
{f3 :maxi 10 1 0 3.2 0 {A.new} 2}}}
|
||||
|
||||
{def f3
|
||||
{lambda {:maxi :maxj :a1 :a2 :d1 :a3 :s :i}
|
||||
{if {< :i {+ :maxi 1}}
|
||||
then {let { {:maxi :maxi} {:maxj :maxj} {:a1 :a1} {:a2 :a2}
|
||||
{:a3 {f2 {+ :a1 {/ {- :a1 :a2} :d1}} :i :maxj 1} }
|
||||
{:s :s} {:i :i}
|
||||
} {f3 :maxi :maxj :a3 :a1 {/ {- :a1 :a2} {- :a3 :a1}} :a3
|
||||
{A.addlast! {/ {- :a1 :a2} {- :a3 :a1}} :s} {+ :i 1}} }
|
||||
else :s}}}
|
||||
|
||||
{def f2
|
||||
{lambda {:a :i :maxj :j}
|
||||
{if {< :j {+ :maxj 1}}
|
||||
then {f2 {f1 :a :i 0 0 1} :i :maxj {+ :j 1}}
|
||||
else :a}}}
|
||||
|
||||
{def f1
|
||||
{lambda {:a :i :y :x :k}
|
||||
{if {< :k {+ {pow 2 :i} 1}}
|
||||
then {f1 :a :i {- 1 {* 2 :y :x}} {- :a {* :x :x}} {+ :k 1}}
|
||||
else {- :a {/ :x :y}} }}}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
function leftShift(n,p)
|
||||
local r = n
|
||||
while p>0 do
|
||||
r = r * 2
|
||||
p = p - 1
|
||||
end
|
||||
return r
|
||||
end
|
||||
|
||||
-- main
|
||||
|
||||
local MAX_IT = 13
|
||||
local MAX_IT_J = 10
|
||||
local a1 = 1.0
|
||||
local a2 = 0.0
|
||||
local d1 = 3.2
|
||||
|
||||
print(" i d")
|
||||
for i=2,MAX_IT do
|
||||
local a = a1 + (a1 - a2) / d1
|
||||
for j=1,MAX_IT_J do
|
||||
local x = 0.0
|
||||
local y = 0.0
|
||||
for k=1,leftShift(1,i) do
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
end
|
||||
a = a - x / y
|
||||
end
|
||||
d = (a1 - a2) / (a - a1)
|
||||
print(string.format("%2d %.8f", i, d))
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
end
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
module Feigenbaum_constant_calculation (maxit as integer, c as single){
|
||||
locale 1033 // show dot for decimal separator symbol
|
||||
single maxitj=13
|
||||
integer i, j
|
||||
long k
|
||||
decimal a1=1, a2, d , d1=3.2, y, x, a
|
||||
print "Feigenbaum constant calculation:"
|
||||
print
|
||||
print format$("{0:-7} {1:-12} {2}","i", "δ","max j")
|
||||
for i = 2 to maxit
|
||||
a=a1+(a1-a2)/d1
|
||||
for j = 1 to maxitj {x=0:y=0:for k=1 to 2&^i {y=1@-2@*y*x:x=a-x*x}:a-=x/y}
|
||||
d=(a1-a2)/(a-a1)
|
||||
print format$("{0::-7} {1:10:-12} {2::-5}",i, d, j-1)
|
||||
maxitj-=c
|
||||
d1=d:a2=a1:a1= a
|
||||
next
|
||||
}
|
||||
profiler
|
||||
Feigenbaum_constant_calculation 18, .7
|
||||
print timecount
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
maxit = 13;
|
||||
maxitj = 10;
|
||||
a1 = 1.0;
|
||||
a2 = 0.0;
|
||||
d1 = 3.2;
|
||||
a = 0.0;
|
||||
Table[
|
||||
a = a1 + (a1 - a2)/d1;
|
||||
Do[
|
||||
x = 0.0;
|
||||
y = 0.0;
|
||||
Do[
|
||||
y = 1.0 - 2.0 y x;
|
||||
x = a - x x;
|
||||
,
|
||||
{k, 1, 2^i}
|
||||
];
|
||||
a = a - x/y
|
||||
,
|
||||
{j, maxitj}
|
||||
];
|
||||
d = (a1 - a2)/(a - a1);
|
||||
d1 = d;
|
||||
a2 = a1;
|
||||
a1 = a;
|
||||
{i, d}
|
||||
,
|
||||
{i, 2, maxit}
|
||||
] // Grid
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
MODULE Feigenbaum;
|
||||
FROM FormatString IMPORT FormatString;
|
||||
FROM LongStr IMPORT RealToStr;
|
||||
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
|
||||
|
||||
VAR
|
||||
buf : ARRAY[0..63] OF CHAR;
|
||||
i,j,k,max_it,max_it_j : INTEGER;
|
||||
a,x,y,d,a1,a2,d1 : LONGREAL;
|
||||
BEGIN
|
||||
max_it := 13;
|
||||
max_it_j := 10;
|
||||
|
||||
a1 := 1.0;
|
||||
a2 := 0.0;
|
||||
d1 := 3.2;
|
||||
|
||||
WriteString(" i d");
|
||||
WriteLn;
|
||||
FOR i:=2 TO max_it DO
|
||||
a := a1 + (a1 - a2) / d1;
|
||||
FOR j:=1 TO max_it_j DO
|
||||
x := 0.0;
|
||||
y := 0.0;
|
||||
FOR k:=1 TO INT(1 SHL i) DO
|
||||
y := 1.0 - 2.0 * y * x;
|
||||
x := a - x * x
|
||||
END;
|
||||
a := a - x / y
|
||||
END;
|
||||
d := (a1 - a2) / (a - a1);
|
||||
FormatString("%2i ", buf, i);
|
||||
WriteString(buf);
|
||||
RealToStr(d, buf);
|
||||
WriteString(buf);
|
||||
WriteLn;
|
||||
d1 := d;
|
||||
a2 := a1;
|
||||
a1 := a
|
||||
END;
|
||||
|
||||
ReadChar
|
||||
END Feigenbaum.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import strformat
|
||||
|
||||
iterator feigenbaum(): tuple[n: int; δ: float] =
|
||||
## Yield successive approximations of Feigenbaum constant.
|
||||
|
||||
const
|
||||
MaxI = 13
|
||||
MaxJ = 10
|
||||
var
|
||||
a1 = 1.0
|
||||
a2 = 0.0
|
||||
δ = 3.2
|
||||
|
||||
for i in 2..MaxI:
|
||||
var a = a1 + (a1 - a2) / δ
|
||||
for j in 1..MaxJ:
|
||||
var x, y = 0.0
|
||||
for _ in 1..(1 shl i):
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
a -= x / y
|
||||
|
||||
δ = (a1 - a2) / (a - a1)
|
||||
a2 = a1
|
||||
a1 = a
|
||||
yield (i, δ)
|
||||
|
||||
echo " i δ"
|
||||
for n, δ in feigenbaum():
|
||||
echo fmt"{n:2d} {δ:.8f}"
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use Math::AnyNum 'sqr';
|
||||
|
||||
my $a1 = 1.0;
|
||||
my $a2 = 0.0;
|
||||
my $d1 = 3.2;
|
||||
|
||||
print " i δ\n";
|
||||
|
||||
for my $i (2..13) {
|
||||
my $a = $a1 + ($a1 - $a2)/$d1;
|
||||
for (1..10) {
|
||||
my $x = 0;
|
||||
my $y = 0;
|
||||
for (1 .. 2**$i) {
|
||||
$y = 1 - 2 * $y * $x;
|
||||
$x = $a - sqr($x);
|
||||
}
|
||||
$a -= $x/$y;
|
||||
}
|
||||
|
||||
$d1 = ($a1 - $a2) / ($a - $a1);
|
||||
($a2, $a1) = ($a1, $a);
|
||||
printf "%2d %17.14f\n", $i, $d1;
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">maxIt</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">13</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">maxItJ</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">10</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">a1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1.0</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">a2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0.0</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">d1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">3.2</span>
|
||||
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" i d\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span> <span style="color: #008080;">to</span> <span style="color: #000000;">maxIt</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">a</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">a1</span> <span style="color: #0000FF;">+</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">a1</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">a2</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">/</span> <span style="color: #000000;">d1</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">maxItJ</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">x</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">y</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">y</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">*</span><span style="color: #000000;">y</span><span style="color: #0000FF;">*</span><span style="color: #000000;">x</span>
|
||||
<span style="color: #000000;">x</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">a</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">*</span><span style="color: #000000;">x</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #000000;">a</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">a</span> <span style="color: #0000FF;">-</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">/</span><span style="color: #000000;">y</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">d</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">(</span><span style="color: #000000;">a1</span><span style="color: #0000FF;">-</span><span style="color: #000000;">a2</span><span style="color: #0000FF;">)/(</span><span style="color: #000000;">a</span><span style="color: #0000FF;">-</span><span style="color: #000000;">a1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%2d %.8f\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">d</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #000000;">d1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">d</span>
|
||||
<span style="color: #000000;">a2</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">a1</span>
|
||||
<span style="color: #000000;">a1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">a</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<!--
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
max_it = 13
|
||||
max_it_j = 10
|
||||
a1 = 1.0
|
||||
a2 = 0.0
|
||||
d1 = 3.2
|
||||
a = 0.0
|
||||
|
||||
print " i d"
|
||||
for i in range(2, max_it + 1):
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j in range(1, max_it_j + 1):
|
||||
x = 0.0
|
||||
y = 0.0
|
||||
for k in range(1, (1 << i) + 1):
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
a = a - x / y
|
||||
d = (a1 - a2) / (a - a1)
|
||||
print("{0:2d} {1:.8f}".format(i, d))
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*REXX pgm calculates the (Mitchell) Feigenbaum bifurcation velocity, #digs can be given*/
|
||||
parse arg digs maxi maxj . /*obtain optional argument from the CL.*/
|
||||
if digs=='' | digs=="," then digs= 30 /*Not specified? Then use the default.*/
|
||||
if maxi=='' | maxi=="," then maxi= 20 /* " " " " " " */
|
||||
if maxJ=='' | maxJ=="," then maxJ= 10 /* " " " " " " */
|
||||
#= 4.669201609102990671853203820466201617258185577475768632745651343004134330211314737138,
|
||||
|| 68974402394801381716 /*◄──Feigenbaum's constant, true value.*/
|
||||
numeric digits digs /*use the specified # of decimal digits*/
|
||||
a1= 1
|
||||
a2= 0
|
||||
d1= 3.2
|
||||
say 'Using ' maxJ " iterations for maxJ, with " digs ' decimal digits:'
|
||||
say
|
||||
say copies(' ', 9) center("correct", 11) copies(' ', digs+1)
|
||||
say center('i', 9, "─") center('digits' , 11, "─") center('d', digs+1, "─")
|
||||
|
||||
do i=2 for maxi-1
|
||||
a= a1 + (a1 - a2) / d1
|
||||
do maxJ
|
||||
x= 0; y= 0
|
||||
do 2**i; y= 1 - 2 * x * y
|
||||
x= a - x*x
|
||||
end /*2**i*/
|
||||
a= a - x / y
|
||||
end /*maxj*/
|
||||
d= (a1 - a2) / (a - a1) /*compute the delta (D) of the function*/
|
||||
t= max(0, compare(d, #) - 2) /*# true digs so far, ignore dec. point*/
|
||||
say center(i, 9) center(t, 11) d /*display values for I & D ──►terminal*/
|
||||
parse value d a1 a with d1 a2 a1 /*assign 3 variables with 3 new values.*/
|
||||
end /*i*/
|
||||
/*stick a fork in it, we're all done. */
|
||||
say left('', 9 + 1 + 11 + 1 + t )"↑" /*show position of greatest accuracy. */
|
||||
say ' true value= ' # / 1 /*true value of Feigenbaum's constant. */
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
#lang racket
|
||||
(define (feigenbaum #:max-it (max-it 13) #:max-it-j (max-it-j 10))
|
||||
(displayln " i d" (current-error-port))
|
||||
(define-values (_a _a1 d)
|
||||
(for/fold ((a 1) (a1 0) (d 3.2))
|
||||
((i (in-range 2 (add1 max-it))))
|
||||
(let* ((a′ (for/fold ((a (+ a (/ (- a a1) d))))
|
||||
((j (in-range max-it-j)))
|
||||
(let-values (([x y] (for/fold ((x 0) (y 0))
|
||||
((k (expt 2 i)))
|
||||
(values (- a (* x x))
|
||||
(- 1 (* 2 y x))))))
|
||||
(- a (/ x y)))))
|
||||
(d′ (/ (- a a1) (- a′ a))))
|
||||
(eprintf "~a ~a\n" (~a i #:width 2) (real->decimal-string d′ 8))
|
||||
(values a′ a d′))))
|
||||
d)
|
||||
|
||||
(module+ main
|
||||
(feigenbaum))
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
my $a1 = 1;
|
||||
my $a2 = 0;
|
||||
my $d = 3.2;
|
||||
|
||||
say ' i d';
|
||||
|
||||
for 2 .. 13 -> $exp {
|
||||
my $a = $a1 + ($a1 - $a2) / $d;
|
||||
do {
|
||||
my $x = 0;
|
||||
my $y = 0;
|
||||
for ^2 ** $exp {
|
||||
$y = 1 - 2 * $y * $x;
|
||||
$x = $a - $x²;
|
||||
}
|
||||
$a -= $x / $y;
|
||||
} xx 10;
|
||||
$d = ($a1 - $a2) / ($a - $a1);
|
||||
($a2, $a1) = ($a1, $a);
|
||||
printf "%2d %.8f\n", $exp, $d;
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Project : Feigenbaum constant calculation
|
||||
|
||||
decimals(8)
|
||||
see "Feigenbaum constant calculation:" + nl
|
||||
maxIt = 13
|
||||
maxItJ = 10
|
||||
a1 = 1.0
|
||||
a2 = 0.0
|
||||
d1 = 3.2
|
||||
see "i " + "d" + nl
|
||||
for i = 2 to maxIt
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j = 1 to maxItJ
|
||||
x = 0
|
||||
y = 0
|
||||
for k = 1 to pow(2,i)
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
next
|
||||
a = a - x / y
|
||||
next
|
||||
d = (a1 - a2) / (a - a1)
|
||||
if i < 10
|
||||
see "" + i + " " + d + nl
|
||||
else
|
||||
see "" + i + " " + d + nl
|
||||
ok
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
next
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
def main
|
||||
maxIt = 13
|
||||
maxItJ = 10
|
||||
a1 = 1.0
|
||||
a2 = 0.0
|
||||
d1 = 3.2
|
||||
puts " i d"
|
||||
for i in 2 .. maxIt
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j in 1 .. maxItJ
|
||||
x = 0.0
|
||||
y = 0.0
|
||||
for k in 1 .. 1 << i
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
end
|
||||
a = a - x / y
|
||||
end
|
||||
d = (a1 - a2) / (a - a1)
|
||||
print "%2d %.8f\n" % [i, d]
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
end
|
||||
end
|
||||
|
||||
main()
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
object Feigenbaum1 extends App {
|
||||
val (max_it, max_it_j) = (13, 10)
|
||||
var (a1, a2, d1, a) = (1.0, 0.0, 3.2, 0.0)
|
||||
|
||||
println(" i d")
|
||||
var i: Int = 2
|
||||
while (i <= max_it) {
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for (_ <- 0 until max_it_j) {
|
||||
var (x, y) = (0.0, 0.0)
|
||||
for (_ <- 0 until 1 << i) {
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
val d: Double = (a1 - a2) / (a - a1)
|
||||
printf("%2d %.8f\n", i, d)
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
i += 1
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
object Feigenbaum2 extends App {
|
||||
private val (max_it, max_it_j) = (13, 10)
|
||||
|
||||
private def result = {
|
||||
|
||||
@scala.annotation.tailrec
|
||||
def outer(i: Int, d1: Double, a2: Double, a1: Double, acc: Seq[Double]): Seq[Double] = {
|
||||
@scala.annotation.tailrec
|
||||
def center(j: Int, a: Double): Double = {
|
||||
@scala.annotation.tailrec
|
||||
def inner(k: Int, end: Int, x: Double, y: Double): (Double, Double) =
|
||||
if (k < end) inner(k + 1, end, a - x * x, 1.0 - 2.0 * y * x) else (x, y)
|
||||
|
||||
val (x, y) = inner(0, 1 << i, 0.0, 0.0)
|
||||
if (j < max_it_j) {
|
||||
center(j + 1, a - (x / y))
|
||||
} else a
|
||||
}
|
||||
|
||||
if (i <= max_it) {
|
||||
val a = center(0, a1 + (a1 - a2) / d1)
|
||||
val d: Double = (a1 - a2) / (a - a1)
|
||||
|
||||
outer(i + 1, d, a1, a, acc :+ d)
|
||||
} else acc
|
||||
}
|
||||
|
||||
outer(2, 3.2, 0, 1.0, Seq[Double]()).zipWithIndex
|
||||
}
|
||||
|
||||
println(" i ≈ δ")
|
||||
result.foreach { case (δ, i) => println(f"${i + 2}%2d $δ%.8f") }
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
var a1 = 1
|
||||
var a2 = 0
|
||||
var δ = 3.2.float
|
||||
|
||||
say " i\tδ"
|
||||
|
||||
for i in (2..15) {
|
||||
var a0 = ((a1 - a2)/δ + a1)
|
||||
10.times {
|
||||
var (x, y) = (0, 0)
|
||||
2**i -> times {
|
||||
y = (1 - 2*x*y)
|
||||
x = (a0 - x²)
|
||||
}
|
||||
a0 -= x/y
|
||||
}
|
||||
δ = ((a1 - a2) / (a0 - a1))
|
||||
(a2, a1) = (a1, a0)
|
||||
printf("%2d %.8f\n", i, δ)
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
import Foundation
|
||||
|
||||
func feigenbaum(iterations: Int = 13) {
|
||||
var a = 0.0
|
||||
var a1 = 1.0
|
||||
var a2 = 0.0
|
||||
var d = 0.0
|
||||
var d1 = 3.2
|
||||
|
||||
print(" i d")
|
||||
|
||||
for i in 2...iterations {
|
||||
a = a1 + (a1 - a2) / d1
|
||||
|
||||
for _ in 1...10 {
|
||||
var x = 0.0
|
||||
var y = 0.0
|
||||
|
||||
for _ in 1...1<<i {
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
}
|
||||
|
||||
a -= x / y
|
||||
}
|
||||
|
||||
d = (a1 - a2) / (a - a1)
|
||||
d1 = d
|
||||
(a1, a2) = (a, a1)
|
||||
|
||||
print(String(format: "%2d %.8f", i, d))
|
||||
}
|
||||
}
|
||||
|
||||
feigenbaum()
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
LET maxit = 13
|
||||
LET maxitj = 13
|
||||
LET a1 = 1.0
|
||||
LET d1 = 3.2
|
||||
|
||||
PRINT "Feigenbaum constant calculation:"
|
||||
PRINT
|
||||
PRINT " i d"
|
||||
PRINT "==================="
|
||||
|
||||
FOR i = 2 to maxit
|
||||
LET a = a1 + (a1 - a2) / d1
|
||||
FOR j = 1 to maxitj
|
||||
LET x = 0
|
||||
LET y = 0
|
||||
FOR k = 1 to 2 ^ i
|
||||
LET y = 1 - 2 * y * x
|
||||
LET x = a - x * x
|
||||
NEXT k
|
||||
LET a = a - (x / y)
|
||||
NEXT j
|
||||
LET d = (a1 - a2) / (a - a1)
|
||||
PRINT using "### ##.#########": i, d
|
||||
LET d1 = d
|
||||
LET a2 = a1
|
||||
LET a1= a
|
||||
NEXT i
|
||||
END
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
fn feigenbaum() {
|
||||
max_it, max_itj := 13, 10
|
||||
mut a1, mut a2, mut d1 := 1.0, 0.0, 3.2
|
||||
println(" i d")
|
||||
for i := 2; i <= max_it; i++ {
|
||||
mut a := a1 + (a1-a2)/d1
|
||||
for j := 1; j <= max_itj; j++ {
|
||||
mut x, mut y := 0.0, 0.0
|
||||
for k := 1; k <= 1<<u32(i); k++ {
|
||||
y = 1.0 - 2.0*y*x
|
||||
x = a - x*x
|
||||
}
|
||||
a -= x / y
|
||||
}
|
||||
d := (a1 - a2) / (a - a1)
|
||||
println("${i:2} ${d:.8f}")
|
||||
d1, a2, a1 = d, a1, a
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
feigenbaum()
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
Module Module1
|
||||
|
||||
Sub Main()
|
||||
Dim maxIt = 13
|
||||
Dim maxItJ = 10
|
||||
Dim a1 = 1.0
|
||||
Dim a2 = 0.0
|
||||
Dim d1 = 3.2
|
||||
Console.WriteLine(" i d")
|
||||
For i = 2 To maxIt
|
||||
Dim a = a1 + (a1 - a2) / d1
|
||||
For j = 1 To maxItJ
|
||||
Dim x = 0.0
|
||||
Dim y = 0.0
|
||||
For k = 1 To 1 << i
|
||||
y = 1.0 - 2.0 * y * x
|
||||
x = a - x * x
|
||||
Next
|
||||
a -= x / y
|
||||
Next
|
||||
Dim d = (a1 - a2) / (a - a1)
|
||||
Console.WriteLine("{0,2:d} {1:f8}", i, d)
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
Next
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
import "/fmt" for Fmt
|
||||
|
||||
var feigenbaum = Fn.new {
|
||||
var maxIt = 13
|
||||
var maxItJ = 10
|
||||
var a1 = 1
|
||||
var a2 = 0
|
||||
var d1 = 3.2
|
||||
System.print(" i d")
|
||||
for (i in 2..maxIt) {
|
||||
var a = a1 + (a1 - a2)/d1
|
||||
for (j in 1..maxItJ) {
|
||||
var x = 0
|
||||
var y = 0
|
||||
for (k in 1..(1<<i)) {
|
||||
y = 1 - 2*y*x
|
||||
x = a - x*x
|
||||
}
|
||||
a = a - x/y
|
||||
}
|
||||
var d = (a1 - a2)/(a - a1)
|
||||
System.print("%(Fmt.d(2, i)) %(Fmt.f(0, d, 8))")
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
}
|
||||
}
|
||||
|
||||
feigenbaum.call()
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
def MaxIt = 13, MaxItJ = 10;
|
||||
real A, A1, A2, D, D1, X, Y;
|
||||
int I, J, K;
|
||||
[A1:= 1.; A2:= 0.; D1:= 3.2;
|
||||
Text(0, " i d^m^j");
|
||||
for I:= 2 to MaxIt do
|
||||
[A:= A1 + (A1-A2)/D1;
|
||||
for J:= 1 to MaxItJ do
|
||||
[X:= 0.; Y:= 0.;
|
||||
for K:= 1 to 1<<I do
|
||||
[Y:= 1. - 2.*Y*X;
|
||||
X:= A - X*X;
|
||||
];
|
||||
A:= A - X/Y;
|
||||
];
|
||||
D:= (A1-A2) / (A-A1);
|
||||
Format(2, 0); RlOut(0, float(I));
|
||||
Format(5, 8); RlOut(0, D);
|
||||
CrLf(0);
|
||||
D1:= D;
|
||||
A2:= A1;
|
||||
A1:= A;
|
||||
];
|
||||
]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
maxIt = 13 : maxItj = 13
|
||||
a1 = 1.0 : a2 = 0.0 : d = 0.0 : d1 = 3.2
|
||||
|
||||
print "Feigenbaum constant calculation:"
|
||||
print "\n i d"
|
||||
print "===================="
|
||||
|
||||
for i = 2 to maxIt
|
||||
a = a1 + (a1 - a2) / d1
|
||||
for j = 1 to maxItj
|
||||
x = 0.0 : y = 0.0
|
||||
for k = 1 to 2 ^ i
|
||||
y = 1 - 2 * y * x
|
||||
x = a - x * x
|
||||
next k
|
||||
a = a - x / y
|
||||
next j
|
||||
d = (a1 - a2) / (a - a1)
|
||||
print i using("###"), chr$(9), d
|
||||
d1 = d
|
||||
a2 = a1
|
||||
a1 = a
|
||||
next i
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
fcn feigenbaum{
|
||||
maxIt,maxItJ,a1,a2,d1,a,d := 13, 10, 1.0, 0.0, 3.2, 0, 0;
|
||||
println(" i d");
|
||||
foreach i in ([2..maxIt]){
|
||||
a=a1 + (a1 - a2)/d1;
|
||||
foreach j in ([1..maxItJ]){
|
||||
x,y := 0.0, 0.0;
|
||||
foreach k in ([1..(1).shiftLeft(i)]){ y,x = 1.0 - 2.0*y*x, a - x*x; }
|
||||
a-=x/y
|
||||
}
|
||||
d=(a1 - a2)/(a - a1);
|
||||
println("%2d %.8f".fmt(i,d));
|
||||
d1,a2,a1 = d,a1,a;
|
||||
}
|
||||
}();
|
||||
Loading…
Add table
Add a link
Reference in a new issue