繁体   English   中英

Python TypeError:衍生物_circ()接受2个位置参数,但给出了6个

[英]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)/my = 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 _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])

应该管用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM