Definicja
Maksima i minima danej funkcji są największymi i najmniejszymi wartościami funkcji, które mieszczą się w danym zakresie lub poza nią w całej dziedzinie funkcji.
Wyzwanie
Wyzwanie polega na znalezieniu lokalnych maksimów i minimów danej funkcji wielomianowej za pomocą dowolnej metody . Nie martw się, postaram się jak najlepiej wyjaśnić wyzwanie i postarać się, aby było to możliwie najprostsze.
Dane wejściowe będą zawierać wszystkie współczynniki wielomianu pojedynczej zmiennej w kolejności malejącej lub rosnącej mocy (do ciebie). Na przykład,
[3,-7,1]
będzie reprezentować3x2 - 7x + 1 = 0
[4,0,0,-3]
będzie reprezentować4x3-3=0.
Jak rozwiązać (przy użyciu instrumentów pochodnych)?
Powiedzmy teraz, że nasz wkład to [1,-12,45,8]
tylko funkcja .x3 - 12x2 + 45x + 8
Pierwszym zadaniem jest znalezienie pochodnej tej funkcji. Ponieważ jest to funkcja wielomianowa, więc jest to rzeczywiście proste zadanie do wykonania.
Pochodną jest . Wszelkie obecne stałe warunki są po prostu mnożone. Ponadto, jeśli są dodawane / odejmowane terminy, wówczas ich pochodne są odpowiednio dodawane lub odejmowane. Pamiętaj, że pochodną dowolnej stałej wartości liczbowej jest zero. Oto kilka przykładów:
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
Teraz rozwiąż równanie, zrównując nowy wielomian do zera i uzyskaj tylko wartości całkowite x.
Umieść te wartości x w oryginalnej funkcji i zwróć wyniki. To powinno być wyjście .
Przykład
Weźmy przykład, o którym wspominaliśmy wcześniej, tj [1,-12,45,8]
.
- Wejście:
[1,-12,45,8]
- Funkcjonować:
x3 - 12x2 + 45x + 8
- Pochodna ->
3x2 - 24x + 45 + 0 -> [3,-24,45]
- Rozwiązując równanie , otrzymujemy lub .
3x2 - 24x + 45 = 0
x = 3
x = 5
- Teraz wstawiając
x = 3
ix = 5
do funkcji, otrzymujemy wartości(62,58)
. - Wyjście ->
[62,58]
Założenia
Załóżmy, że wszystkie współczynniki wejściowe są liczbami całkowitymi . Mogą być w rosnącym lub malejącym porządku mocy.
Załóżmy, że wejście jest co najmniej 2-stopniowym wielomianem . Jeśli wielomian nie ma rozwiązań liczb całkowitych, możesz zwrócić wszystko.
Załóżmy, że końcowym wynikiem będą tylko liczby całkowite.
Możesz wydrukować wyniki w dowolnej kolejności. Stopień wielomianu wejściowego nie będzie większy niż 5, aby Twój kod mógł to obsłużyć.
Dane wejściowe będą ważne, aby rozwiązania x nie były punktami siodłowymi.
Ponadto nie musisz tego robić metodą pochodną. Możesz użyć dowolnej metody.
Przykładowe wejście i wyjście
[2,-8,0] -> (-8)
[2,3,-36,10] -> (91,-34)
[1,-8,22,-24,8] -> (-1,0,-1)
[1,0,0] -> (0)
Punktacja
To jest golf golfowy, więc wygrywa najkrótszy kod.
(-1, 0, 1)
, co moim zdaniem jest właściwą poprawną odpowiedzią ... choć nie jestem pewien. Jeśli nie zgadzasz się ze mną, pinguj mnie na czacie.The input will be valid so that the solutions of x are not saddle points
, sprawa[1,0,0,3]
wydaje się dać punkt siodłowy.x^3 - 12x^2 + 45x
+8 = 0
, chociaż osobiście wolę, abyś napisał go tak, jakf(x)=x^3-12x^2+45x+8
bez,=0
ponieważ=0
nie ma to sensu, ponieważ mamy do czynienia z funkcją, a nie rozwiązywaniem równania.Odpowiedzi:
Galaretka , 20 bajtów
Wypróbuj online!
Wyjaśnienie
Funkcja pomocnika w tym programie został zaczerpnięty z odpowiedzi pana Xcoder jest tutaj który był oparty off odpowiedzi Luis tutaj
źródło
3
jest0
. edytuj och już zrobiłeś nvm właśnie przegłosowałem ten komentarzJavaScript (ES7),
129120 bajtówPrzyjmuje współczynniki w rosnącej kolejności mocy.
Przypadki testowe
Pokaż fragment kodu
Skomentował
źródło
0,0,1
(x ^ 2 = 0)Julia 0.6 (z
Polynomials
pakietem), 57 bajtówWypróbuj online!
Przybiera współczynniki w porządku rosnącym, tzn. Pierwszym wejściem jest stały składnik.
Przykładowy przebieg:
źródło
Java 8,
364239227226218 bajtówUżywa tej samej funkcjonalności, co moja odpowiedź.
-8 bajtów dzięki @ OlivierGrégoire , przyjmując tablicę w odwrotnej kolejności.
Wyjaśnienie:
Wypróbuj online.
źródło
1,0,0
(x ^ 2 = 0)int... ,i, ...; for(;f>0;)A[--f]*=f;
. O ile się nie mylę, powinno to zaoszczędzić co najmniej 4 bajty. Jeśli to zrobisz, pamiętaj o odwróceniu wszystkich dostępów do danych wejściowych.Wolfram Language (Mathematica) , 30 bajtów
Pobiera czysto funkcyjny wielomian (tj. Wielomian z
#
jako zmienną i&
na końcu).Wypróbuj online!
źródło
Haskell , 89 bajtów
-3 bajty dzięki Laikoni.
Wypróbuj online!
Odwraca współczynniki.
źródło
d<-tail$
można skrócić do_:d<-
.Python 3 , 156 bajtów
Wypróbuj online!
-2 bajty dzięki Mr. Xcoder
-22 bajty dzięki ovs
źródło
Python + numpy, 91
Wypróbuj online .
źródło
Pari / GP , 28 bajtów
Oceń wielomian u podstaw jego pochodnej.
Wypróbuj online!
źródło