# Quickstart

This vignette illustrates the basic use of `demovuln`.

    library(demovuln)

We define a simple two-stage projection matrix. Columns are source stages at time `t`, and rows are destination stages at time `t + 1`.

    A <- matrix(
      c(0.0, 0.4,
        2.0, 0.7),
      nrow = 2,
      byrow = FALSE
    )

    A
    #>      [,1] [,2]
    #> [1,]  0.0  2.0
    #> [2,]  0.4  0.7

    model <- matrix_population_model(
      A,
      adult_stages = 2,
      juvenile_stages = 1
    )

We simulate a perturbation affecting adult survival.

    sim <- simulate_dynamics(
      model,
      target = "adult_survival",
      magnitude = 0.25,
      duration = 1,
      period = 3,
      t_max = 50,
      recovery_steps = 10
    )

    sim$reduction
    #> [1] 95.95533

    plot(
      sim$baseline_abundance,
      type = "l",
      lwd = 2,
      xlab = "Time step",
      ylab = "Relative population size",
      ylim = range(c(sim$baseline_abundance, sim$abundance))
    )

    lines(sim$abundance, lwd = 2, lty = 2)

    legend(
      "topright",
      legend = c("Baseline", "Perturbed"),
      lty = c(1, 2),
      lwd = 2,
      bty = "n"
    )