Это дополнительный вопрос к предыдущему , который я задал.
Я пытаюсь вычислить ряд Harmonic для очень больших терминов, однако при сравнении с log (n) + γ я не получаю ожидаемой ошибки.
Я подозреваю, что основная проблема связана с типом BigFloat
Джулия.
harmonic_bf = function(n::Int64)
x=BigFloat(0)
for i in n:-1:1
x += BigFloat(1/i)
end
x
end
Например, хорошо известно, что нижняя граница для формулы: H_n - log (n) - γ равна 1/2 / (n + 1).
Тем не менее, это верно для n = 10 ^ 7, а затем не для n = 10 ^ 8.
n=10^8
γ = big"0.57721566490153286060651209008240243104215933593992"
lower_bound(n) = 1/2/(n+1)
>>> harmonic_bf(n)-log(n)-γ > lower_bound(BigFloat(n))
false
Это сводит меня с ума, я, кажется, не могу понять, чего не хватает ... BigFloat
предположительно должно устранить проблемы арифметической точности, но, похоже, это не так.
Примечание. Я пытался использовать BigFloat с неопределенной точностью и с 256-битной точностью.