Можно ли вычислить дробь экспоненты в сумме экспонент

Я хочу оценить фракцию следующим образом:

введите здесь описание изображения

or

\begin{equation}  
\frac{e^{y_t}}{\sum_{i=1}^T{e^{y_i}}}  
\end{equation}

для больших значений y. Но статистическое программное обеспечение (например, R) не может оценить exp(800) или даже большие числа. Тогда проблема в том, что дробь оценивается как NaN. Но мы знаем, что эта дробь всегда находится между 0 и 1. Можно ли использовать какие-то математические или программные приемы, чтобы решить проблему? Большое спасибо.


person Glenn    schedule 18.12.2013    source источник
comment
Я не использовал ее, но эта библиотека R: cran.r- project.org/web/packages/Rmpfr/index.html позволяет использовать числа с произвольной точностью (т. е. они могут быть настолько большими, насколько у вас есть память и вычислительная мощность).   -  person Rose Kunkel    schedule 18.12.2013
comment
Я попробую это, большое спасибо за рекомендацию.   -  person Glenn    schedule 18.12.2013


Ответы (1)


я бы попробовал

  • положите 1 сверху и распределите exp(-Y[t]) в каждом члене суммы

  • упростите каждый член суммы, просуммировав показатели степени

или какая-то такая алгебра.

Другой способ посмотреть на это...

Вы говорите, что общая дробь находится между 0 и 1. Что ж, если она близка к 1, это означает, что знаменатель должен быть разумным.

Если он близок к 0, это означает, что знаменатель очень велик. Так что, если вы суммируете знаменатель, и он становится неоправданно большим, просто уходите. Вы знаете, что это может только увеличиться.

Кроме того, вы можете отсортировать члены суммы, выполнив сначала те, у которых наибольший показатель степени. Так вы быстрее доберетесь до неразумности.

person Mike Dunlavey    schedule 18.12.2013
comment
Может быть, я не ясно выразился. Проблема здесь в том, что, скажем, когда y_t = 800, exp(800) оценивается как Inf. Тогда знаменатель также Inf. И Inf/Inf не определяется. Но если программное обеспечение (или компьютер) достаточно мощное, оно будет оценивать exp(800) как большое, но конечное число. Так же будет и со знаменателем. Тогда вся дробь представляет собой число от 0 до 1. - person Glenn; 18.12.2013
comment
@user2966729: user2966729: Я пытался предложить вам масштабировать все это на exp(-Y_t), надеясь, что это уменьшит условия суммирования до разумных чисел. Не нужно делить огромные числа на огромные числа. - person Mike Dunlavey; 18.12.2013
comment
Большое спасибо за помощь. Я пожалел в тот момент, когда добавил свой первый комментарий. Ваша идея великолепна. Мне не удалось реализовать этот простой способ. - person Glenn; 18.12.2013
comment
@ user2966729: Удачи. Математика - это весело :) - person Mike Dunlavey; 18.12.2013