首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python TypeError: derivatives_circ()接受两个位置参数,但给出了6个

Python TypeError: derivatives_circ()接受两个位置参数,但给出了6个
EN

Stack Overflow用户
提问于 2019-03-19 13:23:52
回答 2查看 1.4K关注 0票数 1

我试图计算一些导数,以完成一些方程。但是当我定义我的函数时,我想要包含6个不同的变量。这给了我这样的错误。

代码语言:javascript
运行
复制
  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

这是我用来创建函数的代码

代码语言:javascript
运行
复制
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

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-19 13:27:02

这里的这条线:

代码语言:javascript
运行
复制
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])

也许应该是:

代码语言:javascript
运行
复制
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])

基于您先前对derivatives_circ的调用

票数 2
EN

Stack Overflow用户

发布于 2019-03-19 13:34:19

在这一行:

代码语言:javascript
运行
复制
def derivatives_circ(state, t):

您定义了这个函数,以便它接受2参数,但是在这一行中:

代码语言:javascript
运行
复制
afgeleiden = derivatives_circ([theta[n], omega[n]], x[n], vx[n], y[n], vy[n], t[n])

你给它的是6参数!这就是为什么它给了你错误。我不知道您的代码背后的心态,但是用下面的行替换它:

代码语言:javascript
运行
复制
afgeleiden = derivatives_circ([theta[n], omega[n], x[n], vx[n], y[n], vy[n]], t[n])

应该行得通!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55242106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档