Comment fonctionne la recherche d'approximation
Prologue
Cet article vise à fournir une compréhension complète de le fonctionnement interne d'une classe de recherche d'approximation, conçue pour approximer des valeurs et des paramètres dans le domaine réel pour des tâches telles que l'ajustement polynomial et l'équation résolution.
Question
Comment pouvons-nous approximer des valeurs ou des paramètres dans le domaine réel (en utilisant des nombres à virgule flottante double précision) pour des tâches telles que l'ajustement de polynômes, la recherche de paramètres dans des fonctions paramétriques, ou en résolvant des équations (difficiles) (telles que transcendantaux) ?
Restrictions
Recherche d'approximation
La recherche d'approximation est analogue à la recherche binaire mais supprime la restriction selon laquelle le paramètre recherché la fonction, la valeur ou le paramètre doit être une fonction strictement monotone. Malgré cet assouplissement, il conserve la même complexité O(log(n)).
Algorithme
Considérons le problème suivant :
Étant donné un fonction y = f(x) et un point souhaité y0, nous visons à trouver x0 tel que y0 = f(x0).
Informations connues
Inconnu :
Algorithme Étapes :
Points de sonde x(i) =
Pour chaque x(i), calculer la distance/erreur ee entre y = f(x(i)) et y0.
Augmenter de manière récursive la précision.
Limiter la plage de recherche au voisinage de la solution trouvée :
Améliorez la précision de la recherche en diminuant le pas de recherche :
Implémentation en C
Le code C fourni démontre l'implémentation de l'algorithme de recherche d'approximation :
#include "approx.h" int main() { // Initialize the approx object with parameters approx aa; aa.init(0.0, 10.0, 0.1, 6, &ee); // Loop until a solution is found for (; !aa.done; aa.step()) { // Retrieve current x x = aa.a; // Compute y y = f(x); // Compute error ee = fabs(y - y0); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!