Python 如何正确计算下列方程式?
使用Python2.7,我试图计算以下相当困难的方程组 我已经成功地实现了前两个,但正在努力解决第三个问题。这是我的尝试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 -
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
是一个函数,而不是一个数字。你的意思是打电话给皮乌头吗?