Un point suivant un autre point mouvant

Tentative de résolution en désaccord avec une simulation

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Un problème à base de mathématiques et de cinématique m'est récemment passé par la tête. J'ai tenté de le résoudre, mais je n'ai pas les outils ou connaissances nécessaires pour faire ça directement. J'ai tenté de penser à une autre façon d'obtenir un résultat, et j'en ai trouvé une qui ne semble néanmoins pas fonctionner. En effet, j'ai fait une simulation pour confirmer le résultat que j'ai obtenu et dont je doutais, et cette simulation me donne un autre résultat. Bref, j'ai besoin d'aide pour trouver mon erreur, et j'aimerais également savoir comment vous auriez résolu ce problème.

Problème

Prenons comme unité de distance le mètre (m) et comme unité de temps la seconde (s). $t$ sera la variable de temps.
Avec P un point, soit P' son vecteur vitesse (dérivée).
Dans un plan se trouvent trois points en mouvement dont voici les coordonnées initiales :

  • $A(0) = (-1, 2)$
  • $B(0) = (1, 2)$
  • $C(0) = (0, 0)$

Le point C est immobile, et le point A va vers le point C à la vitesse de 1m/s.
Note : t ne dépassera pas $\sqrt{5}$, donc A ne dépassera pas C.
Quant au point B, il suit le point A à la vitesse de 2m/s.
On a donc les vitesses suivantes :

  • $A'(t) = (\frac{1}{\sqrt{5}}, \frac{-2}{\sqrt{5}})$
  • $B'(t) = 2\frac{\vec{BA}}{||\vec{BA}||}(t) \text{ (par exemple, } B'(0) = (-2, 0) \text{ )}$
  • $C'(t) = (0, 0)$

Problème : en quel point (ou à quel instant) A(t) et B(t) se rencontrent-ils ?

Tentative de résolution

N'arrivant pas à résoudre les équations différentielles qu'une approche directe donne, j'ai tenté un changement de référentiel. Etant donné que le mouvement de B dépend de la position de A, fixons A. Le nouveau référentiel est donc en mouvement constant par rapport au précedent, de 1m/s suivant $(\frac{1}{\sqrt{5}}, \frac{-2}{\sqrt{5}})$.
On en déduit les nouvelles vitesses de chaque point :

  • $A'(t) = (0, 0)$
  • $B'(t) = (\frac{-1}{\sqrt{5}}, \frac{2}{\sqrt{5}}) + 2\frac{\vec{BA}}{||\vec{BA}||}(t)$
  • $C'(t) = (\frac{-1}{\sqrt{5}}, \frac{2}{\sqrt{5}})$

A partir de là, on peut séparer les deux composantes de la vitesse de B pour en déduire leur "contribution" au rapprochement de B vers A.
Soit $u(t) = (\frac{-1}{\sqrt{5}}, \frac{2}{\sqrt{5}})$ et $v(t) = 2\frac{\vec{BA}}{||\vec{BA}||}(t)$.
$B'(t) = u(t) + v(t)$.
La "contribution" de v dans le mouvement de B vers A est de 2t.
Celle de u est égale à $||\vec{BA}||(0) - ||\vec{AD}||(t)$ avec $D(t) = B(0) + v(t)$,
ce qui donne $2 - \sqrt{(2-\frac{t}{\sqrt{5}})^2 + (\frac{2t}{\sqrt{5}})^2} = 2 - \sqrt{t^2 - \frac{4}{\sqrt{5}}t + 4}$

On cherche donc t tel que les contributions de u et de v totalisent $||\vec{BA}||(0) = 2$, soit
$2t + 2 - \sqrt{t^2 - \frac{4}{\sqrt{5}}t + 4} = 2$
$2t = \sqrt{t^2 - \frac{4}{\sqrt{5}}t + 4}$
$4t^2 = t^2 - \frac{4}{\sqrt{5}}t + 4 \text{ avec } t>0$
$t^2 + \frac{4}{3\sqrt{5}}t + \frac{4}{3} = 0 \text{ avec } t>0$
$t = \frac{2}{\sqrt{5}}$

Dans le référentiel initial, A et B se rencontrent donc en $A(\frac{2}{\sqrt{5}}) = (\frac{-3}{5}, \frac{6}{5}) = (-0.6, 1.2)$

Simulation

J'ai codé une simple simulation en C++, disponible ici : http://coliru.stacked-crooked.com/a/af6b0d7ea99a4b90.
Le résultat ne correspond pas à mes calculs : le point de rencontre dans la simulation est environ (-0.5371, 1.0741) au lieu de (-0.6, 1.2).

Bref, je ne pense pas que la simulation soit mauvaise ; ma résolution est sans doute erronée. Ma question est : où est l'erreur ? Et aussi, comment résoudre le problème autrement ?

Merci.

+0 -0

Ta définition du mouvement est un peu ambiguë … (une vitesse dépend d'un référentiel) (Pour simplifier je ne traite que le cas d'un mouvement unidimensionnel, sur l'axe $u_x$ par exemple)

Soit le point $B$ se déplace dans le référentiel de $A$. (À une vitesse de $v$).
Dans ce cas, si on note $d$ la distance entre $A$ et $B$ à $t = 0$, alors $B$ aura rattrapé $A$ à $t = \frac{d}{t}$.

Soit le point $B$ se déplace dans le référentiel de $C$ (terrestre donc, entre autre).
Dans ce cas, si on note $v_A$ la vitesse de $A$ dans le référentiel de $C$ et $v_B$ la vitesse de $B$ dans le référentiel de $C$, et si on note $x_A$ et $x_B$ les positions initiales de $A$ et $B$, alors les deux points se rencontrent à $t = \frac{x_B - x_A}{v_A - v_B}$.

En lisant ton code, je me doute que ton problème ne rentre pas dans les deux cas précédents :p, mais j'ai du mal à voir ta définition exacte du déplacement de B ..

+0 -0
Staff

Salut,

Sans être affirmatif à 100%, je ne vois pas de faille dans ton raisonnement (assez élégant par ailleurs).

Je pense plutôt que le problème se trouve au niveau de la simulation pour une raison simple, lorsque la distance entre tes points tends vers 0, le terme $\dfrac{\vec{AB}}{||\vec{AB}||}$ fait n'importe quoi. Du coup, tu peux avoir des erreurs numériques importantes.

Pour ce qui est de résoudre le système autrement, je n'ai pas l'impression qu'il soit possible d'extraire une solution analytique.

@Choups :

Ta définition du mouvement est un peu ambiguë … (une vitesse dépend d'un référentiel)

Il n'y a rien d'ambiguë. Il pose d'abord des vitesses dans un repère cartésien qui sert de référentiel. Après, il change de repère et de référentiel du même coup en composant les vitesses de façon classique.

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0
Auteur du sujet

j'ai du mal à voir ta définition exacte du déplacement de B ..

Choups314

B suit A, c'est-à-dire qu'à chaque instant, sa vitesse est dirigée vers A, d'où $B′(t) = 2\frac{\vec{BA}}{||\vec{BA}||}(t) \text{ (avec } B' = v_B \text{)}$
Dans ma résolution, je rajoute simplement le terme correspondant au changement de référentiel (soit le terme à ajouter à A' pour que A soit immobile).

Je pense plutôt que le problème se trouve au niveau de la simulation pour une raison simple, lorsque la distance entre tes points tends vers 0, le terme $\dfrac{\vec{AB}}{||\vec{AB}||}$ fait n'importe quoi. Du coup, tu peux avoir des erreurs numériques importantes.

@dri1

J'ai tenté de modifier la simulation de telle sorte que la précision augmente lorsque B s'approche de A, mais les résultats restent les mêmes.
http://coliru.stacked-crooked.com/a/89785dcc43a7f039
Une erreur dans ma simulation me surprendrait plus qu'une erreur dans mon raisonnement, surtout si l'erreur dans la simulation ne donne pas de résultats cohérents en modifiant la précision (ce que j'ai essayé).
Autant la première simulation pouvait éventuellement donner de faux résultats à cause des mouvements discrets, "pas à pas" ; autant celle-ci ne souffre pas du problème.

J'ai pensé au fait que, dans la simulation, le point B parcourt un chemin plus ou moins grand puisqu'il approche une courbe par des segments. Mais, en encadrant la courbe théorique par un chemin plus grand (le code précédent) et un chemin plus court (en inversant les lignes 28 et 30 1), j'obtiens toujours les mêmes résultats.

Je ne sais plus quoi penser. Aurais-tu quelque chose à proposer pour mener une meilleure simulation ?


  1. Inverser ces lignes fait que la position du point A est modifiée avant le calcul de la vitesse de B, ce qui amène B à prendre un chemin plus court, vers "l'intérieur" de la courbe théorique. 

+0 -0
  • Ca fait quoi si $A$ et $B$ sont alignés par rapport à $C$ (calcul de la direction plus simple) ?
  • Ca fait quoi si $B$ reste assez loin de $A$ ?

Édité par Vayel

+0 -0
Staff

Je pense pas que ça puisse changer grand chose d'augmenter la résolution temporelle quand on approche d'un point singulier comme ici. Par ailleurs, tu as un autre problème aussi je pense, c'est que la vitesse en $y$ est carrément minuscule devant celle en $x$ dans la première partie de la trajectoire. Du coup, tu as une "dissymétrie" en terme de résolution qui peut peut être poser problème sur la pertinence des prédictions à long terme.

Je vais réfléchir de mon côté, voir si je trouve quelque chose. J'ai commencé un peu à remanier les équations pour avoir une forme plus exploitable, mais ça donne pas grand chose de bien terrible pour l'instant…

I don't mind that you think slowly, but I do mind that you are publishing faster. – W. Pauli

+0 -0
Auteur du sujet
  • Ca fait quoi si $A$ et $B$ sont alignés par rapport à $C$ (calcul de la direction plus simple) ?
  • Ca fait quoi si $B$ reste assez loin de $A$ ?

Vayel

Si A, B et C sont initialement alignés, le problème est trivial. Mais ce n'est justement pas le cas ici.
Je ne comprends pas ce que tu veux dire par "B reste assez loin de A". Dans quelles circonstances ?

Je pense pas que ça puisse changer grand chose d'augmenter la résolution temporelle quand on approche d'un point singulier comme ici.

@dri1

Le fait que l'écart entre mes résultats théoriques et de simulation soit aussi grand me pose problème (dans la simulation, A parcourt presque 16% de distance de plus). Même si c'est un point singulier, l'écart devrait à mon sens être plus faible car le reste de la trajectoire est, normalement, bien simulée. La fin de la trajectoire ne devrait pas conduire à une telle erreur si l'on modifie de moins en moins les positions de A et B.

J'ai pensé à une possible erreur dans mon raisonnement, à propos des contributions de u et de v, u étant la vitesse de B dans le sens de $\vec{CA}$ et v, la vitesse originelle de B (qui fait que B "suit" A).
J'ai calculé la contribution de u comme partant de $B(0)$, mais v agit également dans le sens de u. Ne faudrait-il donc pas calculer la contribution de u tout au long de la trajectoire de B ? Cela reviendrait, il me semble, à un problème de même complexité que l'énoncé de départ, et expliquerait pourquoi mes résultats semblent si faciles à obtenir, ainsi que le désaccord avec la simulation.

+0 -0

Si A, B et C sont initialement alignés, le problème est trivial. Mais ce n'est justement pas le cas ici.

Justement : ta simulation gère-t-elle correctement ce cas trivial, i.e. le problème vient-il du calcul de la direction ?

Je ne comprends pas ce que tu veux dire par "B reste assez loin de A". Dans quelles circonstances ?

@dri1 a dit que le problème pourrait advenir quand $A$ et $B$ étaient proches, pour calculer la norme du vecteur. Si tu places $B$ loin de $A$ de sorte qu'il n'ait pas le temps de trop s'en approcher avant la fin (quand $A$ atteint $C$), la simulation fonctionne-t-elle ?

+0 -0
Auteur du sujet

Si A, B et C sont initialement alignés, le problème est trivial. Mais ce n'est justement pas le cas ici.
Justement : ta simulation gère-t-elle correctement ce cas trivial, i.e. le problème vient-il du calcul de la direction ?

Vayel

Ah, je n'avais pas compris que tu parlais de la simulation.
Dans le cas où les points sont alignés, la simulation fonctionne parfaitement. Il suffit par exemple de commencer avec $A = (-3, 0), B = (-5, 0), C = (0, 0)$, et le résultat correspond à ce qui est attendu : $(-1, 0)$.

Et dans le cas où B n'a pas le temps de rejoindre A, comment je définis la fin ? Le problème est justement de savoir où (ou quand) se rejoignent A et B. Du coup, je ne vois pas vraiment comment écarter de la simulation un problème qui serait causé par la proximité de A et B.

+0 -0
Auteur du sujet

Je croyais que $A$ ne dépassait pas $C$.

Vayel

J'avoue ne pas te suivre… C'est le cas dans mon problème en particulier (c'est assez facile à voir), pas dans une de ses variations (différentes coordonnées de départ par exemple). Quoique, de toutes façons, le point C n'est pas très utile : on pourrait bien dire que le point A va dans une certaine direction, à une certaine vitesse, à l'infini (et que le point B le suit). Mais je n'arrive pas à comprendre ce que tu veux faire de cette note qui, finalement, n'est pas nécessaire.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte