Python 如何正确计算下列方程式?

Python 如何正确计算下列方程式?,python,python-2.7,function,math,Python,Python 2.7,Function,Math,使用Python2.7,我试图计算以下相当困难的方程组 我已经成功地实现了前两个,但正在努力解决第三个问题。这是我的尝试 def pi_tau( r ): return (1 - (1 - r)**(t + 1))/(2 - r) def mean_field( r ): return 1 - (1 - r)**t def pi_neighbour( r ): inside = [] for kappa_dash in range(0, kappa -

使用Python2.7,我试图计算以下相当困难的方程组

我已经成功地实现了前两个,但正在努力解决第三个问题。这是我的尝试

def pi_tau( r ):
    return (1 - (1 - r)**(t + 1))/(2 - r)  

def mean_field( r ): 
    return 1 - (1 - r)**t

def pi_neighbour( r ):
    inside = []
    for kappa_dash in range(0, kappa - 1):

        Binomial_Coefficient = (math.factorial(kappa - 1)) / (math.factorial(kappa - 1 - kappa_dash)*math.factorial(kappa_dash))          

        top = ((mean_field( r )*pi_tau( r ))**kappa_dash)*(1 - mean_field( r )*pi_tau( r ))**(kappa - 1 - kappa_dash)

        bottom = kappa_dash + 1

    fraction = top/bottom
    inside.append(kappa_dash)
    inside[kappa_dash] = inside[kappa_dash] + fraction*Binomial_Coefficient

return pi_tau*inside
然后我尝试调用这个函数

# set parameters 
r = 0.15
kappa = 2.1
T = 10

ppp_t = []
mmm_f = []
nnn_t = []

for t in range(0, T):
    ppp_t.append(pi_tau( r ))
    mmm_f.append(mean_field( r ))
    nnn_t.append(pi_neighbour( r ))
我收到以下错误消息

---------------------------------------------------------------------------

    TypeError                                 Traceback (most recent call last)
    <ipython-input-41-9bcf462306f0> in <module>()


   6     ppp_t.append(pi_tau( r ))
      7     mmm_f.append(mean_field( r ))
----> 8     nnn_t.append(pi_neighbour( r ))

<ipython-input-39-d9acdd7490f9> in pi_neighbour(r)
     19         inside[kappa_dash] = inside[kappa_dash] + fraction*Binomial_Coefficient
     20 
---> 21     return pi_tau*inside

TypeError: can't multiply sequence by non-int of type 'function'
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
6购买力平价附加(皮头(右))
7毫米f.附加(平均值字段(r))
---->8 nnn_t.追加(pi_近邻(r))
在pi_近邻(r)
19内[kappa_破折号]=内[kappa_破折号]+分数*二项式系数
20
--->21返回碧头*内
TypeError:无法将序列与“function”类型的非int相乘

我正在寻找任何关于如何实现第三个功能和改进我的方法的建议

我相信您的意思是在回溯的第21行中执行以下操作:

return pi_tau(r)*inside

您忘记调用函数,因此它试图用一个函数乘以一个整数,而不是函数的返回值

  • 您计算
    for
    循环中的顶部、底部和生物名词,但不
    for
    循环中求和;及
  • pi_tau
    函数与列表相乘

    return pi_tau*inside
    
  • 您使用
    范围(0,kappa-1)
    ,但是
    范围(…)
    上限是独占的

然而,你让事情变得相当困难。您可以使用以下方法:

from math import factorial

def pi_neighbour(r):
    sum = 0.0
    for kappa_dash in range(0,kappa):
        bin_coeff = factorial(kappa-1)/(factorial(kappa-1-kappa_dash)*factorial(kappa_dash))      
        top = ((mean_field(r)*pi_tau(r))**kappa_dash)*(1-mean_field(r)*pi_tau(r))**(kappa-1-kappa_dash)
        sum += bin_coeff*top/(kappa_dask+1)
    return pi_tau(r)*sum
从数学导入阶乘
def pi_近邻(r):
总和=0.0
对于范围内的kappa_破折号(0,kappa):
bin_系数=阶乘(kappa-1)/(阶乘(kappa-1-kappa_破折号)*阶乘(kappa_破折号))
top=((平均场(r)*πτ(r))**卡帕图)*(1-平均场(r)*πτ(r))**(卡帕图-1-卡帕图)
总和+=本系数*top/(卡帕系数+1)

return pi_tau(r)*sum
错误在于将一个列表(即
内部的
与一个整数相乘,即
pi_tau(r)的返回值

改为这样做(a)

试试这个:

返回[i*piu_头(r)表示内部的i]

您可以将方程式的名称放在标题和问题文本中,以便其他人搜索时更容易找到它们。例如,Title,“Python中的Compute name1,name,name3”之类的东西。
pi_tau
是一个函数,而不是一个数字。你的意思是打电话给皮乌头吗?