2016-07-04 5 views
0

Для удовольствия я пытаюсь реализовать алгоритм Чудновского для вычисления pi в java с использованием библиотеки точности с плавающей запятой произвольной точности. Меня поражает то, что мне нужно вычислить обратную цифру 1/n, так как формула описывается как 1/pi = sum (...)Точность взаимности в арифметике с плавающей запятой

Сколько значащих цифр/цифр точности нужно число с плавающей запятой n, чтобы 1/n имела желаемую точность? Есть ли легкий ответ на это? Я попытался сделать некоторые вычисления, например, 1/0,100009999999 = 9.99900010009, чтобы определить обратное значение 0,1 с пятью правильными цифрами после десятичной точки. Я вижу, что если я беру первые три цифры после десятичной точки, и вокруг результата получаю правильное значение 10, но существует ли общее правило, сколько цифр верно после операции 1/n? Меня также интересует тот же результат, но в двоичных и шестнадцатеричных базах.

Пробовал поиск в Google и быстрый поиск в Stackoverflow, но не нашел ответа на этот вопрос. Извините, если существует дубликат.

+1

Для pi (как между 1 и 10) он должен находиться в пределах одной цифры. Таким образом, чтобы получить точность в тысячу цифр, вам понадобится точность до 1001 цифр по взаимной. Вам нужно точно знать? Вы все равно получаете оценочную стоимость в конце точности, так что одна цифра здесь или там вряд ли имеет значение? Я надеюсь, что вы ничего не тестируете, используя встроенные значения double/float на любом языке ... –

+0

Благодарим вас за ввод. Каким будет общий ответ для числа n, которое не является pi (поскольку pi не находится между 1 и 10 в базе 2)? Нет, я не использую встроенный двойной/плавающий. Я буду использовать либо встроенный BigDecimal, либо apfloat – user1661303

ответ

1

Вы хотите вычислить 1/x, но вычислите 1/(x + d) с d = delta x ошибкой усечения. По бином ньютона,

1/(x+d) = (x-d)/(x²-d²) 

и так как мы можем предположить, что d² намного ниже какой-либо ошибки с плавающей запятой, ошибка обратной является -d/x² и тем более релевантным относительная погрешность -d/х.

Который подтверждает комментарий Артура Бизиадского, если 1/x находится между 1 и 10, тогда увеличение ошибки в худшем случае составляет 10 раз.

Смежные вопросы