Math Python Scipy.integrate.solve_ivp返回初始解决方案,或者与要求集成的结果相比返回很少的点

Math Python Scipy.integrate.solve_ivp返回初始解决方案,或者与要求集成的结果相比返回很少的点,math,scipy,ode,Math,Scipy,Ode,我尽量避免问这个问题,因为我无法真正构建MWE,所以我将把所需代码的最小部分与结果放在一起: 正在集成的功能: (需要一个变量r和一个5x1数组z才能返回5x1数组dz/dr def FUNs(r_p,z): return np.array([complex(DER(r_p,z)),complex(DBTH(r_p,z)),complex(DPR(r_p,z)),complex(DUF(r_p,z)),complex(DUR(r_p,z))]) 起点r0,z0及其FUNs(r0,z0)

我尽量避免问这个问题,因为我无法真正构建MWE,所以我将把所需代码的最小部分与结果放在一起:

正在集成的功能: (需要一个变量
r
和一个5x1数组
z
才能返回5x1数组
dz/dr

def FUNs(r_p,z):
    return np.array([complex(DER(r_p,z)),complex(DBTH(r_p,z)),complex(DPR(r_p,z)),complex(DUF(r_p,z)),complex(DUR(r_p,z))])
起点
r0,z0
及其
FUNs(r0,z0)
分别为:

r0:3

z0:[0.1428571428571428,0.7142857142857144,-4.285714285714286,0.03279874008674976,-0.07511922913583222]

FUNs(r0,z0):数组([10.25070341+0.j,-14.01473929+0.j,0.26616247+0.j,0.51135355+0.j,0.08613425+0.j])

对于执行部分:

我只是调用solve_ivp来集成,比如说使用以下命令集成一个非常小的空间
3.00->3.01

start  = 3.0
limit  = 3.01
t_get  = np.linspace(start,limit,10)
z00    = z0
sol    = scipy.integrate.solve_ivp(FUNs, [start, limit], z00, method='RK45',t_eval=t_get, vectorized=False,rtol=10**(-8.5),atol=10**(-8.5))
为了检查集成是否失败,集成所经过的
空间由
sol.t
给出,即:

sol.t >>> array([3.        , 3.00111111, 3.00222222, 3.00333333])
如果我疯狂地使用
limit=4
或某个
sol.t
只给出
3.
xD

谢谢你的帮助

附言


sol.message
给出以下输出:
所需的步长小于数字之间的间距。

sol.message
的内容是什么?sol.t显示集成经过的空间点,而sol.y是通过这些点的解决方案。@LutzLehmannAnd
sol.success
告诉我们是否有t集成已成功执行,并且
sol.message
包含错误消息。请参阅文档。@LutzLehmann很抱歉没有响应,但是,尽管这几乎令人难以置信,我的笔记本电脑刚刚死掉,无论我多么努力,我都无法在我的桌面上运行相同的脚本。我将在修复后立即回答it@LutzLeh曼恩:我在问题上添加了sol.message。如果你还在:)你的时间:
sol.message的内容是什么?sol.t表示积分所经过的空间点,而sol.y表示通过这些点的解@LutzLehmannAnd
sol.success
告知集成是否成功执行,并且
sol.message
包含错误消息。请参阅文档。@LutzLehmann很抱歉没有回应,但是,尽管我的笔记本电脑几乎难以置信地死掉了,无论我怎么努力,我都无法在我的桌面上运行相同的脚本。我一搞定就回答it@LutzLehmann我添加了关于问题的sol.message。如果你还在那里:)谢谢你的时间