此错误试图告诉我,我该如何解决?

问题描述 投票:0回答:2

[我正在用python建立一个双摆,并在其中建立了一个doublePen类,而我对python类还是有点陌生​​,我无法弄清楚这个错误

TypeError: can only concatenate tuple (not "int") to tuple

            """
            theta1 = state[0]
            theta2 = state[2]
            intVM1 = state[1]
            intVM2 = state[3]
            """
            #makes a empty array of zeros
            dydx = np.zeros_like(state)
            #sets the dydx[1] equal to angular velocity of mass 1
            dydx[0] = state[1]

            del_ = state[2] - state[0]
            den1 = (self.M1 + self.M2)*self.L1 - self.M2*self.L1*np.self.cos(del_)*np.self.cos(del_)
            dydx[1] = (self.M2*self.L1*state[1]*state[1]*np.self.sin(del_)*np.self.cos(del_) +
                       self.M2*self.G*np.self.sin(state[2])*np.self.cos(del_) +
                       self.M2*self.L1*state[3]*state[3]*np.self.sin(del_) -
                       (self.M1 + self.M2)*self.G*np.self.sin(state[0]))/den1
            #derivative of dydx
            dydx[2] = state[3]

            den2 = (self.L1/self.L1)*den1
            dydx[3] = (-self.M2*self.L1*state[3]*state[3]*np.self.sin(del_)*np.self.cos(del_) +
                       (self.M1 + self.M2)*self.G*np.self.sin(state[0])*np.self.cos(del_) -
                       (self.M1 + self.M2)*self.L1*state[1]*state[1]*np.self.sin(del_) -
                       (self.M1 + self.M2)*self.G*np.self.sin(state[2]))/den2

            return dydx

定义了所有其他变量,例如M1,M2等,以及cos(x)和sin(x)[编辑]这是一个github链接,如果您需要https://gist.github.com/Jackbaude/b30cb6d83972d76c1949aeec8cd94869,可以查看所有其他代码谢谢您的帮助

python class tuples
2个回答
0
投票

我已经检查了您的要点,看来您的问题是错别字。在M1初始化后有一个逗号,使其成为一个元组,然后执行(M1 + M2),其中M1是一个元组,M2是一个整数。您需要做的就是从doublePen函数中__init__类的这一行中删除逗号:

self.M1 = mass1,

0
投票

+运算符需要兼容的操作数。例如两个整数(1 + 2)。

它也将接受其他操作数,例如两个元组(例如(1,2,3 +(3,4)==(1,2,3,4)),但不接受不同类型的操作数(例如,数字+元组) )。

© www.soinside.com 2019 - 2024. All rights reserved.