34 lines
984 B
Scala
34 lines
984 B
Scala
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") }
|
|
|
|
}
|