如何近似公式中的值

时间:2013-03-18 14:00:38

标签: python math

所以我有一个alpha矢量,一个beta矢量,我试图找到一个theta,当所有估计的总和(对于alpha的1 to N和beta的1 to N)等于60 :

\sum_{i=1}^N \frac{e^{\alpha_i(\theta-\beta_i)}}{1 + e^{\alpha_i(\theta-\beta_i)}} = 60

def CalcTheta(grensscore, alpha, beta):
    theta = 0.0001
    estimate = [grensscore-1]
    while(sum(estimate) < grensscore):
        theta += 0.00001
        for x in range(len(beta)):
            if x == 0:
                estimate = []
            estimate.append(math.exp(alpha[x] * (theta - beta[x])) /
                            (1 + math.exp(alpha[x] * (theta - beta[x]))))
    return(theta)

基本上我所做的是从theta = 0.0001开始,并迭代计算所有这些总和,当它低于60时,继续每次加0.0001,而高于60意味着我们找到了theta。< / p>

我通过这种方式找到了值theta。问题是,使用Python花了大约60秒来找到0.456的θ。

找到这个theta的更快方法是什么(因为我想将其应用于其他数据)?

1 个答案:

答案 0 :(得分:2)

如果您知道θ的下限和上限,并且该函数在这些之间的范围内是单调的,那么您可以使用bisection algorithm来轻松快速地找到所需的值。