使用Python找到近似值

0 投票
1 回答
1191 浏览
提问于 2025-04-17 19:31

我有一个叫做alpha的向量,还有一个叫做beta的向量。我想找到一个theta,使得从alpha和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,就停止。

我就是这样找到theta的。不过,这个过程用Python花了我大约60秒,最后得到了theta为0.456。

有没有更快的方法来找到这个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 个回答

1

你可以用 zipsum 这两个工具来计算你想要的结果:

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

撰写回答