Taller 02

[P1, 2 punts] Un biòleg ha analitzat el creixement d’una població de bacteris, \(b_n\), durant diversos anys. Per modelar aquest creixement, ha utilitzat un model malthusià amb immigració constant, descrit pel següent càlcul.

n = 0:15
b_n = 1000 * 1.03^n

Traça una gràfica lineal i una gràfica semi-log per visualitzar els punts donats. A quina gràfica els punts apareixen més “colineals”? Per què?

# Definir els valors de n
n <- 0:15

# Calcular els valors de b_n
b_n <- 1000 * 1.03^n

# Crear la gràfica lineal
plot(n, b_n, type = "o", col = "blue", main = "Gràfica Lineal de b_n", xlab = "n", ylab = "b_n")

# Crear la gràfica semi-log
plot(n, log(b_n), type = "o", col = "red", main = "Gràfica Semi-log de b_n", xlab = "n", ylab = "log(b_n)")

la gràfica semi-log té els punts més col·lineals ja que és una funció exponencial i el logaritme d’una funció exponencial es converteix en una línia recta

[P2, 2 punts] Un biòleg està estudiant la concentració d’una substància química en una mostra de teixit després d’administrar-li un fàrmac. La concentració, representada per \(c_n\), segueix un model malthusià amb immigració constant, que ha reflectit al següent càlcul.

n = 0:20
c_n = 50 + 0.75^n * 150

Troba els paràmetres del model, i digues quina és l’equació recurrent.

# Paràmetres del model
r <- 0.75
I <- 50
n <- 20  


# Vector per emmagatzemar els valors de c_n
c_n <- numeric(n + 1)
c_n[1] <- 200  

# Càlcul dels valors de c_n
for (i in 1:n) {
  c_n[i + 1] <- r * c_n[i] + I
}

# Mostrar els resultats
print(c_n)
##  [1] 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200
## [20] 200 200

r és la taxa de creixement (0.75). I és la immigració constant (50). n és el nombre de passos que vols calcular. c_n és el vector que emmagatzema els valors de la concentració a cada pas

[P3, 1 punt] Troba els coeficients de l’equació malthusiana matricial que representa l’evolució anual de la població de gavines adultes.

#dades inicials
800
## [1] 800
200
## [1] 200
#coeficients 
a <- 0.85
b <- 0.70
c <- 0.36
d <-0
# Definir els coeficients de la matriu
A <- matrix(c(0.85, 0.70, 3.6, 0), nrow = 2, byrow = TRUE)

# Nombre inicial de gavines adultes i cries
x0 <- c(800, 600)

# Nombre d'anys a simular
n_years <- 10

# Crear una matriu per emmagatzemar els resultats
results <- matrix(0, nrow = n_years + 1, ncol = 2)
results[1, ] <- x0

# Simulació de la població durant n_years
for (i in 1:n_years) {
  results[i + 1, ] <- A %*% results[i, ]
}
# Mostrar els resultats
colnames(results) <- c("Adultas", "Crías")
rownames(results) <- 0:n_years
print(results)
##      Adultas      Crías
## 0     800.00     600.00
## 1    1100.00    2880.00
## 2    2951.00    3960.00
## 3    5280.35   10623.60
## 4   11924.82   19009.26
## 5   23442.58   42929.34
## 6   49976.73   84393.28
## 7  101555.51  179916.23
## 8  212263.55  365599.85
## 9  436343.91  764148.77
## 10 905796.47 1570838.09

[P4, 1 punt] Diagonalitza la matriu que defineix el model malthusià amb l’instrucció eigen(…) de R. Demostra que \((1, 1.74)^t\) és un vector propi, i troba l’altre.

# Definir la matriu A
A <- matrix(c(0.85, 0.70, 3.6, 0), nrow = 2, byrow = TRUE)

# Calcular els valors i vectors propis
eig <- eigen(A)

# Mostrar els valors i vectors propis
eig$values
## [1]  2.068358 -1.218358
eig$vectors
##           [,1]       [,2]
## [1,] 0.4981739 -0.3205717
## [2,] 0.8670772  0.9472243
# Definir el vector propi
v <- c(-1, 3)

# Calcular A * v
Av <- A %*% v

# Calcular lambda * v (on lambda és el valor propi corresponent)
lambda <- eig$values[1]  # Suposant que el primer valor propi correspon a aquest vector
lambda_v <- lambda * v

