Matrix @ref(eq:matex)

\[\begin{equation} L = \begin{pmatrix} 0 & 0 & 0 & 0 & 0 & 0 & b & \\ s_{1} & 0 & 0 & 0 & 0 & 0 & 0 & \\ 0 & s_{2} & 0 & 0 & 0 & 0 & 0 & \\ 0 & 0 & s_{3} & 0 & 0 & 0 & 0 & \\ 0 & 0 & 0 & s_{4} & 0 & 0 & 0 & \\ 0 & 0 & 0 & 0 & s_{5} & 0 & 0 & \\ 0 & t_{1} & t_{2} & t_{3} & t_{4} & s_{6} & 0 & \\ \end{pmatrix} \end{equation}\]

Моделирование сценариев управления численностью популяции H. mantegazzianum

Испльзуем матрицу для стабильной популяции H. mantegazzianum

mat_stable <- read.table("data/matrix_no_v6-v7.tsv", sep="\t", dec=",",
                   head=T)
mat_stable <- as.matrix(mat_stable)
print(as.table(mat_stable), zero.print='.')
##        v1      v2      v3      v4      v5      v6       g
## A       .       .       .       .       .       . 173.000
## B   0.037       .       .       .       .       .       .
## C       .   0.839       .       .       .       .       .
## D       .       .   0.832       .       .       .       .
## E       .       .       .   0.705       .       .       .
## F       .       .       .       .   0.762       .       .
## G       .   0.008   0.053   0.162   0.066   0.022       .

Вычислим ее собственное число и собственные вектора

library("popdemo")
lambda <- eigs(mat_stable, what="lambda")

lambda <- round(lambda, 3)

ss <- eigs(mat_stable, what="ss")
ss <- round(ss ,3)

rv <- eigs(mat_stable, what="rv")
rv <- round(rv, 3)

Относительная скорость роста популяции (собственное число): λ = 1.058

Соотношение возрастных групп (v1v6, g) ss = 0.896, 0.031, 0.025, 0.02, 0.013, 0.009, 0.005

Репродуктивная значимость возрастных групп (v1v6, g) rv = 0.227, 6.503, 7.846, 7.61, 2.876, 0.773, 37.183

Матрица без v7 и v8

mat_no.v6.v7 <- read.table(“data/matrix_no_v6-v7.tsv”, sep=“, dec=”,“, head=T)

mat_no.v6.v7<-as.matrix(mat_no.v6.v7)

eigs(mat_no.v6.v7)

sens_mat_no.v6.v7 <- sens(mat_no.v6.v7) write.table(sens_mat_no.v6.v7, file=“results/sens_mat_no.v6.v7.tsv”, sep=“, row.names = F)

start.vector <- c(10, 0, 0, 0, 0, 0, 0)

project_mat_no.v6.v7<- project(mat_no.v6.v7, start.vector, time = 3)

vec(project_mat_no.v6.v7)[1:3, ]

Вручную умножаем матрицу на вектор

mat_no.v6.v7 %*% start.vector

Симулируем разные негативные воздействия на популяцию

Начнем с уничтожения генеративных растений с разной степенью тщательности

Начальный вектор зададим с соотношением особей, характерным для

сформированной моновидовой заросли на площади 1000 кв. м.

start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000

mat_no.v6.v7 %*% start.vector

Проверим самопальный обсчет матрицы по сравнению с результатами, котоыре

выдает пакет popdemo

Зададим количество циклов n

n = 15

rslt_mat <- as.matrix(start.vector)

for(y in 1:n){ cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) }

project_mat_no.v6.v7<- project(mat_no.v6.v7, start.vector, time = 15)

Проверочка корректности самопального рассчета матрицы

for(k in 1:16){ test <- vec(project_mat_no.v6.v7)[k:k, ] - rslt_mat[,k]
print(test) }

Все ок. Переходим к симуляциям

Внедряем 100 % уничтожение генеративных со первого шага

n = 15

rslt_mat <- as.matrix(start.vector)

for(y in 1:n){ rslt_mat[7,y] <- 0 cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) } # Подведем итоги. На какой год сумма особей всех групп станет равно 0? simulated_m <- as.data.frame(t(rslt_mat)) colnames(simulated_m) <- c(‘v1’, ‘v2’, ‘v3’, ‘v4’, ‘v5’, ‘v6’, ‘g’)

sum_all_stages <- simulated_m %>% mutate(sumVar = rowSums(.[1:7]))

yr <- as.numeric(rownames(sum_all_stages))

sum_all_stages <- cbind.data.frame(yr, sum_all_stages$sumVar) colnames(sum_all_stages) <- c(‘yr’, ‘N’)

ggplot(sum_all_stages, aes(x = yr, y = N)) + geom_line() + geom_point() #

Внедряем 99 % уничтожение генеративных со первого шага Точнее ежегодно

уничтожаем от 99% до 100% генеративных особей случайно kill_qual_options -

вектор, содержащий долю генеративных особей, выживших давших потомство

kill_qual_options <- c(0.01, 0.01)

kill_qual_options <- seq(0, 0.2, 0.01)

n = 100 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { kq <- sample(kill_qual_options,1) rslt_mat[7,y] <- rslt_mat[7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} y = y + 1 } # Подведем итоги. На какой год сумма особей всех групп станет равно 0? simulated_m <- as.data.frame(t(rslt_mat)) colnames(simulated_m) <- c(‘v1’, ‘v2’, ‘v3’, ‘v4’, ‘v5’, ‘v6’, ‘g’)

sum_all_stages <- simulated_m %>% mutate(sumVar = rowSums(.[1:7]))

yr <- as.numeric(rownames(sum_all_stages))

sum_all_stages <- cbind.data.frame(yr, sum_all_stages$sumVar) colnames(sum_all_stages) <- c(‘yr’, ‘N’)

ggplot(sum_all_stages, aes(x = yr, y = N)) + geom_line() + geom_point() #

Построим зависимость: сколько лет уйдет на уничтожение популяции в зависимости

от качества (тщательности) уничтожения генеративных растений

start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000

kill_qual_options <- seq(0, 0.5, 0.01)

for(kq in kill_qual_options){ n = 150 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[7,y] <- rslt_mat[7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }

sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)

ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + labs( x = “Доля выживших генеративных растений”, y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, )

—————

Моделируем уничтожение v2

Построим зависимость: сколько лет уйдет на уничтожение популяции в зависимости

от качества (тщательности) уничтожения генеративных растений

—————

start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000

kill_qual_options <- seq(0, 0.5, 0.01)

for(kq in kill_qual_options){ n = 1000 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[3,y] <- rslt_mat[3,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }

sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)

ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + # xlim(0, 0.18) + labs( x = expression(paste(‘Доля выживших v’[2],’ растений’)), y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, ) # —————

—————

Моделируем уничтожение всех растений с разной эффективностью

Построим зависимость: сколько лет уйдет на уничтожение популяции в зависимости

от качества (тщательности) уничтожения генеративных растений

—————

start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000

kill_qual_options <- seq(0, 0.5, 0.01)

for(kq in kill_qual_options){ n = 1000 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[1:7,y] <- rslt_mat[1:7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }

sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)

ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + xlim(0, 0.2) + ylim(0, 8) + labs( x = expression(paste(‘Доля выживших растений’)), y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, ) # ————— #

```