Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

SciPy – Values in `t_eval` are not properly sorted

I keep running into a problem where my code keeps telling me that "Values in t_eval are not properly sorted." I have tried using sort functions and manually sorting (below). What am I not seeing? I’m not sure how to fix this problem. I’m almost certain it’s something very simple that I’m overlooking, but I can’t find it and the assignment is due in an hour.

def pff(t, y, p):
    if (2 < t) and (t < 4):
        z = 1
    else:
        z = 0
    
    dy = np.zeros(2)
    dy[0]= (p[0] * (y[1] + z)**p[3]) / (1 + (y[1] + z)**p[3]) - (p[2] * y[0])
    dy[1]= (p[1] * (y[0] + z)**p[3]) / (1 + (y[0] + z)**p[3]) - (p[2] * y[1])

alpha = 2
beta = 2
gamma = .5
n = 2
k = 1

p = [gamma, k, n, alpha, beta]
x_0 = np.zeros([0,])
t_span = [0, 20]

sol = integrate.solve_ivp(pff, t_span, x_0, 'RK45', p)

Traceback:

ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_36808/2811005318.py in <module>
      9 t_span = [0, 20]
     10 
---> 11 sol = integrate.solve_ivp(pff, t_span, x_0, 'RK45', p)

~\anaconda3\lib\site-packages\scipy\integrate\_ivp\ivp.py in solve_ivp(fun, t_span, y0, method, t_eval, dense_output, events, vectorized, args, **options)
    527         d = np.diff(t_eval)
    528         if tf > t0 and np.any(d <= 0) or tf < t0 and np.any(d >= 0):
--> 529             raise ValueError("Values in `t_eval` are not properly sorted.")
    530 
    531         if tf > t0:

ValueError: Values in `t_eval` are not properly sorted.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

From the solve_ivp docs

args tuple, optional
Additional arguments to pass to the user-defined functions. If given, the 
additional arguments are passed to all user-defined functions. So if, for 
example, fun has the signature fun(t, y, a, b, c), then jac (if given) and 
any event functions must have the same signature, and args must be a tuple 
of length 3.

where as t_eval is the one that’s supposed to be sorted – if provided.

t_eval array_like or None, optional
Times at which to store the computed solution, must be sorted and lie 
within t_span. If None (default), use points selected by the solver.
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading