Distance la plus courte d’un point à cette courbe

J’ai besoin de trouver la distance de plusieurs points pour une courbe de la forme: f(x) = a^(k^(bx))

Ma première option consistait à utiliser sa dérivée, en utilisant une ligne de la forme avec l’inverse de la dérivée, en lui donnant les coordonnées du Point et en l’intersection de la courbe d’origine. Enfin, nous calculons la distance entre les points avec une géomésortinge simple.

C’est le processus mathématique que je suis habituellement. Je dois gagner du temps (étant donné que je travaille sur un programme d’algorithmes génétiques), il me faut donc un moyen efficace de le faire. Des idées?

La distance entre un point (c, d) et votre courbe est le minimum de la fonction

 sqrt((cx)^2 + (da^(k^(bx)))^2) 

Pour trouver son minimum, nous pouvons oublier le sqrt et regarder le premier dérivé. Découvrez où il est 0 (il doit s’agir de la distance minimale, car il n’y a pas de distance maximale). Cela vous donne la coordonnée x du point le plus proche de la courbe. Pour obtenir la distance, vous devez calculer la coordonnée y, puis calculer la distance au point (vous pouvez simplement calculer la fonction de distance à ce x , c’est la même chose).

Répétez l’opération pour chacun de vos points.

La première dérivée de la fonction distance est, malheureusement, une sorte de chienne. En utilisant le dérivateur de Wolfram , nous espérons que le résultat (si je n’ai commis aucune erreur de copie):

 dist(x)/dx = 2(b * lna * lnk * k^(bx) * a^(k^(bx)) * (a^(k^(bx)) - d) - c + x) 

Trouver la distance d’un point à une courbe n’est pas une tâche simple, pour cela vous devez trouver la fonction globale entrez la description de l'image ici où f (x) est la fonction qui détermine votre courbe.

Pour cela, vous pouvez utiliser:
Méthode simplex
Nelder_Mead_method
Descente graduelle

Ces méthodes implémentées dans de nombreuses bibliothèques telles que Solver Foundation , NMath, etc.