Cobweb plot

R
Published

March 31, 2026

https://chatgpt.com/share/69cb923e-49d8-8384-b1a2-ac1827402412

logistic_map <- function(x0, r, n) {
  result <- double(n + 1)
  result[1] <- x0
  for (i in 1:n) {
    result[i + 1] <- r * result[i] * (1 - result[i])
  }
  result
}


n <- 100

ll <- logistic_map(0.5, 2.7, n)

x <- rep(ll, each = 2)
y <- c(0, x[-length(x)])

plot(x, y, type = 'l', xlim = c(0, 1), ylim = c(0, 1))

logistic_map <- function(x0, r, n) {
  result <- numeric(n + 1)
  result[1] <- x0
  for (i in 1:n) {
    result[i + 1] <- r * result[i] * (1 - result[i])
  }
  result
}

# parameters
n <- 100
r <- 3.9
ll <- logistic_map(0.5, r, n)

# function
f <- function(x) r * x * (1 - x)

# base plot
curve(f(x), from = 0, to = 1, col = "blue", lwd = 2,
      xlim = c(0, 1), ylim = c(0, 1))
abline(0, 1, lty = 2)  # diagonal

# cobweb
for (i in 1:n) {
  # vertical line
  segments(ll[i], ll[i], ll[i], ll[i + 1], col = "red")
  
  # horizontal line
  segments(ll[i], ll[i + 1], ll[i + 1], ll[i + 1], col = "red")
}