Число Дотти является фиксированной точкой косинус-функции или решением уравнения cos (x) = x . 1
Ваша задача будет сделать код, который приближает эту константу. Ваш код должен представлять функцию, которая принимает целое число в качестве входных данных и выводит действительное число. Пределом вашей функции при увеличении входных данных должно быть число Дотти.
Вы можете вывести в виде дроби, десятичного или алгебраического представления числа. Ваш вывод должен быть сколь угодно точным, поплавков и двойников недостаточно для этой задачи. Если ваш язык не способен использовать числа произвольной точности, вы должны либо реализовать их, либо выбрать новый язык.
Это вопрос по коду-гольфу, поэтому ответы будут оцениваться в байтах, при этом меньшее количество байтов будет лучше.
подсказки
Один из способов вычисления константы состоит в том, чтобы взять любое число и повторно применить к нему косинус. Поскольку число приложений стремится к бесконечности, результат стремится к фиксированной точке косинуса.
Вот довольно точное приближение числа.
0.739085133215161
1: Здесь мы будем принимать косинус в радианах
источник
Decimal
?ÆẠȷ¡
понимает, что это недействительно. Пытается брахилог; о, нет, брахилог даже не плавает.Ответы:
MATL ,
343019 байтов11 байт благодаря Sanchises !
Последние десятичные цифры в выходных данных могут быть отключены. Тем не менее, количество правильных цифр, начиная с левой, увеличивается с вводом, и результат сходится к фактической константе.
Попробуйте онлайн!
объяснение
Для входа n , начиная с x = 1, применяется функция
x ↦ cos ( x )
с n -значной арифметикой переменной точности n раз.
источник
Python 3 , 58 байт
Попробуйте онлайн!
источник
evalf
в М : оPHP , 50 байт
Попробуйте онлайн!
источник
for($a=$argv[1];$a--;)$j=cos($j);echo$j;
(40 байт) достаточно.GNU bc -l, 30
Оценка включает +1 для
-l
флагаbc
.Последний перевод строки важен и необходим.
Попробуйте онлайн .
-l
делает 2 вещи:c()
для cos (x)bc
имеет произвольный расчет точности)Я не совсем понимаю требования к точности. Как есть, эта программа рассчитывает до 20 знаков после запятой. Если требуется другая точность, то ее
scale=n;
необходимо вставить в начале программы, гдеn
указано количество десятичных знаков. Я не знаю, должен ли я добавить это к моему счету или нет.Также обратите внимание, что для некоторого числа десятичных разрядов (например, 21, но не 20), расчет колеблется с обеих сторон решения в последней цифре. Таким образом, при сравнении текущей и предыдущей итераций я делю обе стороны на 10 (
A
), чтобы стереть последнюю цифру.источник
Mathematica, 22 байта
вход
выход
источник
R (+ Rmpfr), 55 байтов
Деннис теперь добавил Rmpfr в TIO, так что это будет работать; добавил несколько тестовых случаев.
Объяснение:
Принимает код, который я написал из этой задачи, для оценки
cos
n
времени, начиная с которого1
, но сначала я определяю точность, в которой должны быть значения, создавая объектb
классаmpfr
со значением1
и точностьюn
,n>=2
так мы получим больше точности , как мы идем вместе.Попробуйте онлайн!
источник
Октава , 42 байта
Попробуйте онлайн!
В значительной степени дублирует мой ответ на «Приблизительный номер пластика» , но несколько короче из-за более мягких требований.
источник
Mathics или Mathematica, 46 байтов
Попробуйте онлайн!
источник
К: 6 байт
f/
применяется,f
пока не достигнет фиксированной точки.источник
Python - 89 байт
Использует десятичный модуль.
источник
Perl 5, 41 байт
Bignum требуется для произвольной точности. Определяет функцию f, которая рекурсивно применяет косинус до 0 N раз.
TIO, похоже, не имеет bignum, поэтому нет ссылки :(
источник
Mathematica 44 байта
FindRoot
по умолчанию использует метод Ньютона.источник
Python 2, 86 байт
Новая версия, используя предоставленный совет.
Python 2, 105 байт
Использует метод Ньютона и рекурсивную функцию для вычисления значения.
x
является начальным значением иn
является пределом рекурсии.источник
Аксиома, 174 байта
разглаженный и прокомментированный
Результаты:
Я бы использовал метод Ньютона, потому что он был бы быстрее, чем «повторный метод cos (x)»
где в первом столбце указано число цифр, а во втором столбце указано, насколько метод Ньютона быстрее, чем повторный метод cos (x), здесь. Доброе утро
источник