Umweltsystemmodellierung (Subject) / Termin 7 Tutoratsaufgaben (Lesson)

There are 3 cards in this lesson

Termin 7

This lesson was created by Ak123.

Learn lesson

  • 1. Änderung der Stadienverteilung von Jahr zu Jahr ## Die Datei „Loggerhead_matrix.txt“ enthält die Übergangsmatrix des Stadienmodells der Unechten Karettschildkröte (Caretta caretta) aus Crouse et al. (1987). # Lesen Sie die Übergangsmatrix aus der Datei ein. Hinweise: Benutzen Sie dazu read.table, da die Tabelle keine Spaltennamen besitzt! Wandeln Sie den Dataframe mit as.matrix in eine Matrix um. Berechnen Sie ausgehend von einer Population mit 10000 Eiern (Stadium 1) und 0 Individuen für alle weiteren Lebensstadien die Populationsentwicklung der nächsten 80 Jahre. Multiplizieren Sie dazu die Übergangsmatrix mit dem Vektor der Individuenzahlen (Befehl für Matrixmultiplikation: %*%). Stellen Sie mit dem Befehl barplot die Stadienverteilung der Jahre 1, 10 und 20 als Balkendiagramme in einem Grafikfenster mit 3 Plots dar. setwd("/home/gita/Dokumente/Lehre/USM_2013/Einzeltermine/Termin7_Stadienmodelle/Aufgaben") # Aufgabe 1# Änderung der Stadienverteilungtransmatrix <- as.matrix(read.table("Loggerhead_matrix.txt")) nstages <- nrow(transmatrix) # Populationsstruktur zum Zeitpunkt Null:N0_vec <- c(10000, numeric(nstages-1)) # Berechne die Populationsstruktur der nächsten acht Jahre durch Multiplikation mit der Übergangsmatrix:par(mfrow=c(1, 3)) # Aufteilung des Grafikfensters in 1x3 Plotsbarplot(N0_vec, main="Jahr 1") # Plot für Jahr 1N_old <- N0_vecfor (i in 2:81){N_new <- transmatrix %*% N_old # Neue Populationsstrukturif (i == 10 | i==20) barplot(as.numeric(N_new), main=paste("Jahr", i))N_old <- N_new}par(mfrow=c(1, 1)) # Zurücksetzen der Grafikparameter
  • 2. Dynamik der Gesamtpopulation und der Nettoreproduktionsrate ## Stellen Sie für die ganzen 80 Jahre aus Aufgabe 1 den zeitlichen Verlauf der Individuenzahlen der sieben Lebensstadien in einer Grafik mit sieben verschiedenfarbigen Kurven dar. Plotten Sie auch die Größe der Gesamtpopulation (Nt = Summe aller Lebensstadien) im Verlauf der Zeit. Berechnen Sie die Nettoreproduktionsrate (λ = Nt+1 / Nt) für jedes Jahr, und stellen Sie den zeitlichen Verlauf der Nettoreproduktionsrate grafisch dar. # Dynamik der Gesamtpopulation und der Nettoreproduktionsrate # Populationsentwicklung der nächsten 80 Jahre (nochmal, diesmal speichern wir die Daten in einer Matrix)Jahre <- 80popmatrix <- matrix(0, nrow=Jahre+1, ncol=length(N0_vec))popmatrix[1, ] <- N0_vecfor (i in 1:Jahre) {popmatrix[i+1, ] <- transmatrix %*% popmatrix[i, ]}# Grafik mit einzelnen Stadien in verschiedenen Farben:plot(0:Jahre, popmatrix[, 1], xlab="Jahr", ylab="Individuen", type="l", ylim=c(0, max(popmatrix)))for (i in 2:ncol(popmatrix)) lines(0:Jahre, popmatrix[, i], col=i)legend("topright", legend=1:7, title="Stadium:", col=1:7, lty=1) # Gesamtpopulation: Summe aller Stadienpopsum <- numeric(Jahre+1)for (i in 1:nrow(popmatrix)) popsum[i] <- sum(popmatrix[i, ])# Grafik:plot(0:Jahre, popsum, xlab="Jahr", ylab="Individuen", type="l") # Nettoreproduktionsrate für jedes Jahr:obs.lambda <- popsum[-1]/popsum[-length(popsum)]# Grafik:plot(1:Jahre, obs.lambda, xlab="Jahr", ylab="Nettoreproduktionsrate")
  • 3. Finite Wachstumsrate und stabile Stadienverteilung Berechnen Sie die finite Wachstumsrate und die stabile Stadienverteilung der Schildkrötenpopulation. Die finite Wachstumsrate ist der größte Eigenwert der Übergangsmatrix, die stabile Stadienverteilung der zugehörige Eigenvektor. Die Eigenwerte und Eigenvektoren der Matrix erhalten Sie mit dem Befehl eigen, den reellen Teil der Zahlen (im Output von eigen) erhält man mit dem Befehl Re. a) Vergleichen Sie die so berechneten Werte mit der Stadienverteilung und Nettoreproduktionsrate nach 100 Jahren aus Aufgabe 2. b) Betrachten Sie die anderen Eigenwerte und Eigenvektoren im Output von eigen: Wodurch unterscheiden sich der erste Eigenwert und erste Eigenvektor maßgeblich von den weiteren? # Aufgabe 3# Finite Wachstumsrate und stabile Stadienverteilung # Finde den dominanten (rechten) Eigenwert und den zugehörigen Eigenvektor der Übergangsmatrixeig.trans <- eigen(transmatrix)lambda <- Re(eig.trans$value[1]) # Finite Wachstumsratestable <- Re(eig.trans$vector[, 1])/sum(Re(eig.trans$vector[, 1])) # stabile Stadienverteilung lambda == obs.lambda[Jahre] # ist "FALSE", aber die Werte werden identisch angezeigtall.equal(lambda, obs.lambda[Jahre], tolerance=1e-6) # mit all.equal kann man testen, ob Werte nahezu identisch sind; es hätte aber auch eine Betrachtung der Werte gereicht all.equal(popmatrix[Jahre+1, ] / sum(popmatrix[Jahre+1, ]), stable, tolerance=1e-6) # Antworten:# a) die Werte sind (nahezu) identisch;# b) alle anderen außer dem ersten Eigenwert / Eigenvektor sind komplexe Zahlen mit imaginärem Teil, nur der erste ist eine reelle Zahl (bzw. reeller Vektor) bei der der zweite Teil immer +0.0000000i ist