使用Python查找值的近似值

时间:2013-03-18 15:13:11

标签: python approximation

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

math.exp(alpha[i] * (theta - beta[i])) / (1 + math.exp(alpha[i] * (theta - beta[i])

enter image description here

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

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

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

def CalcTheta(score, alpha, beta):
    theta = 0.0001
    estimate = [score-1]

    while(sum(estimate) < score):

        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)

1 个答案:

答案 0 :(得分:1)

您可以使用zipsum来计算目标函数:

  def f(theta):
    return sum(1/(1 + exp(a*(b-theta)))) for a,b in zip(alpha, beta))