Когда я пытаюсь запустить приведенный ниже код, я получаю следующее сообщение об ошибке:
error Traceback (most recent call last)
<ipython-input-49-c5d034b4424d> in <module>
3 k_vals = [0.42, 0.17, 0, 0.17, 0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17] # arbitrary in this case
4 c0 = [1, 0.5, 0, 2, 1, 0,0,0,0,0,0,0,0,0]
----> 5 cout = odeint(rhs, c0, tout, k_vals) # EXERCISE: rhs, c0, tout, k_vals
/opt/anaconda3/lib/python3.7/site-packages/scipy/integrate/odepack.py in odeint(func, y0, t, args, Dfun, col_deriv, full_output, ml, mu, rtol, atol, tcrit, h0, hmax, hmin, ixpr, mxstep, mxhnil, mxordn, mxords, printmessg, tfirst)
243 full_output, rtol, atol, tcrit, h0, hmax, hmin,
244 ixpr, mxstep, mxhnil, mxordn, mxords,
--> 245 int(bool(tfirst)))
246 if output[-1] < 0:
247 warning_msg = _msgs[output[-1]] + " Run with full_output = 1 to get quantitative information."
error: Extra arguments must be in a tuple
Код:
import numpy as np
from scipy.integrate import odeint
def rhs(c, t, k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17):
r1 = k1 * c[14] * c[9]
r2 = k2 * c[8] * c[9]
r3 = k3 * c[13]**2 * c[0]**2
r4 = k4 * c[13] * c[2]
r5 = k5 * c[9] * c[4]
r6 = k6 * c[10] * c[12]
r7 = k7 * c[11]**2 * c[0]**2
r8 = k8 * c[11] * c[2]
r9 = k9 * c[10] * c[4]
r10 = k10 * c[10] * c[8]
r11 = k11 * c[12] * c[9]
r12 = k12 * c[0] * c[5]
r13 = k13 * c[6]
r14 = k14 * c[6]
r15 = k15 * c[3]
r16 = k16 * c[2]
r17 = k17 * c[14]
return [2*(r2-r3) + 2*(r6 - r7) + r13 - r12,
r17,
r5 - r4 + r9 - r8 + r14 + r15 - r16,
r16 - r15,
r4 - r5 + r8 - r9,
r13 - r12,
r12 - r13 + 2(-r14),
r14,
r1 + r3 - r2 + r11 - r10,
-r1 + r3 - r2 + r4,
r7 - r6 + r8 - r9 + r11 - r10,
2(r6 - r7) + r9 - r8,
r7 - r6 + r10 - r11,
2(r2 - r3) + r5 - r4,
-r1 - r17,
r1 + r17]
tout = np.linspace(0, 10)
k_vals = [0.42, 0.17, 0, 0.17, 0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17,0.17]
c0 = [1, 0.5, 0, 2, 1, 0,0,0,0,0,0,0,0,0]
cout = odeint(rhs, c0, tout, k_vals) # EXERCISE: rhs, c0, tout, k_vals
Что означает это сообщение об ошибке и как его исправить ?