使用 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'
。
我很难适应 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'
。