使用 scipy solve_ivp 用于具有初始条件的方程

Using scipy solve_ivp for equation with initial conditions

我很难适应 scipy 的 solve_ivp。假设我们有一个普通的二阶线性微分方程,例如 spring (y'' = -k**2*y)。条件是当 spring 处于位置 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]

如果要编码

y'' = -k**2*y  

作为一阶系统,你应该使用

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

问题中的代码编码为y'' = -k**2*y'