# Comprovar si A * v és igual a lambda * v
all.equal(Av, lambda_v)
## [1] "Attributes: < Modes: list, NULL >"                   
## [2] "Attributes: < Lengths: 1, 0 >"                       
## [3] "Attributes: < names for target but not for current >"
## [4] "Attributes: < current is not list-like >"            
## [5] "target is matrix, current is numeric"
# L'altre vector propi
other_vector <- eig$vectors[, 2]  
other_vector
## [1] -0.3205717  0.9472243

[P5, 1 punt] En aquestes condicions, la població de gavines adultes tendeix a extingir-se?

# Definir la matriu A
A <- matrix(c(0.85, 0.70, 3.6, 0), nrow = 2, byrow = TRUE)

# Calcular els valors i vectors propis
eig <- eigen(A)

# Mostrar los valores propios
eig$values
## [1]  2.068358 -1.218358
# Mostrar els vectors propis
eig$vectors
##           [,1]       [,2]
## [1,] 0.4981739 -0.3205717
## [2,] 0.8670772  0.9472243
# Verificar el valor propi dominant
dominant_eigenvalue <- max(abs(eig$values))
# Determinar si la població tendeix a extingir-se
if (dominant_eigenvalue > 1) {
  cat("La població de gavines adultes no tendeix a extingir-se. S'espera que creixi amb el temps.\n")
} else {
  cat("La població de gavines adultes tendeix a extingir-se.\n")
}
## La població de gavines adultes no tendeix a extingir-se. S'espera que creixi amb el temps.

Atès que el valor propi dominant és 2.06, més gran que 1, la població de gavines adultes no només es mantindrà, sinó que creixerà amb el temps.

[P6, 1 punt] Segons el model, i en absència de verdures, quin percentatge anual creix/decreix la quantitat de conills a la Granja Ecològica de Montclar?

#Definir la matriu D
D <- matrix(c(0.95 + 0.1i, 0, 0, 0.95 - 0.1i), nrow = 2, byrow = TRUE)

# Calcular els valors propis
eig_values <- eigen(D)$values

#Calcular la magnitud del valor propi dominant
dominant_eigenvalue <- max(Mod(eig_values))

# Calcular el percentatge de decreixement
percentage_decrease <- (1 - dominant_eigenvalue) * 100

# Calcular el percentatge de creixement
percentage_increase <- (dominant_eigenvalue - 1) * 100

# Mostrar els resultats 
cat("El percentatge anual de decreixement de la població de conills és aproximadament:", percentage_decrease, "%\n")
## El percentatge anual de decreixement de la població de conills és aproximadament: 4.475134 %
cat("El percentatge anual de creixement de la població de conills seria aproximadament:", percentage_increase, "%\n")
## El percentatge anual de creixement de la població de conills seria aproximadament: -4.475134 %

per tant el percentatge de creixement és 4.475134% i el de decreixement -4.475134%

[P7, 1 punt] Suposem que al principi hi havia 500 conills i que en aquell moment la granja tenia 700 quilograms de verdures. Quants quilograms de verdures quedarien a la granja després de 4 anys?

# Definir les matrius P i D
P <- matrix(c(1, 1, 1i, -1i), nrow = 2, byrow = TRUE)
D <- matrix(c(0.95 + 0.1i, 0, 0, 0.95 - 0.1i), nrow = 2, byrow = TRUE)

# Calcular la inversa de P
P_inv <- solve(P)

# Nombre inicial de conills i verdures
x0 <- c(500, 700)

# Nombre d'anys a simular
n_years <- 4

# Crear una matriu per emmagatzemar els resultats
results <- matrix(0, nrow = n_years + 1, ncol = 2)
results[1, ] <- x0
# Simulació de la població durant n_years
for (i in 1:n_years) {
  results[i + 1, ] <- Re(P %*% (D %*% (P_inv %*% results[i, ])))
}

# Mostrar els resultats
colnames(results) <- c("Conills", "Verdures")
rownames(results) <- 0:n_years
print(results)
##    Conills Verdures
## 0 500.0000 700.0000
## 1 545.0000 615.0000
## 2 579.2500 529.7500
## 3 603.2625 445.3375
## 4 617.6331 362.7444
# Quantitat de verdures després de 4 anys
verdures_despres_4_anys <- results[5, 2]
cat("Quantitat de verdures després de 4 anys:", verdures_despres_4_anys, "kg\n")
## Quantitat de verdures després de 4 anys: 362.7444 kg

la quantitat de verdures que s’espera després de 4 anys és de 362.7444 kg

