scipy.optimize.newton дает TypeError: может только конкатенировать кортеж (не int) в кортеж

Вся моя программа верна (я проверял на разных этапах). Однако выделенная строка в этом модуле возвращает ошибку:

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

person Pearl Philip    schedule 10.06.2014    source источник
comment
Не могли бы вы предоставить полную трассировку ошибок? Что такое T?   -  person jonrsharpe    schedule 10.06.2014


Ответы (1)


Я думаю, проблема в том, что согласно документации

args: кортеж, необязательно

Дополнительные аргументы для использования при вызове функции.

аргумент args должен быть tuple.

Просто поставить круглые скобки не получится; синтаксис для кортежей - запятая. Например:

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

Пытаться:

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