Equação de Lotka-Volterra Competitiva Estocástica

De Física Computacional
Ir para navegação Ir para pesquisar

As Equações de Lotka-Volterra fornecem um modelo para a previsão de sistemas biológicos considerando diversas relações entre populações. Exploraremos no vigente trabalho a relação de competitividade. Dividiremos, para tanto, o trabalho em três partes principais, considerando duas e três populações, mostrando os gráficos de evolução temporal do número de indivíduos de cada espécie e os espaços de fase, e generalizando para N populações.

Equação de Fokker-Planck


Equações para Duas Populações

O modelo logístico utilizado para duas espécies disputando um território pode ser descrito pelo seguinte par de equações:

com e sendo as duas populações consideradas, e , o crescimento inerente per-capita, e , a capacidade de carga e e , o efeito que a espécie um tem na espécie dois e vice-versa.


Equações para Três Populações


Equações para N Populações


using Plots
using Distributions

r = [1,0.72,1.53,1.27]
a = [1 1.09 1.52 0
        0 1 0.44 1.36
         2.33 0 1 0.47
        1.21 0.51 0.35 1]
b = [1, 1.2, 0.8, 1.6] .- 0.5
k = [40, 65, 56, 44]

function f(x)
    return r.*x.*(1 .-(a*x))
end

tmax = 20
dt = 0.0001
L = Int(tmax/dt)
tempo = collect(0:dt:tmax)
normal = Normal(0,sqrt(dt))
  
function stratmatriz(x1,x2,x3,x4)
    x = [x1,x2,x3,x4]
    xlist = Array{Float64}(undef,4, L+1)
    xlist[1,1], xlist[2,1], xlist[3,1], xlist[4,1] = x1,x2,x3,x4
    for t in 1:L
        random = [rand(normal),rand(normal),rand(normal),rand(normal)].*sqrt(dt)
        k1 = f(x)
        k2 = f(x .+ k1*dt/3)
        k3 = f(x .+ (-k1/3 + k2)*dt)
        k4 = f(x .+ (k1 - k2 + k3)*dt)
        
        dx = ((k1 + 3 .*k2 + 3 .*k3 + k4)./8 - 0.5 .*x)*dt + x.*b.*random
        x = x + dx
        xlist[1,t+1], xlist[2,t+1], xlist[3,t+1], xlist[4,t+1] = x[1],x[2],x[3],x[4]
    end
    return xlist
end

result = lvmatriz(0.25,0.25,0.25,0.25)
x1,x2,x3,x4 = collect(result[1,:]),collect(result[2,:]),collect(result[3,:]),collect(result[4,:])
plot(tempo,x1)
plot!(tempo,x2)
plot!(tempo,x3)
plot!(tempo,x4)