Angka Dottie adalah titik tetap dari fungsi cosinus, atau solusi untuk persamaan cos (x) = x . 1
Tugas Anda adalah membuat kode yang mendekati konstan ini. Kode Anda harus mewakili fungsi yang mengambil integer sebagai input dan menghasilkan bilangan real. Batas fungsi Anda saat input bertambah adalah angka Dottie.
Anda dapat menampilkan sebagai pecahan, desimal, atau representasi aljabar dari suatu angka. Output Anda harus mampu menjadi tepat sewenang-wenang, mengapung dan ganda tidak cukup untuk tantangan ini. Jika bahasa Anda tidak mampu menghasilkan angka presisi yang berubah-ubah, maka Anda harus mengimplementasikannya atau memilih bahasa baru.
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Kiat
Salah satu cara menghitung konstanta adalah dengan mengambil angka berapa pun dan berulang kali menerapkan kosinus ke sana. Karena jumlah aplikasi cenderung ke arah tak terbatas, hasilnya cenderung ke arah titik tetap kosinus.
Berikut adalah perkiraan angka yang cukup akurat.
0.739085133215161
1: Di sini kita akan mengambil cosinus dalam radian
sumber
Decimal
?ÆẠȷ¡
menyadari itu tidak valid. Mencoba Brachylog; oh tidak, Brachylog bahkan tidak mengapung.Jawaban:
MATL ,
343019 byteDiskon 11 byte berkat Sanchises !
Angka desimal terakhir dalam output mungkin tidak aktif. Namun, jumlah angka yang benar mulai dari kiri meningkat dengan input, dan hasilnya menyatu dengan konstanta yang sebenarnya.
Cobalah online!
Penjelasan
Untuk input n , dan mulai dari x = 1, ini berlaku fungsi
x ↦ cos ( x )
dengan n -digit variabel-presisi aritmatika n kali.
sumber
Python 3 , 58 byte
Cobalah online!
sumber
evalf
dalam M : oPHP , 50 byte
Cobalah online!
sumber
for($a=$argv[1];$a--;)$j=cos($j);echo$j;
(40 byte) sudah cukup.GNU bc-l, 30
Skor termasuk +1 untuk
-l
benderabc
.Baris terakhir final penting dan perlu.
Cobalah online .
-l
melakukan 2 hal:c()
untuk cos (x)bc
memiliki perhitungan presisi arbitrer)Saya tidak begitu jelas tentang persyaratan presisi. Karena, program ini menghitung hingga 20 tempat desimal. Jika diperlukan ketelitian yang berbeda, maka
scale=n;
perlu dimasukkan pada awal program, di manan
jumlah tempat desimal. Saya tidak tahu apakah saya harus menambahkan ini ke skor saya atau tidak.Perhatikan juga bahwa untuk beberapa angka tempat desimal (mis. 21, tetapi bukan 20), perhitungan berosilasi di kedua sisi solusi pada digit terakhir. Jadi dalam perbandingan iterasi saat ini dan sebelumnya, saya membagi kedua sisi dengan 10 (
A
) untuk menghapus digit terakhir.sumber
Mathematica, 22 byte
memasukkan
keluaran
sumber
R (+ Rmpfr), 55 byte
Dennis sekarang telah menambahkan Rmpfr ke TIO sehingga ini akan berfungsi; menambahkan beberapa kasus uji.
Penjelasan:
Membawa kode saya tulis dari tantangan ini untuk mengevaluasi
cos
n
kali mulai1
, tapi pertama saya menentukan presisi saya ingin nilai-nilai berada di dengan menciptakan sebuah objekb
dari kelasmpfr
dengan nilai1
dan presisin
,n>=2
sehingga kita mendapatkan lebih presisi seperti yang kita pergi bersama.Cobalah online!
sumber
Oktaf , 42 byte
Cobalah online!
Cukup banyak duplikat jawaban saya untuk Perkiraan Nomor Plastik , tetapi agak lebih pendek karena persyaratan yang lebih santai.
sumber
Mathics atau Mathematica, 46 bytes
Cobalah online!
sumber
K: 6 byte
f/
berlakuf
hingga mencapai titik tetap.sumber
Python - 89 byte
Menggunakan modul desimal.
sumber
Perl 5, 41 Bytes
Bignum diperlukan untuk presisi yang sewenang-wenang. Menentukan fungsi f yang secara berulang menerapkan cosinus hingga 0 N kali.
TIO sepertinya tidak memiliki bignum jadi tidak ada tautan :(
sumber
Mathematica 44 Bytes
FindRoot
menggunakan metode Newton secara default.sumber
Python 2, 86 byte
Versi baru menggunakan tip yang disediakan.
Python 2, 105 byte
Menggunakan metode Newton dan fungsi rekursif untuk menghitung nilai.
x
adalah nilai awal dann
merupakan batas rekursi.sumber
Aksioma, 174 byte
ungolfed dan berkomentar
hasil:
Saya akan menggunakan metode Newton karena akan lebih cepat daripada metode 'cos berulang (x)'
di mana di kolom pertama ada jumlah digit dan di kolom kedua ada berapa banyak metode Newton lebih cepat daripada menggunakan metode cos (x) berulang, di sini. Selamat pagi
sumber