Python TypeError: derivatives_circ() takes 2 positional arguments but 6 were given
Python TypeError: derivatives_circ() takes 2 positional arguments but 6 were given
我正在尝试计算一些导数以完成一些方程式。但是当我定义我的函数时,我想保存 6 个不同的变量。它给了我这个错误波纹管。
File "C:\Users\Leona\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Leona/.matplotlib/Python_Dyn_Opdracht6_tweede.py", line 94, in <module>
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
TypeError: derivatives_circ() takes 2 positional arguments but 6 were given
这是我用来创建函数的代码
def derivatives_circ(state, t):
theta = state[0]
omega = state[1]
Moment=F*D
alpha = Moment/Ig
x = state[2]
vx = state[3]
ax = F*np.cos(theta)/m
y = state[4]
vy = state[5]
ay = F*np.sin(theta)/m
return [omega, alpha, vx, vy, ax, ay]
resultaat = odeint(derivatives_circ,[theta0, omega0, x0, vx0, y0, vy0], t)
theta = resultaat[:,0]
omega = resultaat[:,1]
x = resultaat[:,2]
vx = resultaat[:,3]
y = resultaat[:,4]
vy = resultaat[:,5]
for n in range(len(t)-1):
if theta[n]<0.5*np.pi:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
omega[n+1] = omega[n] + afgeleiden[1]*dt
theta[n+1] = theta[n] + afgeleiden[0]*dt
vx[n+1]=vx[n]+afgeleiden[3]*dt
x[n+1]=x[n]+afgeleiden[2]*dt
vy[n+1]=vy[n]+afgeleiden[5]*dt
y[n+1]=y[n]+afgeleiden[4]*dt
else:
afgeleiden_circ = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
omega[n+1] = omega[n] + afgeleiden_circ[1]*dt
theta[n+1] = theta[n] + afgeleiden_circ[0]*dt
afgeleiden_lin = derivatives_circ([x[n],vx[n]],t[n])
vx[n+1]=vx[n]+afgeleiden[3]*dt
x[n+1]=x[n]+afgeleiden[2]*dt
afgeleiden = derivatives_circ([y[n],vy[n]],t[n])
vy[n+1]=vy[n]+afgeleiden_circ[5]*dt
y[n+1]=y[n]+afgeleiden[4]*dt
非常感谢任何帮助!
这里是这一行:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
也许应该是:
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])
根据您之前对 derivatives_circ
的调用
这一行:
def derivatives_circ(state, t):
您定义此函数使其接受 2 个参数,但在这一行中:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
你给它 6 个参数!这就是为什么它给你错误。我不知道您的代码背后的思想,但将其替换为以下行:
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])
应该可以!
我正在尝试计算一些导数以完成一些方程式。但是当我定义我的函数时,我想保存 6 个不同的变量。它给了我这个错误波纹管。
File "C:\Users\Leona\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Leona/.matplotlib/Python_Dyn_Opdracht6_tweede.py", line 94, in <module>
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
TypeError: derivatives_circ() takes 2 positional arguments but 6 were given
这是我用来创建函数的代码
def derivatives_circ(state, t):
theta = state[0]
omega = state[1]
Moment=F*D
alpha = Moment/Ig
x = state[2]
vx = state[3]
ax = F*np.cos(theta)/m
y = state[4]
vy = state[5]
ay = F*np.sin(theta)/m
return [omega, alpha, vx, vy, ax, ay]
resultaat = odeint(derivatives_circ,[theta0, omega0, x0, vx0, y0, vy0], t)
theta = resultaat[:,0]
omega = resultaat[:,1]
x = resultaat[:,2]
vx = resultaat[:,3]
y = resultaat[:,4]
vy = resultaat[:,5]
for n in range(len(t)-1):
if theta[n]<0.5*np.pi:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
omega[n+1] = omega[n] + afgeleiden[1]*dt
theta[n+1] = theta[n] + afgeleiden[0]*dt
vx[n+1]=vx[n]+afgeleiden[3]*dt
x[n+1]=x[n]+afgeleiden[2]*dt
vy[n+1]=vy[n]+afgeleiden[5]*dt
y[n+1]=y[n]+afgeleiden[4]*dt
else:
afgeleiden_circ = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
omega[n+1] = omega[n] + afgeleiden_circ[1]*dt
theta[n+1] = theta[n] + afgeleiden_circ[0]*dt
afgeleiden_lin = derivatives_circ([x[n],vx[n]],t[n])
vx[n+1]=vx[n]+afgeleiden[3]*dt
x[n+1]=x[n]+afgeleiden[2]*dt
afgeleiden = derivatives_circ([y[n],vy[n]],t[n])
vy[n+1]=vy[n]+afgeleiden_circ[5]*dt
y[n+1]=y[n]+afgeleiden[4]*dt
非常感谢任何帮助!
这里是这一行:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
也许应该是:
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])
根据您之前对 derivatives_circ
这一行:
def derivatives_circ(state, t):
您定义此函数使其接受 2 个参数,但在这一行中:
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])
你给它 6 个参数!这就是为什么它给你错误。我不知道您的代码背后的思想,但将其替换为以下行:
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])
应该可以!