Я пытаюсь построить логарифмическую функцию: x*log(1+1/x)
для очень больших значений x. Я проверил несколько терминов, так как общий сюжет не был хорошим, и проблема в том, что, хотя эта функция никогда не должна быть выше 1, в некоторых случаях она становится больше, чем 1. Я считаю, что она имеет какое-то отношение к точности log.Точность в логарифмической функции с Python
для следующих значений х:
[ 5.4380181e+11 3.1688845e+12 4.5195668e+13 7.4634268e+14 1.2442192e+16
2.0754228e+17 3.4624427e+18 5.787843e+19 9.9925409e+20 2.6069079e+22]
я получаю за x*np.log(1+1/x)
:
[ 0.99999999 0.99999989 0.99999774 0.9999925 0.99959801 0.99007829
1.1261964 0.0 0.0 0.0]
Как вы можете видеть, что седьмой член больше, чем 1.
Я попытался с помощью log1p
, но это дает нечувствительные ответы.
Я также попытался использовать np.float128()
, но получаю точно такие же результаты, как указано выше.
Любые идеи?
Большое спасибо!
Что вы пробовали с 'log1p'? Он должен иметь возможность дать правильный результат. – kennytm