Корень квадратный из двух
Пример одного из методов (квадратичное приближение):
x0 = 1/2, x(n+1) = x(n) * (3/2 - x(n)^2) - находим sqrt(2)/2
Заранее спасибо.
А что вам нужно? Готовый код с комментариями? Тогда прошу перенести тему в раздел Студентам.
Если нет - то тут , думаю, достаточно подробно расписано.
Если вы знаете какой-либо метод, содержащий умножение дробных чисел большой точности (пример ниже), распишите пожалйуста, как перемножать эти числа?
А чем отличается умножение дробных чисел большой точности от просто больших длинных чисел в терминах длинной арифметики? Просто храните в дополнительных структурах информацию о положении запятой. А в приведенном тобой примере я никакой "большой" точности не вижу. Обычный численный метод. Что ты подразумеваешь под "большой"? Сколько знаков?
Если нет - то тут , думаю, достаточно подробно расписано.
Пример по ссылке не подходит, поскольку там необходимо инвертирование большого (500000 знаков) числа, а это очень долго. Исходников мне не нужно, мне нужен метод вычисления. Пример:
sqrt(2) = (239/169)*sqrt(2*169^2 / 239^2) = (239/169)*1/sqrt(1-1/57122)
Вычисление 1/sqrt(1-1/57122).
1/sqrt(1-x) = 1+(1/2)x+(1*3)/(2*4)x^2+(1*3*5)/(2*4*6)x^3+...
Числа 239 и 169 взяты из цепных дробей. Объясню, почему этот метод не подходит. За одну итерацию мы получаем всего четыре-пять цифр корня из двух, поэтому придется делать около 200000 итераций с делением и умножением длинных чисел. Если кто знает более быстро сходящиеся ряды, пожалуйста напишите. В раздел Студентам эту тему кидать нет смысла, поскольку студентам такой алгоритм вряд ли понадобится когда-нибудь (им чаще всего достаточного хоть какого-нибудь алгоритма, без ограничений по времени).
Под словом большой я подразумеваю 1000000 знаков. Согласен, что умножение дробных чисел похоже на умножение целых, но как умножать целые числа большой длины? Если умножать обычным способом, без специальных методов, это займет около 10 секунд на вычисление одного умножения, что мне явно не подходит. Поэтому я и прошу мне помочь.
Как будет время, поищу разные ряды еще.
Либо мне нужно перемножение двух длинных чисел как максимум за 1 секунду.
А ты уверен,что правильно понял задание? Просто время, которые ты указал, оно при данных тобой условиях будет на разном железе сильно расбрасываться. И алгоритм, годный для одной машины, на 9 сек, на другой выдаст полминуты.
Открытый код, глянешь оттуда алгоритм работы и структуры данных для представления больших чисел.
Для перемножения двух больших чисел, там помоему БПФ используется. Если нужно быстрее посмотри насчет АГС-алгоритмов.
Посмотри насчет формулы Чудновского. Может он нетолько для числа пи формулу вывел быстрого расчета с заданной точностью.