设置: 我在 python 中有以下函数,其中 x 可以变得非常大:
import numpy as np
def function(x, pi):
d = len(pi)
output = 0
for r in range(d):
output += pi[r] * np.exp(-x)
return output
输入描述: x 可能非常大,导致 np.exp(-x) 的计算结果为零,从而导致整个函数为零,而 pi 只是一个概率向量(例如 [0.5, 0.5])。
问题: 有没有更稳定的方法来实现这个功能,这样它就不会导致输出为零?谢谢。
编辑: 我决定提供更多细节,因为它在评论中被问到。整个功能是
def entire_function(x_array, pi, r):
d = len(pi)
numerator = np.exp(-x_array[r])
denominator = 0
for r_prime in range(d):
denominator += pi[r_prime] * np.exp(-x_array[r_prime])
return numerator / denominator