scipy.optimize.newton给出了TypeError:只能将元组(不是" int")连接到元组

时间:2014-06-10 11:14:27

标签: python function typeerror newtons-method

我的整个节目是对的(我已经在各个阶段进行了检查)。但是,此模块中突出显示的行将返回错误:

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

我不知道为什么会这样。 funcPsat返回浮点值。我将不胜感激任何有用的建议!

import scipy.optimize.newton as newton

def Psat(self, T):
    pop= self.getPborder(T)
    boolean=int(pop[0])
    P1=pop[1]
    P2=pop[2]
    if boolean:
        Pmin = min([P1, P2])
        Pmax = max([P1, P2])
        if Pmin > 0.0: 
            Pguess = 0.5*(Pmin+Pmax) 
        else:
            Pguess=0.5*Pmax
        solution = newton(self.funcPsat, Pguess, args=(T))   #error in this line
        return solution
    else:
        return None

1 个答案:

答案 0 :(得分:3)

我认为问题在于,根据文档

  

args 元组,可选

     

函数调用中使用的额外参数。

args参数应为tuple

只是放括号不会这样做;元组的语法是逗号。例如:

>>> T = 0
>>> type((T))
<type 'int'>
>>> type((T,))
<type 'tuple'>

尝试:

solution = newton(self.funcPsat, Pguess, args=(T,))
                                              # ^ note comma