[P8, 1 punt] Suposem que al principi hi havia 500 conills i que en aquell moment la granja tenia 700 quilograms de verdures. Calcula el valor \(v_{70}\) (la quantitat de verdures 70 anys després) i comprova que has obtingut un nombre negatiu. Quina és la interpretació de tenir un valor negatiu en aquest context? Quines conclusions podem extreure sobre la sostenibilitat de la granja a llarg termini?

# Definir les matrius P i D
P <- matrix(c(1, 1, 1i, -1i), nrow = 2, byrow = TRUE)
D <- matrix(c(0.95 + 0.1i, 0, 0, 0.95 - 0.1i), nrow = 2, byrow = TRUE)

# Calcular la inversa de P
P_inv <- solve(P)

# Nombre inicial de conills i verdures
x0 <- c(500, 700)

# Nombre d'anys a simular
n_years <- 70

# Crear una matriu per emmagatzemar els resultats
results <- matrix(0, nrow = n_years + 1, ncol = 2)
results[1, ] <- x0
# Simulació de la població durant n_years
for (i in 1:n_years) {
  results[i + 1, ] <- Re(P %*% (D %*% (P_inv %*% results[i, ])))
}

# Mostrar els resultats
colnames(results) <- c("Conills", "Verdures")
rownames(results) <- 0:n_years
print(results)
##          Conills     Verdures
## 0   500.00000000  700.0000000
## 1   545.00000000  615.0000000
## 2   579.25000000  529.7500000
## 3   603.26250000  445.3375000
## 4   617.63312500  362.7443750
## 5   623.02590625  282.8438437
## 6   620.15899531  206.3990609
## 7   609.79095164  134.0632084
## 8   592.70772489   66.3809528
## 9   569.71043393    3.7911326
## 10  541.60402550  -53.3694674
## 11  509.18687748 -104.8613966
## 12  473.24139395 -150.5370145
## 13  434.52562281 -190.3343031
## 14  393.76591135 -224.2701503
## 15  351.65060076 -252.4332339
## 16  308.82474733 -274.9766323
## 17  265.88584674 -292.1102754
## 18  223.38052686 -304.0933463
## 19  181.80216589 -311.2267317
## 20  141.58938443 -313.8456117
## 21  103.12535404 -312.3122695
## 22   66.73785938 -307.0091915
## 23   32.70004727 -298.3325178
## 24    1.23179312 -286.6858967
## 25  -27.49838620 -272.4747811
## 26  -53.37094501 -256.1012035
## 27  -76.31251810 -237.9590488
## 28  -96.29279708 -218.4298445
## 29 -113.32114168 -197.8790726
## 30 -127.44299185 -176.6530048
## 31 -138.73614274 -155.0760554
## 32 -147.30694114 -133.4486383
## 33 -153.28645792 -112.0455123
## 34 -156.82668625  -91.1145909
## 35 -158.09681103  -70.8761927
## 36 -157.27958975  -51.5227020
## 37 -154.56788046  -33.2186079
## 38 -150.16134723  -16.1008895
## 39 -144.26336882   -0.2797103
## 40 -137.07817140   14.1606121
## 41 -128.80820162   27.1603987
## 42 -119.65175168   38.6831989
## 43 -109.80084420   48.7142141
## 44  -99.43938058   57.2585878
## 45  -88.74155277   64.3395965
## 46  -77.87051548   69.9967719
## 47  -66.97731252   74.2839849
## 48  -56.20004840   77.2675169
## 49  -45.66329429   79.0241459
## 50  -35.47771499   79.6392680
## 51  -25.73990243   79.2050761
## 52  -16.53239970   77.8188126
## 53   -7.92389846   75.5811119
## 54    0.03040765   72.5944462
## 55    7.28833189   68.9616831
## 56   13.82008360   64.7847657
## 57   19.60755600   60.1635191
## 58   24.64353010   55.1945875
## 59   28.93081235   49.9705052
## 60   32.48132225   44.5788987
## 61   35.31514600   39.1018215
## 62   37.45957085   33.6152158
## 63   38.94811389   28.1884979
## 64   39.81955799   22.8842617
## 65   40.11700626   17.7580928
## 66   39.88696523   12.8584875
## 67   39.17846572    8.2268666
## 68   38.04222909    3.8976767
## 69   36.52988531   -0.1014300
## 70   34.69324804   -3.7493471
# Quantitat de verdures després de 70 anyss
verdures_despres_70_anys <- results[71, 2]
cat("Quantitat de verdures després de 70 anys:", verdures_despres_70_anys, "kg\n")
## Quantitat de verdures després de 70 anys: -3.749347 kg

la quantitat de verdures després de setanta anys és de -3.79347 kg