Это краевая задача, вам нужно использовать solve_bvp
from scipy.integrate import solve_bvp, solve_ivp
import matplotlib.pyplot as plt
import numpy as np
def eq(t,u): return [u[1], -0.106*u[1]-0.006*u[0]] #return u' and u''
def bc(u0,u1): return [u0[0], u1[1]-1 ]
res = solve_bvp(eq, bc, [0,1], [[0,1],[1,1]], tol=1e-3)
print res.message
# plot the piecewise polynomial interpolation,
# using the last segment for extrapolation
time = np.linspace(0, 10, 501)
plt.plot(time, res.sol(time)[0], '-', lw=2, label="BVP extrapolated")
# solve the extended solution as IVP solution on [1,10]
ivp = solve_ivp(eq, time[[0,-1]], res.y[:,0], t_eval=time)
plt.plot(time, ivp.y[0], '-', lw=2, label="IVP from BVP IC")
# plot decorations
plt.xticks(range(0,11))
plt.grid(True)
plt.legend()
plt.xlabel('time')
plt.ylabel('u(t)')
plt.show()
Обратите внимание, что продолжение выполняется путем экстраполяции из заданного интервала [0,1] до [0,10] и что значения в 1 имеют допуск 1e-3. Таким образом, можно получить лучший результат на большом интервале, используя solve_ivp
с вычисленными значениями при t = 1 в качестве начальных значений. Разница в этом примере составляет около 0,01.