Étant donné une fonction quadratique, c'est f(x) = ax^2 + bx + c
, quel est le moyen le plus rapide pour trouver x
dans [-1, 1]
qui minimise f(x)
?Minimiseur quadratique rapide
Jusqu'à présent, c'est la fonction que je suis venu avec:
double QuadraticMinimizer(double a, double b, double c) {
double x = 1 - 2*(b > 0);
if (a > 0) {
x = -b/(2*a);
if (fabs(x) > 1)
x = Sign(x);
}
return x;
}
Est-il possible de faire mieux?
Le minimum/maximum peut se situer à l'une des trois positions suivantes: un point final de l'intervalle ou l'endroit où f '(x) == 0 ou x == -b/(2a) (ne peut pas être dans l'intervalle). Vérifiez-les tous. –
@Cong Ma: Correct, c'est ce que fait l'extrait de code ci-dessus. Mais il est possible de le faire dans des étapes plus petites? – user92382
Vous avez une étape, à quelle vitesse un code peut-il être plus rapide? Aussi, pourquoi a> 0 et non abs (a)> 0. – user1095108