Search code examples
pythonpython-3.xsynchronizationdynamic-programmingequality

Extra arguments must be in a tuple


I will try adaptation equality from pictureenter image description here

My code is

import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

#define universal variables
def dH_dt(H, t=0):
    return np.array(((H1(t)-H0(t))**2)/sqrt((H0(t))**2*((H0(t))**2)))
t = np.linspace(0, 100, 10000) 
H0 = [0.0001]
H1 = [0.0001]
H, infodict = integrate.odeint(dH_dt, H0, H1, t, full_output=True)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(H[:,0], H[:,1])
plt.show()

And I have error like

 File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/scipy/integrate/odepack.py", line 241, in odeint
    output = _odepack.odeint(func, y0, t, args, Dfun, col_deriv, ml, mu,
odepack.error: Extra arguments must be in a tuple.

Can you say how I can solve it


Solution

  • In think you have to try something like:

    H, infodict = integrate.odeint(dH_dt, H0, H1, args=(t,), full_output=True)
    

    You need to add a coma in() so python knows it is a tuple.