python 错误
Error on python
您好,我想使用欧拉方法绘制带有环的火箭轨迹。我的代码是(你可以跳过这个,错误在它下面):
mo = 1000
m = 900
q = 2.8
u = 3700
vo = 0
xo = 0.0001
g = 9.81
t = np.arange(0,int(1001))
x0 = 0.0001
v0 = 0
N = 1000
at = 1/1000
现在速度和高度计算:
def v(t):
return u*np.log(mo/(mo-q*t))-g*t
def az(t):
return xo + vo*t - 0.5*g*t**2 + u*t*np.log(mo) + (u/q)*((mo - q*t)*np.log(mo
- q*t) + q*t - mo*np.log(mo))
z = xo + vo*t - 0.5*g*t**2 + u*t*np.log(mo) + (u/q)*((mo - q*t)*np.log(mo
- q*t) + q*t - mo*np.log(mo))
这是由于错误我变成列表的加速度:
aj = -g + (q/(mo-q*t))*u
ajj = np.array(aj).tolist()
所以这是我尝试使用欧拉方法以分析方式解决它的循环:
t = np.zeros(N + 1)
t[0] = 0
z = np.zeros(N + 1)
z[0] = x0
v = np.zeros(N + 1)
v[0] = 0
for k in range(0,N):
v[k + 1] = v[k] +ajj*z[k]*at
z[k + 1] = z[k] + v[k + 1]*at
它给了我这个错误:
ValueError Traceback (most recent call last)
<ipython-input-193-d1513ed52aa0> in <module>()
11
12 for k in range(0,N):
---> 13 v[k + 1] = v[k] + ajj*z[k]*at
14 z[k + 1] = z[k] + v[k + 1]*at
15
ValueError: setting an array element with a sequence.
我勉强知道是什么意思。错误是因为列表 ajj 但我不知道如何修复它以便随时间绘制 z。感谢您的帮助。很抱歉这个问题很长,我才刚刚开始编程。
您的 ODE 系统是 m'(t)=-q, az'(t)=v(t), v'(t)=u*q/m(t)-g
,这里插入 m(t)=m0-q*t
。它总是有助于通过 ODE 函数将系统动力学与求解器分开,
def ODEfunc(t,y): az, v = y; return np.array([ v, -g+q*u/(m0-q*t) ]);
这样您就可以根据食谱公式迭代欧拉步骤
t, y = t+h, y + h*ODEfunc(t,y)
您好,我想使用欧拉方法绘制带有环的火箭轨迹。我的代码是(你可以跳过这个,错误在它下面):
mo = 1000
m = 900
q = 2.8
u = 3700
vo = 0
xo = 0.0001
g = 9.81
t = np.arange(0,int(1001))
x0 = 0.0001
v0 = 0
N = 1000
at = 1/1000
现在速度和高度计算:
def v(t):
return u*np.log(mo/(mo-q*t))-g*t
def az(t):
return xo + vo*t - 0.5*g*t**2 + u*t*np.log(mo) + (u/q)*((mo - q*t)*np.log(mo
- q*t) + q*t - mo*np.log(mo))
z = xo + vo*t - 0.5*g*t**2 + u*t*np.log(mo) + (u/q)*((mo - q*t)*np.log(mo
- q*t) + q*t - mo*np.log(mo))
这是由于错误我变成列表的加速度:
aj = -g + (q/(mo-q*t))*u
ajj = np.array(aj).tolist()
所以这是我尝试使用欧拉方法以分析方式解决它的循环:
t = np.zeros(N + 1)
t[0] = 0
z = np.zeros(N + 1)
z[0] = x0
v = np.zeros(N + 1)
v[0] = 0
for k in range(0,N):
v[k + 1] = v[k] +ajj*z[k]*at
z[k + 1] = z[k] + v[k + 1]*at
它给了我这个错误:
ValueError Traceback (most recent call last)
<ipython-input-193-d1513ed52aa0> in <module>()
11
12 for k in range(0,N):
---> 13 v[k + 1] = v[k] + ajj*z[k]*at
14 z[k + 1] = z[k] + v[k + 1]*at
15
ValueError: setting an array element with a sequence.
我勉强知道是什么意思。错误是因为列表 ajj 但我不知道如何修复它以便随时间绘制 z。感谢您的帮助。很抱歉这个问题很长,我才刚刚开始编程。
您的 ODE 系统是 m'(t)=-q, az'(t)=v(t), v'(t)=u*q/m(t)-g
,这里插入 m(t)=m0-q*t
。它总是有助于通过 ODE 函数将系统动力学与求解器分开,
def ODEfunc(t,y): az, v = y; return np.array([ v, -g+q*u/(m0-q*t) ]);
这样您就可以根据食谱公式迭代欧拉步骤
t, y = t+h, y + h*ODEfunc(t,y)