es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Hola, necesito aplicar un valor creciente a t para poder ponerlo en A11. Debería ser desde 0 hasta 1000 en incrementos de uno. Python.

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

def func(t,y,A11,A12,A13,A21,A22,A31,A33,D): # sistema de EDO
x,l,z = y
dx1dt = A11x – A12l + A13z + D
dx2dt = A21
x + A22l
dx3dt = A31
x + A33*z

return np.array([dx1dt,dx2dt,dx3dt])

h = 1
t_eval = np.arange(0,1000+h,h)
for t in range (0, 1001): # la sección que necesita correcciones
t = 1
A11 = (0.0211
h(400 – t) + 0.211h*(t – 400)) # el valor de t se supone que va en esta ecuación
A12 = 1088/87500
A13 = 7/200000
A21 = 20/1800
A22 = -20/700
A31 = 7/1800
A33 = – 7/200000
D = 49.3

x0 = 0
y0 = 0
z0 = 0

init_cond = np.array([x0, y0, z0])
sol = solve_ivp(func,[t_eval[0],t_eval[-1]], init_cond, t_eval=t_eval, args=(A11,A12,A13,A21,A22,A31,A33,D))

plt.figure(figsize=(10, 10))
plt.subplot(211)
plt.plot(sol.t, sol.y[0], label=’Sangre’)
plt.plot(sol.t, sol.y[1], label=’Tejido’)
plt.plot(sol.t, sol.y[2], label=’Hueso’)
plt.xlabel(‘Tiempo (días)’)
plt.ylabel(‘Cantidad de Plomo (microgramos)’)
plt.title(‘Cinética del Plomo en el Cuerpo’)
plt.legend()
plt.tight_layout()
plt.show()

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para incrementar correctamente el valor de t en el código, reemplace el bucle for por el siguiente:

    for i,t in enumerate(t_eval):
        if i == 0:
            continue
        A11 = (0.0211*h*(400 - t) + 0.211*h*(t - 400))
        sol = solve_ivp(func,[t_eval[i-1],t], sol.y[:,i-1], t_eval=[t], args=(A11,A12,A13,A21,A22,A31,A33,D))
    

    Esto recorrerá cada valor en t_eval, excepto el primer valor, y utilizará el cálculo anterior de sol como condición inicial para el siguiente cálculo de solve_ivp. El nuevo valor de A11 se calculará en función del valor actual de t. Esto debería producir el modelo deseado con incrementos de tiempo correctos.

Comments are closed.