我很难适应scipy的solve_ivp。假设我们有一个二阶普通线性微分方程,例如spring(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]
答案 0 :(得分:1)
如果要编码
y'' = -k**2*y
作为一阶系统,您应该使用
def function1(t, y, k): #original function
return y[1], -k**2*y[0]
问题中的代码编码y'' = -k**2*y'
。