2

Umweltsystemmodellierung (Subject) / Termin 6 Tutoratsaufgaben (Lesson)

Termin 6 Tutoratsaufgaben

This lesson was created by Ak123.

Learn lesson

  • 1. Wachstum mit temperaturabhängiger Rate Die Wachstumsrate einer zeitdiskret logistisch wachsenden Fliegen-Population ist von der Umgebungstemperatur abhängig. Der diskrete Wachstumsfaktor rd bei sehr kleiner Populationsdichte steigt mit der Temperatur T (in °C) nach der Formel rd = 0.05 T + 1 Ändern Sie die Funktion „logfun“ aus der Vorlesung so, dass sie für eine gegebene Temperatur T, einen Anfangswert der Population N0 und eine Habitatkapazität K die Populationsdynamik über t Zeitschritte berechnet. Erzeugen Sie einen Vektor mit Temperaturen von 10 bis 35°C in Schritten von 5°C. Wenden Sie die Funktion auf alle Werte des Temperaturvektors an. Benutzen Sie für die übrigen Parameter die folgenden Werte: N0 10 Individuen K 100 Individuen t 50 Zeitschritte Stellen Sie die resultierenden Populationsdynamiken in einer Grafik mit je einem Plot pro Temperaturstufe dar. # Wachstum einer Fliegen-Population mit temperaturabhängigem r_d # Funktion des zeitdiskreten logistischen Wachstums bei gegebener Temperatur:logwachstum_temp <- function(N0, Temp, K, schritte){output <- numeric(schritte)output[1] <- N0rd <- 1 + 0.05*Temp # Berechne rd aus der Temperaturfor (t in 1:(length(output)-1)){output[t+1] <- output[t]+output[t]*rd*(1-output[t]/K)}return(output)} Temp <- seq(from=10, to=35, by=5) # Temperatur-Vektorzeit <- 50 # Zahl der Zeitschritteanfang <- 10 # Anfangswert N0 der Populationgrenze <- 100 # Habitatkapazität K oldpar <- par() # Speichern der Grafikparameter, um sie später zurückzusetzenpar(mfrow=c(2, 3), mar=c(2, 2, 4, 2), oma=c(3, 3, 0, 0)) # Vorbereitung der Grafikfor (i in Temp){ # Schleife über alle Temperaturendynamik <- logwachstum_temp(N0=anfang, Temp=i, K=grenze, schritte=zeit)plot(1:zeit, dynamik, type="l", xlab="", ylab="", main=paste(i, "°C"))}mtext("Zeit", side=1, line=1, outer=T) # Gemeinsame Achsenbeschriftung für alle Plotsmtext("Populationsdichte", side=2, line=1, outer=T)par(oldpar) # Grafikparameter auf Standardwerte zurücksetzen (damit der nächste Plot wieder normal aussieht)
  • 2. Gauses Paramecium-Experiment Die Datei „Gause_Paramecium_aurelia.csv“ enthält einen Datensatz des russischen Biologen Georgy Gause, der in den 1930er Jahren Laborexperimente zur Populationsdynamik und Konkurrenz von Pantoffeltierchen (Einzeller der Gattung Paramecium) durchführte. Der Datensatz besteht aus den Zeitreihen von drei Replikaten des Versuchs, die zu Beginn mit jeweils zwei Individuen pro 0.5 ml Nährmedium angesetzt wurden. a) Lesen Sie die Daten ein. Erzeugen Sie eine Grafik des zeitlichen Verlaufs der Populationsdichten (alle drei Replikate in verschiedenen Farben in einem Plot). b) Nehmen Sie an, dass die Population zeitdiskretes logistisches Wachstum zeigt[1]. Berechnen Sie für alle drei Replikate für jeden Zeitschritt die pro-Kopf-Änderung der Populationsdichte, (Nt+1 – Nt) / Nt. Plotten Sie die pro-Kopf-Änderung gegen die Populationsdichte (auch hier alle drei Replikate in einem Plot). Bestimmen Sie durch eine lineare Regression durch die Datenpunkte die Parameter des logistischen Modells, rd und K. Fügen Sie die Gerade des linearen Modells zur Grafik hinzu. c) Berechnen Sie die durch das logistische Modell vorhergesagte Populationsdynamik mit den in Aufgabe b) bestimmten Parameterwerten und N0=2. Erzeugen Sie nochmal die Grafik aus Aufgabe a) und fügen Sie die Modellvorhersage als Linie hinzu # Gauses Paramecium-Experiment # a)paramecium <- read.csv("Gause_Paramecium_aurelia.csv")attach(paramecium) # Populationsdichten über Zeit auftragen:plot(Population1~Day, xlab="Tag", ylab="Populationsdichte")points(Day, Population2, col="red")points(Day, Population3, col="blue") # b)# Pro-Kopf-Änderung berechnen:wachstum1 <- (Population1[-1]-Population1[-length(Population1)])/Population1[-length(Population1)]wachstum2 <- (Population2[-1]-Population2[-length(Population2)])/Population2[-length(Population2)]wachstum3 <- (Population3[-1]-Population3[-length(Population3)])/Population3[-length(Population3)]# Werte aller drei Populationen zu einem Vektor verketten:wachstum_alle <- c(wachstum1, wachstum2, wachstum3)# Dasselbe mit den Populationsdichten:# (Der letzte Wert jedes Vektors wird entfernt, da die Pro-Kopf-Änderung auch einen Wert weniger hat)pop_alle <- c(Population1[-length(Population1)], Population2[-length(Population2)], Population3[-length(Population3)])# Plot der Pro-Kopf-Änderung über Populationsdichte:plot(pop_alle, wachstum_alle) # Lineare Regression:linmodel <- lm(wachstum_alle~pop_alle)summary(linmodel)abline(linmodel) # Gerade zum Plot hinzufügen # Parameter des logistischen Modells berechnen:rd_max <- linmodel$coefficients[1] # rd_max ist der y-Achsenabschnitt des linearen ModellsK <- -rd_max/linmodel$coefficients[2] # K ist der Schnittpunkt mit der x-Achse, der sich aus y-Achsenabschnitt und Steigung berechnen lässt # c)# Funktion für zeitdiskretes logistisches Wachstum:logwachstum <- function(N0, rd, K, schritte){output <- numeric(schritte)output[1] <- N0for (t in 1:(length(output)-1)){output[t+1] <- output[t]+output[t]*rd*(1-output[t]/K)}return(output)} # Modellvorhersage:vorhersage <- logwachstum(N0=2, rd=rd_max, K=K, schritte=length(Day)) # Grafik mit Daten und Vorhersage:plot(Population1~Day, xlab="Tag", ylab="Populationsgröße")points(Day, Population2, col="red")points(Day, Population3, col="blue")lines(Day, vorhersage) detach(paramecium)