Я пытаюсь воспроизвести два приведенных ниже графика, которые представляют собой профили температуры и концентрации в зависимости от времени. Я проверил свой метод и код миллион раз, но не могу найти ошибки в нем, но я не могу воспроизвести эти графики. Все значения - это константы, кроме CA и T. Может быть, проблема с точностью odeint от scipy? Любая помощь приветствуется!Ошибка в использовании scipy odeint для системы ODE
двух уравнений заключаются в следующем:
дк/дт = д * (CAI - СА)/В - к * СА
дТ/дт = ш * (Тi - Т)/(V р) + d_HR к СА/(р С) + UA * (Тс - Т)/(V р С)
код:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
def ODESolve(y, t, q, CAi, V, k0, w, Ti, p, dH_R, C, UA, Tc):
CA, T = y
k = k0*np.exp(8750*1/T)
dydt = [q*(CAi - CA)/V - k*CA, w*(Ti - T)/(V*p) + \
dH_R*k*CA/(p*C) + UA*(Tc - T)/(V*p*C)]
return dydt
q = 100
CAi = 1.0
V = 100
p = 1000
C = .239
dH_R = 5*(10**4)
k0 = 7.2*(10**10)
UA = 5*10**4
CA0 = .5
T0 = 350
Ti = T0
w = p*q
y0 = [CA0, T0]
t = np.linspace(0, 20, 100)
Tc = 305
sol1 = odeint(ODESolve, y0, t, args = (q, CAi, V, k0, w, Ti, p, dH_R, C, UA, Tc))
Tc = 300
sol2 = odeint(ODESolve, y0, t, args = (q, CAi, V, k0, w, Ti, p, dH_R, C, UA, Tc))
Tc = 290
sol3 = odeint(ODESolve, y0, t, args = (q, CAi, V, k0, w, Ti, p, dH_R, C, UA, Tc))
plt.figure(1)
plt.plot(t, sol1[:,0], label = 'Tc = 305')
plt.plot(t, sol2[:,0], label = 'Tc = 300')
plt.plot(t, sol3[:,0], label = 'Tc = 290')
plt.ylim(ymax = 1, ymin = 0)
plt.title ('CA(t)')
plt.legend(loc = 'best')
plt.figure(2)
plt.plot(t, sol1[:,1], label = 'Tc = 305')
plt.plot(t, sol2[:,1], label = 'Tc = 300')
plt.plot(t, sol3[:,1], label = 'Tc = 290')
plt.ylim(ymax = 450, ymin = 300)
plt.legend(loc = 'best')
plt.title ('T(t)')
plt.show()
Вот что графики должны производить:
А вот выход из моего кода выше:
Дважды проверьте эту формулу: 'k = k0 * np.exp (8750 * 1/T)'. В полном раскраске в темноте я изменил знак внутри экспоненты, поэтому «k = k0 * np.exp (-8750 * 1/T)» и получил результаты, похожие на ожидаемые графики, которые вы показать. –
Ты бог ... Это совершенно верно! Вау, какое облегчение. Если вы представите это в качестве ответа, я был бы более чем счастлив представить ваш ответ в качестве ответа. Благодаря! –
ОК, ответ отправлен. –