Python не покажет мне значения np.exp markethare - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь оценить доли рынка по следующей формуле:

c = np.exp(-Mu*a)/(np.exp(-Mu*a)+np.exp(-Mu*b))

, в которой a и b - это матрицы 9x9 со значениями ячеек, которые могут быть больше 1000. Поскольку числа настолько малы, Python возвращает значения NaN. Чтобы повысить точность оценки, я уже попробовал np.float128, но все, что это делает, это вызывает ошибку, что numpy не имеет атрибута с именем float128. Я тоже попробовал longdouble, опять безуспешно. Есть ли другие способы заставить Python показывать фактические значения ячеек вместо NaN?

1 Ответ

0 голосов
/ 11 марта 2020

У вас есть:

c = np.exp(-Mu*a)/(np.exp(-Mu*a)+np.exp(-Mu*b))

Умножив числитель и знаменатель на e^(Mu*a), вы получите:

c = 1/(1+np.exp(Mu*(a-b)))

Это просто переформулировка той же формулы.

Теперь, если термин exp все еще слишком мал и вам не требуется более точный результат, тогда ваш c приблизительно очень близок к 1. И если вам все еще нужно контролировать точность, вы можете взять log с обеих сторон и используйте расширение Тейлора log(1+x).

...