Definisi
Maksima dan minimum dari fungsi yang diberikan adalah nilai terbesar dan terkecil dari fungsi baik dalam rentang tertentu atau dalam seluruh domain fungsi.
Tantangan
Tantangannya adalah untuk menemukan maksimum lokal dan minimum dari fungsi polinomial tertentu menggunakan metode apa pun yang Anda suka . Jangan khawatir, saya akan mencoba yang terbaik untuk menjelaskan tantangan dan menjaganya sesederhana mungkin.
Input akan berisi semua koefisien polinomial variabel tunggal baik dalam penurunan atau peningkatan urutan daya (terserah Anda). Sebagai contoh,
[3,-7,1]
akan mewakili3x2 - 7x + 1 = 0
[4,0,0,-3]
akan mewakili4x3-3=0.
Bagaimana Mengatasi (Menggunakan Derivatif)?
Sekarang, katakanlah input kita adalah [1,-12,45,8]
, yang tidak lain adalah fungsinya .x3 - 12x2 + 45x + 8
Tugas pertama adalah menemukan turunan dari fungsi itu. Karena ini adalah fungsi polinomial, maka itu memang tugas yang mudah untuk dilakukan.
Derivatif dari adalah . Setiap istilah yang konstan hadir dengan hanya dikalikan. Juga, jika ada istilah yang ditambahkan / dikurangi, maka turunannya juga ditambahkan atau dikurangi masing-masing. Ingat, turunan dari setiap nilai numerik konstan adalah nol. Berikut ini beberapa contoh:
xn
n*xn-1
xn
x3 -> 3x2
9x4 -> 9*4*x3 = 36x3
-5x2 -> -5*2*x = - 10x
2x3 - 3x2 + 7x -> 6x2 - 6x + 7
4x2 - 3 -> 8x - 0 = 8x
Sekarang pecahkan persamaan dengan menyamakan polinomial baru ke nol dan dapatkan hanya nilai integral x.
Masukkan nilai-nilai x dalam fungsi asli dan kembalikan hasilnya. Itu harus menjadi output .
Contoh
Mari kita ambil contoh yang kami sebutkan sebelumnya, yaitu [1,-12,45,8]
,.
- Memasukkan:
[1,-12,45,8]
- Fungsi:
x3 - 12x2 + 45x + 8
- Derivatif ->
3x2 - 24x + 45 + 0 -> [3,-24,45]
- Memecahkan persamaan , kita dapatkan atau .
3x2 - 24x + 45 = 0
x = 3
x = 5
- Sekarang dengan meletakkan
x = 3
danx = 5
dalam fungsinya, kita mendapatkan nilainya(62,58)
. - Output ->
[62,58]
Asumsi
Asumsikan bahwa semua koefisien input adalah bilangan bulat . Mereka bisa dalam meningkatkan atau mengurangi urutan kekuasaan.
Asumsikan input setidaknya polinomial 2-derajat . Jika polinomial tidak memiliki solusi integer, Anda dapat mengembalikan apa pun.
Asumsikan bahwa hasil akhirnya hanya bilangan bulat.
Anda dapat mencetak hasilnya dalam urutan apa pun. Tingkat input polinomial tidak akan lebih dari 5, sehingga kode Anda dapat mengatasinya.
Input akan valid sehingga solusi x bukanlah titik pelana.
Juga, Anda tidak dipaksa untuk melakukannya dengan metode turunan. Anda dapat menggunakan metode apa pun yang Anda suka.
Input dan Output Sampel
[2,-8,0] -> (-8)
[2,3,-36,10] -> (91,-34)
[1,-8,22,-24,8] -> (-1,0,-1)
[1,0,0] -> (0)
Mencetak gol
Ini adalah kode-golf sehingga kode terpendek menang.
(-1, 0, 1)
, yang saya percaya adalah jawaban yang benar sebenarnya ... meskipun tidak yakin. Jika Anda tidak setuju dengan saya ping saya di chat.The input will be valid so that the solutions of x are not saddle points
, case ini[1,0,0,3]
sepertinya memberikan poin sadel.x^3 - 12x^2 + 45x
+8 = 0
, walaupun secara pribadi saya lebih suka Anda menulisnyaf(x)=x^3-12x^2+45x+8
tanpa=0
karena=0
tidak masuk akal karena kita berhadapan dengan suatu fungsi, bukan memecahkan persamaan.Jawaban:
Jelly , 20 byte
Cobalah online!
Penjelasan
Fungsi pembantu dalam program ini diambil dari jawaban Tuan Xcoder di sini yang didasarkan pada jawaban Luis di sini
sumber
3
adalah0
. sunting oh Anda sudah melakukan nvm baru sajaJavaScript (ES7),
129120 byteMengambil koefisien dalam meningkatkan urutan kekuasaan.
Uji kasus
Tampilkan cuplikan kode
Berkomentar
sumber
0,0,1
(x ^ 2 = 0)Julia 0,6 (dengan
Polynomials
paket), 57 byteCobalah online!
Mengambil koefisien dalam urutan yang meningkat, yaitu input pertama adalah istilah konstan.
Contoh dijalankan:
sumber
Java 8,
364239227226218 byteMenggunakan fungsi yang sama dari jawaban saya ini.
-8 byte terima kasih kepada @ OlivierGrégoire dengan mengambil array dalam urutan terbalik.
Penjelasan:
Cobalah online.
sumber
1,0,0
(x ^ 2 = 0)int... ,i, ...; for(;f>0;)A[--f]*=f;
. Kecuali saya salah, ini akan menghemat setidaknya 4 byte. Jika Anda melakukan ini, pastikan untuk membalikkan semua akses Anda ke input.Bahasa Wolfram (Mathematica) , 30 byte
Mengambil polinomial fungsi murni (yaitu polinomial dengan
#
sebagai variabel dan dengan&
di akhir).Cobalah online!
sumber
Haskell , 89 byte
-3 byte terima kasih kepada Laikoni.
Cobalah online!
Membawa koefisien terbalik.
sumber
d<-tail$
dapat disingkat menjadi_:d<-
.Python 3 , 156 byte
Cobalah online!
-2 bytes terima kasih kepada Tn. Xcoder
-22 bytes terima kasih kepada ovs
sumber
Python + numpy, 91
Cobalah online .
sumber
Pari / GP , 28 byte
Mengevaluasi polinomial pada akar turunannya.
Cobalah online!
sumber