У меня есть модель двух связанных ODE [dXdt, dVdt] с некоторыми параметрами (rho, F1, ...), которые я хочу решить, используя odeint из Scipy внутри класса. Когда я попытался, я получил AttributeError, как вы можете видеть здесь:
File "C:/Users/Asus/Desktop/Mixer_model.py", line 20, in Mixer_model
dXdt = (1/(self.rho*Z[1]))*(self.F1*(self.x1-Z[0]) + self.F2*(self.x2-Z[0]))
AttributeError: 'numpy.ndarray' object has no attribute 'rho'
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
class Mixer_class:
def __init__(self, rho, F1, F2, F, x1,x2):
self.rho = rho
self.F1 = F1
self.F2 = F2
self.F = F
self.x1 = x1
self.x2 = x2
def Mixer_model(self, Z):
dXdt = (1/(self.rho*Z[1]))*(self.F1*(self.x1-Z[0]) + self.F2*(self.x2-Z[0]))
dVdt = (1/self.rho)*(self.F1 + self.F2 - self.F)
return [dXdt, dVdt]
t = np.arange(0,650, 22.5)
# initial condition
V0 = 0.75 # m^3
x0 = 0.95
Z0 = [x0, V0]
# ODE solve
Vx = odeint(Mixer_model,Z0,t)
plt.plot(t,Vx[:,0],'ko--',linewidth = 1.5)
plt.plot(t,Vx[:,1],'cs-',linewidth = 1.5)
plt.ylabel('V(t) and X(t)')
plt.xlabel('Time(sec)')
plt.show()
Mix = Mixer_class(1000, 12.5, 6.7, 3.87, 0.42, 0.58)
Когда я запускаю код, я получаю следующий атрибут attributeError:
File "C:/Users/Asus/Desktop/Mixer_model.py", line 20, in Mixer_model
dXdt = (1/(self.rho*Z[1]))*(self.F1*(self.x1-Z[0]) + self.F2*(self.x2-Z[0]))
AttributeError: 'numpy.ndarray' object has no attribute 'rho'
Может кто-нибудь помочь мне выяснить, что происходит с моим кодом?
Спасибо всем большое