Apa itu Ultraradikal
The ultraradical , atau Bawa radikal, dari sejumlah nyata didefinisikan sebagai akar hanya nyata dari quintic persamaan .
Di sini kita menggunakan untuk menunjukkan fungsi ultraradikal. Misalnya, , karena .
Tantangan
Tulis sebuah program atau fungsi lengkap, yang menggunakan bilangan real sebagai input, dan mengembalikan atau menampilkan ultraradikalnya.
Persyaratan
Tidak ada celah standar yang diizinkan. Hasil untuk kasus uji di bawah ini harus akurat hingga setidaknya 6 digit signifikan, tetapi secara umum program harus menghitung nilai yang sesuai untuk setiap input bilangan real yang valid.
Uji Kasus
9 tempat desimal dibulatkan ke 0 diberikan untuk referensi. Penjelasan ditambahkan untuk beberapa kasus uji.
a | UR(a)
---------------------------+---------------------
0 | 0.000 000 000 # 0
1 | -0.754 877 (666) # UR(a) < 0 when a > 0
-1 | 0.754 877 (666) # UR(a) > 0 when a < 0
1.414 213 562 | -0.881 616 (566) # UR(sqrt(2))
-2.718 281 828 | 1.100 93(2 665) # UR(-e)
3.141 592 653 | -1.147 96(5 385) # UR(pi)
-9.515 716 566 | 1.515 71(6 566) # 5th root of 8, fractional parts should match
10 | -1.533 01(2 798)
-100 | 2.499 20(3 570)
1 000 | -3.977 89(9 393)
-100 010 | 10.000 0(00 000) # a = (-10)^5 + (-10)
1 073 741 888 | -64.000 0(00 000) # a = 64^5 + 64
Kriteria Menang
Pengajuan terpendek yang valid dalam setiap bahasa akan menang.
sumber
dan
bukannya↦
danᵀ
Python 3.8 (pra-rilis) , 60 byte
Cobalah online!
Metode iterasi Newton.x′= x - f( x )f′( x )= x - x5+ x + n5 x4+ 1
Saat menggunakan4 x5- n5 x4+ 1 secara matematis setara, itu membuat loop program selamanya.
Pendekatan lain:
Python 3.8 (pra-rilis) , 102 byte
Cobalah online!
Pencarian biner, mengingat bahwa fungsinya
x^5+x+a
meningkat. Atur batas ke-abs(x)
danabs(x)
cukup tetapi-x*x-1
danx*x+1
lebih pendek.Batas rekursi BTW Python agak terlalu rendah sehingga perlu memiliki 1e-9, dan
:=
itu disebut operator walrus.sumber
JavaScript (ES7), 44 byte
Versi yang lebih aman menggunakan rumus yang sama seperti di bawah ini tetapi dengan jumlah iterasi yang tetap.
Cobalah online!
JavaScript (ES7),
4342 byteMetode Newton, menggunakan5 x4+ 5 sebagai pendekatan f′( x ) = 5 x4+ 1 .
Cobalah online!
Bagaimana?
Kita mulai denganx0= 0 dan menghitung secara rekursif:
sampaixk- xk + 1 tidak signifikan.
sumber
Jelly , 8 byte
Cobalah online!
Bagaimana itu bekerja:
Membangun daftar
[a, 1, 0, 0, 0, 1]
dengan menambahkana
ke representasi biner dari17
. Kenapa daftar ini? Karena sesuai dengan koefisien yang kami cari:Kemudian,
Ær
adalah built-in yang memecahkan persamaan polinomialP(x) = 0
, diberi daftar koefisien (apa yang kami bangun sebelumnya).Kami hanya tertarik pada solusi nyata, jadi kami mengambil entri pertama dalam daftar solusi
Ḣ
.sumber
APL (Dyalog Unicode) ,
1110 byte SBCS-1 berkat dzaima
Fungsi awalan diam-diam anonim.
Cobalah online!
(
...)⍣¯1
terapkan fungsi tacit berikut negatif satu kali:-
argumen yang dinegasikan-
minus*∘5
argumen yang diangkat menjadi kekuatan 5Intinya, ini bertanya: x mana yang harus saya beri makan ke f ( x ) = - x - x 5 sehingga hasilnya menjadi y .x f( x ) = - x - x5 y
sumber
R , 43 byte
Cobalah online!
nlm
nlm
a
sumber
R , 56 byte
Cobalah online!
polyroot
polyroot
sumber
polyroot
mengembalikan semua akar yang kompleks ... Kalau tidak, ia akan menang.J , 14 byte
Cobalah online!
J memiliki built in untuk memecahkan polinomial ...
p.
Batas waktu 4 kasus uji terakhir pada TIO, tetapi secara teori masih benar.
bagaimana
Koefisien polinomial untuk builtin J diambil sebagai daftar numerik, dengan koefisien untuk yang
x^0
pertama. Ini artinya daftarnya adalah:1 0 0 0 1
adalah 17 dalam biner, jadi kami menyatakannya sebagai#:@17
, lalu tambahkan input,
, lalu terapkanp.
, lalu hapus kotak hasilnya dengan raze;
, lalu ambil elemen terakhir{:
sumber
Ruby ,
5341 byteCobalah online!
Menggunakan Newton-Raphson dengan jumlah iterasi yang tetap, dan trik aproksimasi yang sama seperti Arnauld
sumber
Pari / GP ,
34322624 byteCobalah online!
sumber
s(-100010)
menghasilkan-8.090... - 5.877...*I
bukan hanya10
? Apakah ini batasan bahasa untuk kasus uji besar? PS: Anda dapat menyimpan 2 byte mengubah keduanya0.2
menjadi.2
. :)a->solve(X=-a,a,X^5+X+a)
.05AB1E , 12 byte
Cobalah online!
Metode Newton.
sumber
k4,
3331 bytenewton-raphson dihitung secara iteratif hingga suatu angka terkonvergensi
sunting: -2 terima kasih kepada ngn!
wah, salah semua ini ...
K (oK), 10 bytesumber
[
]
tampaknya tidak perluPari / GP , 24 byte
Cobalah online!
sumber
solve
memiliki analogC, 118b / 96b
118 byte dengan nama fungsi asli dan dengan akurasi ekstra (ganda). Dengan sedikit peretasan mungkin lebih baik, tetapi tidak dapat digunakan.
96 byte dengan iterasi tetap.
Sebenarnya, fungsi kita sangat baik sehingga kita dapat menggunakan adaptasi yang lebih baik dari metode Newton. Implementasi yang jauh lebih cepat dan praktis (150 byte)
Saya memeriksanya, tapi saya terlalu malas untuk mengetahui seberapa cepat itu. Harus setidaknya satu urutan lebih cepat daripada Newton.
sumber
x-=t=...
pekerjaan?Bersih ,
6160 byteCobalah online!
Metode Newton, pertama kali diterapkan di jawaban user202729 .
Bersihkan , 124 byte
Cobalah online!
Pencarian "biner", mempersempit area pencarian ke atas atau bawah 99,6% dari rentang antara batas tinggi dan rendah pada setiap iterasi, bukannya 50%.
sumber
Python 3 + sympy, 72 byte
Cobalah online!
sumber
Oktaf , 25 byte
Cobalah online!
sumber
Maplesoft Maple , 23 byte
Sayangnya, tidak ada kompiler / kalkulator Maple online di luar sana AFAIK. Tetapi kodenya cukup mudah.
sumber