pythonsolve_ivp[scipy.integrate]:如何设置集成过程的输出点数?

pythonsolve_ivp[scipy.integrate]:如何设置集成过程的输出点数?,python,scipy,differential-equations,numerical-integration,Python,Scipy,Differential Equations,Numerical Integration,我想用不同的初始条件积分相同的微分方程,我想比较我得到的每个点。不幸的是,如果我这样做: sol = solve_ivp(my_model, [0, leng], [1,1,1], method="LSODA", args=(rho, sigma, beta), dense_output=False) sol_2 = solve_ivp(my_model, [0, leng], [1+0.001,1+0.001, 1-0.001], method="LSODA&q

我想用不同的初始条件积分相同的微分方程,我想比较我得到的每个点。不幸的是,如果我这样做:

sol = solve_ivp(my_model, [0, leng], [1,1,1], method="LSODA", args=(rho, sigma, beta), dense_output=False)

sol_2 = solve_ivp(my_model, [0, leng], [1+0.001,1+0.001, 1-0.001], method="LSODA", args=(rho, sigma, beta), dense_output=False)
在这两个积分过程中获得的点数不同

我不想使用插值过程,因为我想处理真实数据


我可以设置解决方案的点数吗?

比较初始条件不同的实例的一种变体是将它们全部整理到一个大系统中,在这个大系统中,它们都以相同的步骤顺序同时求解

def multi_Lorenz(t,u):
返回np.concatenate([Lorenz(t,uu)表示uu中的uu.reformate([-1,3]))
u0=np.范围(11)内的k的连接([[1+k*1e-5,1+k*1e-5,1-k*1e-5]))
res=求解ivp(多重洛伦兹[1,25],u0,方法=“LSODA”)
plt.图(figsize=(14,6))
plt.plot(res.t,res.y[::3].t)
plt.grid();plt.show()

溶液族的可见分裂位于
t=22
,但是在与
k=0
图形的差异中,初始差异的十倍增加几乎立即发生在
t=1
周围的峰值中,并保持在该范围内,直到
t=12

N = max(k for k,t in enumerate(res.t) if t<12)
plt.figure(figsize=(14,6))
plt.plot(res.t[:N], (res.y[3::3,:N]-res.y[0,:N]).T)
plt.grid(); plt.show()

N=max(k代表k,t在枚举(res.t)中,如果我要求“我的模型”和leng?你是否怀疑与中观察到的行为相关的插值?你可以将系统的两个实例放在同一个ODE函数中,这样你就集成了一个6维状态。然后你可以在实例之间最小化步长,但同时最小化这些值。因此总的来说,误差比ind中的误差要小一些ividual integration.@RafaelValero:根据参数名称和维度,测试模型很可能是Lorenz吸引子。根据给定的差异,解决方案应该很快分离,最晚在leng=20,可能已经在leng=5。因此,要观察非混沌、规则的错误行为,必须设置
leng=2
@RafaelValero是的,分离是可以的,但我想要两条具有相同点数的轨迹。获得大致等于10^4的点数差并不奇怪。