Définition
Les maxima et les minima d'une fonction donnée sont les valeurs les plus grandes et les plus petites de la fonction soit dans une plage donnée, soit dans le domaine entier de la fonction.
Défi
Le défi est de trouver les maxima et minima locaux d'une fonction polynomiale donnée en utilisant n'importe quelle méthode que vous aimez . Ne vous inquiétez pas, je ferai de mon mieux pour expliquer le défi et le garder aussi simple que possible.
L'entrée contiendra tous les coefficients du polynôme variable unique dans l'ordre de puissance décroissant ou croissant (à vous de choisir). Par exemple,
[3,-7,1]
représentera3x2 - 7x + 1 = 0
[4,0,0,-3]
représentera4x3-3=0.
Comment résoudre (en utilisant des dérivés)?
Maintenant, disons que notre entrée est [1,-12,45,8]
, qui n'est rien d'autre que la fonction .x3 - 12x2 + 45x + 8
La première tâche consiste à trouver la dérivée de cette fonction. Puisqu'il s'agit d'une fonction polynomiale, c'est en effet une tâche simple à faire.
La dérivée de est . Tout terme constant présent avec est simplement multiplié. De plus, s'il y a des termes ajoutés / soustraits, leurs dérivés sont également ajoutés ou soustraits respectivement. N'oubliez pas que la dérivée de toute valeur numérique constante est zéro. Voici quelques exemples:
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
Maintenant, résolvez l'équation en égalisant le nouveau polynôme à zéro et obtenez seulement les valeurs intégrales de x.
Mettez ces valeurs de x dans la fonction d'origine et retournez les résultats. Cela devrait être la sortie .
Exemple
Prenons l'exemple que nous avons mentionné précédemment, à savoir [1,-12,45,8]
.
- Contribution:
[1,-12,45,8]
- Une fonction:
x3 - 12x2 + 45x + 8
- Dérivé ->
3x2 - 24x + 45 + 0 -> [3,-24,45]
- Résoudre l'équation , nous obtenons ou .
3x2 - 24x + 45 = 0
x = 3
x = 5
- Maintenant, en mettant
x = 3
etx = 5
dans la fonction, nous obtenons les valeurs(62,58)
. - Sortie ->
[62,58]
Hypothèses
Supposons que tous les coefficients d'entrée sont des entiers . Ils peuvent être dans l'ordre croissant ou décroissant de puissance.
Supposons que l' entrée soit au moins un polynôme à 2 degrés . Si le polynôme n'a pas de solutions entières, vous pouvez renvoyer n'importe quoi.
Supposons que le résultat final sera uniquement des entiers.
Vous pouvez imprimer les résultats dans n'importe quel ordre. Le degré du polynôme d'entrée ne serait pas supérieur à 5, afin que votre code puisse le gérer.
L'entrée sera valide pour que les solutions de x ne soient pas des points de selle.
De plus, vous n'êtes pas obligé de le faire par la méthode dérivée. Vous pouvez utiliser n'importe quelle méthode selon vos envies.
Exemple d'entrée et de sortie
[2,-8,0] -> (-8)
[2,3,-36,10] -> (91,-34)
[1,-8,22,-24,8] -> (-1,0,-1)
[1,0,0] -> (0)
Notation
C'est le code-golf donc le code le plus court l'emporte.
(-1, 0, 1)
, ce qui, je crois, est la vraie réponse correcte ... mais je ne suis pas sûr. Si vous n'êtes pas d'accord avec moi, envoyez-moi un message de chat.The input will be valid so that the solutions of x are not saddle points
, l'affaire[1,0,0,3]
semble donner un point de selle.x^3 - 12x^2 + 45x
+8 = 0
, bien que personnellement je préfère que vous l'écriviez commef(x)=x^3-12x^2+45x+8
sans le=0
car=0
n'a pas de sens puisque nous avons affaire à une fonction, pas à la résolution d'une équation.Réponses:
Gelée , 20 octets
Essayez-le en ligne!
Explication
La fonction d'aide dans ce programme a été tirée de la réponse de M. Xcoder ici qui était basée sur la réponse de Luis ici
la source
3
est0
. modifier oh vous avez déjà fait nvm vient de voter ensuite le commentaireJavaScript (ES7),
129120 octetsPrend les coefficients par ordre croissant de puissance.
Cas de test
Afficher l'extrait de code
Commenté
la source
0,0,1
(x ^ 2 = 0)Julia 0.6 (avec
Polynomials
package), 57 octetsEssayez-le en ligne!
Prend les coefficients dans l'ordre croissant, c'est-à-dire que la première entrée est le terme constant.
Exemple d'exécution:
la source
Java 8,
364239227226218 octetsUtilise la même fonctionnalité de ma réponse.
-8 octets grâce à @ OlivierGrégoire en prenant le tableau dans l'ordre inverse.
Explication:
Essayez-le en ligne.
la source
1,0,0
(x ^ 2 = 0)int... ,i, ...; for(;f>0;)A[--f]*=f;
. Sauf erreur, cela devrait vous faire économiser au moins 4 octets. Si vous faites cela, assurez-vous d'inverser tous vos accès à l'entrée.Wolfram Language (Mathematica) , 30 octets
Prend un polynôme à fonction pure (c'est-à-dire un polynôme avec
#
comme variable et avec un&
à la fin).Essayez-le en ligne!
la source
Haskell , 89 octets
-3 octets grâce à Laikoni.
Essayez-le en ligne!
Prend les coefficients inversés.
la source
d<-tail$
peut être raccourci_:d<-
.Python 3 , 156 octets
Essayez-le en ligne!
-2 octets grâce à M. Xcoder
-22 octets grâce aux ovs
la source
Python + numpy, 91
Essayez-le en ligne .
la source
Pari / GP , 28 octets
Évaluez le polynôme à la racine de sa dérivée.
Essayez-le en ligne!
la source