def buildJacobianMatrix(self, including_fast_reactions=True):
self.interactionMatrix = []
self.jacobianMatrix = []
for ode in self.ODEs:
partial_ders = []
signs = []
for var in self.ODE_vars:
t_part_der = diff(ode.getDeveloppedInternalMathFormula(), var.getDeveloppedInternalMathFormula())
t_part_der_formula = MathFormula(self)
t_part_der_formula.setInternalMathFormula(t_part_der)
partial_ders.append(t_part_der_formula)
if t_part_der == MathFormula.ZERO:
signs.append(0)
else:
for atom in t_part_der.atoms(SympySymbol):
t_part_der = t_part_der.subs({atom: SympyInteger(1)})
if t_part_der > MathFormula.ZERO:
signs.append(1)
elif t_part_der < MathFormula.ZERO:
signs.append(-1)
else:
signs.append(2)
self.jacobianMatrix.append(partial_ders)
self.interactionMatrix.append(signs)
评论列表
文章目录