# Load the deSolve packagelibrary(deSolve)# Define the SIR modelsir_model <-function(time, state, parameters) {with(as.list(c(state, parameters)), { dS <--beta * S * I dI <- beta * S * I - gamma * I dR <- gamma * Ireturn(list(c(dS, dI, dR))) })}# Initial state valuesinitial_state <-c(S =0.99, I =0.01, R =0.0)# Parametersparameters <-c(beta =0.3, gamma =0.1)# Time pointstimes <-seq(0, 1600, by =1)# Solve the system of ODEsstart_time <-Sys.time()for(i in1:100) { output <-ode(y = initial_state, times = times, func = sir_model, parms = parameters)}end_time <-Sys.time()r_runtime <- end_time - start_timeprint("Runtime for deSolve in R:")
[1] "Runtime for deSolve in R:"
print(r_runtime)
Time difference of 1.270186 secs
import numpy as npfrom scipy.integrate import odeintimport time# Define the SIR modeldef sir_model(y, t, beta, gamma): S, I, R = y dS =-beta * S * I dI = beta * S * I - gamma * I dR = gamma * Ireturn [dS, dI, dR]# Initial state valuesinitial_state = [0.99, 0.01, 0.0]# Parametersbeta =0.3gamma =0.1# Time pointstimes = np.linspace(0, 1600, 1601)# Solve the system of ODEsstart_time = time.time()for i inrange(0, 100): output = odeint(sir_model, initial_state, times, args=(beta, gamma))end_time = time.time()python_runtime = end_time - start_timeprint("Runtime for scipy.integrate.odeint in Python:")