Начальные значения в scipy.integrate.solve_ivp - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь использовать solve_ivp, но я не понимаю, как он работает с начальными значениями в аргументе.Документация о решении_ivp гласит:

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

с

y0: array_like, shape (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 голосов
/ 11 октября 2018

дифференциальное уравнение имеет только один компонент

Это не так.Функция exponential_decay может принимать массив как y и выполнять операции над этим массивом векторизованным способом, как это типично для NumPy.

Начальное значение определяет, сколько компонентов имеет неизвестная функция.В этом случае три.

...