Использование scipy solve_ivp для уравнения с начальными условиями - PullRequest
0 голосов
/ 12 января 2019

Мне трудно привыкнуть к scipy solve_ivp. Допустим, у нас есть обыкновенное линейное дифференциальное уравнение второго порядка, например, пружина (y '' = -k ** 2 * y). Условия, когда пружина находится в положении 0 (время 0), скорость равна v0. Как я могу использовать начальные условия для ее решения?

y'' = -k**2*y  # First this needs to be modified into first order equation

.

def function1(t, y, k):  #original function
return y[1], -k**2*y[1]

function2 = lambda t, y: function1(t, y, k = 10)  #function with only t and y

t = np.linspace(0, 100, 1000)

solution = solve_ivp(function2, (0, 100), (0, 0), t_eval = t)

solution.y[0]

1 Ответ

0 голосов
/ 13 января 2019

Если вы хотите закодировать

y'' = -k**2*y  

как система первого порядка, вы должны использовать

def function1(t, y, k):  #original function
    return y[1], -k**2*y[0]

Код в вопросе кодирует y'' = -k**2*y'.

...