TypeError:'int'对象不可调用python中的建模

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

我在python中收到以下错误,我不知道为什么。我试图模拟甲基对小鼠的影响。

这是我的代码,以及在我的代码中创建的函数:

from scipy import array, linspace
from scipy import integrate
from matplotlib.pyplot import *
def Temp2(z, t, Ta, Te, wexc, yexc, winhib, yinhib, whd, yhd, wexctoinhib, winhibtomdl, whdtospn, yspn, Tt):
    # Dependence of Meth Concentration 
    #    dx
    #    -- = -x/Ta
    #    dt
    #
    #    dy
    #    -- = x/Ta - y/Te
    #    dt
    # x = interperitoneal 
    # y = blood
    # Ta is the time constant of Meth in the absorbtion
    # Te is the time constant of Meth in elimination
    x = z[0] # Rabbits density
    y = z[1] # Sheep density
    T = z[2]
    D = int(x=1)
    yt = D(Ta/Te -1)**-1 * (e**-t/Ta - e**-t/Te)
    Pexc = (1+tanhx)*[wexc*yt*yexc]
    Pinhib = (1+tanhx)*[winhib*yt*yinhib]
    Phd = (1+tanhx)*[whd*yt*yhd]
    Pmdl = wexctoinghib*Pexc-winhibtomdl*Pinhib
    Pspn = Pmdl + whdtospn*Phd+yspn
    V = array([-x/Ta, x/Ta - y/Te, (Pspn-(T-T0))/Tt])
    return V

def main():
    # set up our initial conditions
    IC0 = 1
    BC0 = 0
    T0 = 37
    z0 = array([IC0, BC0, T0])

    # Parameters
    Ta = 8.25
    Te = 57.5
    wexc = 1.225
    yexc = -0.357
    winhib = 1.335
    yinhib = 1.463
    whd = 0.872
    yhd = -3.69
    wexctoinhib = 7.47
    winhibtomdl = 6.38
    whdtospn = 5.66
    yspn = -3.35
    Tt = 89.2

    # choose the time's we'd like to know the approximate solution
    t = linspace(0., 1., 60)

    # and solve
    xode= integrate.odeint(Temp2, z0, t, args=(Ta, Te,  wexc, yexc, winhib, yinhib, whd, yhd, wexctoinhib, winhibtomdl, whdtospn, yspn, Tt))
    print (xode)    
main()

忽略#s,因为它们与代码所说的内容无关。这是我得到的错误:

yt = D(Ta/Te -1)**-1 * (e**-t/Ta - e**-t/Te)

TypeError:'int'对象不可调用

我不确定有什么问题,我怎么解决这个问题?谁能帮我?

python modeling
1个回答
0
投票

问题在这里

yt = D(Ta/Te -1)**-1 * (e**-t/Ta - e**-t/Te)

python中没有隐式乘法,所以当你尝试执行D(Ta/Te - 1)时,它被解释为函数调用而不是D乘以括号中的内容。

像这样改写它

yt = D*(Ta/Te -1)**-1 * (e**-t/Ta - e**-t/Te)
© www.soinside.com 2019 - 2024. All rights reserved.