python 中的 Ode 求解器
Ode solver in python
我正在尝试使用 scipy odeint 求解 ODE (dx^2/dt^2 = -4(x^2+y^2)^(3/2)),但我可以让它工作。这是我的代码:
import numpy as np
from scipy.integrate import odeint
def system(x,t,y):
x1 = x[0]
x2 = x[1]
y1 = y
dx1_dt = x2
dx2_dt = -4*(x1**2+y1**2)**(3/2)
dx_dt = [dx1_dt,dx2_dt]
return dx_dt
x_0 = [2,3]
y_0 = [8,6]
t = np.linspace(0,1,30)
x_solved = odeint(system,x_0,t,args=(y_0[0]))
我收到这个错误:
odepack.error: Extra arguments must be in a tuple
但我将额外的参数作为元组传递:args=(y_0[0])
。我究竟做错了什么?谢谢!
具有单个元素的元组应采用以下格式
(y_0[0],)
。注意逗号。
(x)
的计算结果为 x
(x,)
求值为一个只有一个元素的元组
( )
通常用于句法和更好的可读性原因。
is_true = (x and y) or (a or k)
由于( )
已经用于创建元组,所以区分单元素元组和表达式的方法是comma
.
我正在尝试使用 scipy odeint 求解 ODE (dx^2/dt^2 = -4(x^2+y^2)^(3/2)),但我可以让它工作。这是我的代码:
import numpy as np
from scipy.integrate import odeint
def system(x,t,y):
x1 = x[0]
x2 = x[1]
y1 = y
dx1_dt = x2
dx2_dt = -4*(x1**2+y1**2)**(3/2)
dx_dt = [dx1_dt,dx2_dt]
return dx_dt
x_0 = [2,3]
y_0 = [8,6]
t = np.linspace(0,1,30)
x_solved = odeint(system,x_0,t,args=(y_0[0]))
我收到这个错误:
odepack.error: Extra arguments must be in a tuple
但我将额外的参数作为元组传递:args=(y_0[0])
。我究竟做错了什么?谢谢!
具有单个元素的元组应采用以下格式
(y_0[0],)
。注意逗号。
(x)
的计算结果为 x
(x,)
求值为一个只有一个元素的元组
( )
通常用于句法和更好的可读性原因。
is_true = (x and y) or (a or k)
由于( )
已经用于创建元组,所以区分单元素元组和表达式的方法是comma
.