【发布时间】:2021-05-10 21:56:11
【问题描述】:
我想对具有不同初始条件的相同微分方程进行积分,并且我想比较我获得的每个点。不幸的是,如果我这样做:
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)
这两个积分过程中得到的点数不同。
我不想使用插值程序,因为我想使用真实数据。
我可以设置解的点数吗?
【问题讨论】:
-
我可以问一下“my_model”和leng吗?
-
您对与stackoverflow.com/questions/21859870/… 中观察到的行为相关的插值有疑问吗?
-
您可以将系统的两个实例放入同一个 ODE 函数中,这样您就可以集成一个 6 维状态。然后,您可以在实例中最小化步长,但同时获得值。因此,总体误差比单独集成略少。
-
@RafaelValero :根据参数名称和维度,测试模型很可能是 Lorenz 吸引子。有了给定的差异,解决方案应该很快就会明显地分开,最迟在 leng=20 时,可能已经在 leng=5 时。因此,要观察非混乱的常规错误行为,必须设置
leng=2。 -
@RafaelValero 是的,分离没问题,但我想要两条具有相同点数的轨迹。得到大致等于 10^4 的点数差异并不奇怪。
标签: python scipy differential-equations numerical-integration