С моей точки зрения это что-то невозможное! Обычный человек не в состоянии прийти к такому выражению. При этом надо учесть, что до 27 лет Рамануджан занимался математикой сам для себя, не имея контакта с серьезными специалистами.
Все расчеты я проводил на платформе 1С: Предприятие, редакция 8.2. Спасибо разработчиками, что они реализовали в программе длинную математику для умножения и сложения, это очень упрощает жизнь. Для деления есть ограничение в 27 знаков после запятой, поэтому деление пришлось реализовать самому. Но обо все по порядку.
Первая задача – уметь вычислять √2 с любой точностью. Для этого обычно ищут ноль следующей функции:
f(x)=x²-2,
С этой целью используют итерационную формулой Герона, в которой a=2:
Но если у вас нет длинного деления, когда вы можете указать количество значащих цифр после запятой, то точность вычислений по данной формуле будет ограничиваться точностью деления, которая реализована в системе. В 1С это 27 знаков и именно такую минимальную погрешность я смог получить. Тогда я решил проверить, как будет работать разложение в ряд Тейлора для функции квадратный корень из (1+х). Ниже приводится соответствующая формула для разложения.
Отметим, что каждый последующий член ряда отличается от предыдущего знаком и коэффициентом 0.5*x*(2-3/n). Корень из двух я планировал получить, используя тождество:
С этой целью значение ряда будем вычислять в точке 1/49. Для того, чтобы обойти ограничения на точность конечного результат от представления результатов деления, число 1/49 будем представлять следующим образом. Дробь 1/7 имеет период 142857, поэтому сначала я формирую десятичную запись данной дроби с количеством знаков после запятой, которое определяется требуемой точностью расчетов, затем полученное значение умножаю само на себя. А вот множитель (2-3/n) я оставил таким, какой он есть. Формула готова осталось проверить, как она работает. Результат я сравнивал с данными, которые выдает
0.12*пи=3/25*пи≈3*1/8=3*0,125=0,375.
Если учесть второй член разложения, то к приведенному значению надо будет добавить (0,375)³/3. Заменяем выражение в скобках на 0.4, выполняем элементарные операции и получаем 0,021. Тогда уточненная оценка будет 0,396. На этом и остановимся.
Заключение
Данная статья является примером того, как в 1С можно выполнять вычисления с любой заданной точностью. Представляет ценность для преподавателей информатики и тех, кто связан с обучением программированию в среде 1С.
ссылка на оригинал статьи http://habrahabr.ru/post/220581/
Добавить комментарий