In [2]:
from sympy import *
init_session()
In [3]:
alpha, beta, sigma, epsilon, deltaA, deltaM, deltaE = symbols('alpha beta sigma epsilon delta_A delta_M delta_E')
k1, k2 = symbols('k1 k2')
a, R, deltaP = symbols('a R delta_P')
B = 1
In [4]:
A, M, E = Function("A")(t), Function("M")(t), Function("E")(t)
In [5]:
f1 = lambda p: p**3/(k1 + p**3)
f2 = lambda p: a*k2**2/(k2**2 + p**2)
p = (R*B*E)/deltaP
In [6]:
dA = (sigma + alpha*M)*f1(p) - (beta + deltaA)*A - epsilon*A**2
dM = 8*beta*f2(p)*A - f1(p)*alpha*M - deltaM*M
dE = 60*beta*(1 - f2(p))*A - deltaE*E
In [7]:
dA
Out[7]:
In [8]:
dM
Out[8]:
In [9]:
dE
Out[9]:
In [19]:
A, M, E = symbols('A M E')
k1 = 2
k2 = 1
m = 3
a = 0.7
sigma = 0.02
alpha = 20
epsilon = 1
deltaM = 0.01
deltaP = 1
deltaE = 0.3
R = 50
f1 = lambda p: p**3/(k1 + p**3)
f2 = lambda p: a*k2**2/(k2**2 + p**2)
p = (R*B*E)/deltaP
lm = Matrix([(sigma + alpha*M)*f1(p) - (1)*A - epsilon*A**2, f2(p)*A - f1(p)*alpha*M - deltaM*M , 0.1*(1 - f2(p))*A - deltaE*E])
J = lm.jacobian(Matrix([A, M, E]))
In [25]:
[N(temp) for temp in J.subs({ A: 0.07016951, M: 0.007120757, E: 0.02117123 }).eigenvals().keys()]
Out[25]:
In [45]:
charpoly = lm.berkowitz_charpoly().as_expr()
charpoly
Out[45]:
In [47]:
solve(charpoly.subs({A: 0.06167574, M: 0.00599124, E: 0.01866815}))
Out[47]:
In [ ]:
In [66]:
ep = Symbol('Epsilon')
var('a:10 m:10 e:10')
Abar = a0(t) + ep*a1(t) + ep**2*a2(t)
Mbar = m0(t) + ep*m1(t) + ep**2*m2(t)
Ebar = a0(t) + ep*e1(t) + ep**2*e2(t)
In [67]:
dAbar, dMbar, dEbar = [f.subs({A: Abar, M: Mbar, E: Ebar}) for f in (dA, dM, dE)]
In [68]:
# Simplify, get rid of denominator since equations equal 0
dAbar = fraction((dAbar - Abar.diff(t)).expand().combsimp())[0].collect(ep)
dMbar = fraction((dMbar - Mbar.diff(t)).expand().combsimp())[0].collect(ep)
dEbar = fraction((dMbar - Ebar.diff(t)).expand().combsimp())[0].collect(ep)
In [72]:
dAbar.coeff(ep, 0).simplify()
Out[72]:
In [73]:
dAbar.coeff(ep, 1).simplify()
Out[73]:
In [74]:
dAbar.coeff(ep, 2).simplify()
Out[74]:
In [15]:
In [9]:
repr(f1(p)/E)
Out[9]:
In [ ]: