scipy.integrate.solve_ivp中的初始值

时间:2018-10-11 14:01:45

标签: python scipy solver ode

我正在尝试使用solve_ivp,但是我不明白它如何处理参数中的初始值。在solve_ivp上的documentation状态:

  

scipy.integrate.solve_ivp(有趣,t_span,y0,method ='RK45',t_eval = None,density_output = False,events = None,vectorized = False,** options)

使用

  

y0:类似数组,形状为(n,)   初始状态。对于复杂域中的问题,请使用复杂数据类型传递y0(即使最初的猜测纯粹是真实的)

但是,我不理解示例

>>> from scipy.integrate import solve_ivp
>>> def exponential_decay(t, y): return -0.5 * y
>>> sol = solve_ivp(exponential_decay, [0, 10], [2, 4, 8])
>>> print(sol.t)
[  0.           0.11487653   1.26364188   3.06061781   4.85759374
   6.65456967   8.4515456   10.        ]
>>> print(sol.y)
[[2.         1.88836035 1.06327177 0.43319312 0.17648948 0.0719045
  0.02929499 0.01350938]
 [4.         3.7767207  2.12654355 0.86638624 0.35297895 0.143809
  0.05858998 0.02701876]
 [8.         7.5534414  4.25308709 1.73277247 0.7059579  0.287618
  0.11717996 0.05403753]]

当微分方程只有一个分量时,为什么在这里给出3个初始值的数组?

1 个答案:

答案 0 :(得分:2)

  

微分方程只有一个分量

不是。函数exponential_decay可以将数组接受为y,并以矢量化的方式对该数组执行操作,这在NumPy中是典型的。

初始值确定未知函数具有多少个组件。在这种情况下,三个。