I'm quite new to Python and Numpy, so I apologize if I'm missing something obvious here.

I have a function that solves a system of 2 differential equations :

def solve_ode(x0, a0, beta, t):
    At = np.array([[0.23*t, (-10**5)*t], [0, -beta*t]], dtype=np.float32)

    # get eigenvalues and eigenvectors
    evals, V = la.eig(At)
    Vi = la.inv(V)

    # get e^At coeff
    eAt = V @ np.exp(evals) @ Vi

   xt = eAt*x0
   return xt

However, running it with this code :

# initial values
x0 = 10**6
a0 = 2.5
beta = 0.05

t = np.linspace(0, 3600, 360)

plt.semilogy(t, solve_ode(x0, a0, beta, t))

... throws this error :

ValueError: setting an array element with a sequence.

At this line :

At = np.array([[0.23*t, (-10**5)*t], [0, -beta*t]], dtype=np.float32)

Note that t and beta are supposed to be floats. I think Python might not be able to infer this but I don't know how I could do this...

Thx in advance for your help.

share|improve this question

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.