A*x + b*cos(x) + c*sin(x) = 0

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
bertrand1
Messages: 5
Enregistré le: 14 Mar 2012, 16:09

a*x + b*cos(x) + c*sin(x) = 0

par bertrand1 » 14 Mar 2012, 16:14

Bonjour,

Je souhaite pour le taf résoudre l'équation suivante:

a*x + b*cos(x) + c*sin(x) = 0

Pensez-vous qu'une solution analytique existe?



Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 14 Mar 2012, 17:06

bertrand1 a écrit:Bonjour,

Je souhaite pour le taf résoudre l'équation suivante:

a*x + b*cos(x) + c*sin(x) = 0

Pensez-vous qu'une solution analytique existe?

Dans un premier temps, je ne me compliquerais pas la vie et je ferais un développement limité.
Sinon, il y a la méthode de l'arc moitié, mais là on obtiendrait une équation de degré 3, difficile à résoudre.
Dans tous les cas, Newton est votre ami.

Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

par Mathusalem » 14 Mar 2012, 17:22

bertrand1 a écrit:Bonjour,

Je souhaite pour le taf résoudre l'équation suivante:

a*x + b*cos(x) + c*sin(x) = 0

Pensez-vous qu'une solution analytique existe?


Le développement limité comme proposé plus haut ne sert à rien.

Selon les paramètres a,b, et c, l'équation possède différents nombres de zéros. Lorsque a est très grand devant b et c, la solution est unique et contenue dans [-1,1] environ, mais dans le cas contraire, lorsque a est petit devant b et c, les fonctions trigonometriques ont 'le temps' de croiser plein de fois l'origine et ainsi créer autant de zéros.

Il faut y aller au cas par cas selon les paramètres a,b et c, et tenter une solution numérique, ce qui se cachait derrière le commentaire en rapport avec Newton du post d'en-dessus.

Bony
Membre Relatif
Messages: 123
Enregistré le: 11 Oct 2011, 20:54

par Bony » 14 Mar 2012, 17:31

ça dépend de la question proposée tu veux que cette équation soit vraie pour tout x ou bien tu cherches un x tel que pour a b, c fixés tu vérifies l'équation

bertrand1
Messages: 5
Enregistré le: 14 Mar 2012, 16:09

par bertrand1 » 15 Mar 2012, 17:08

Je vais peut-être reformuler le problème. Je cherche en fait à calculer un temps "t" (positif) tel que

s*t = x*cos(a*t) + y*sin(a*t)

s est une vitesse positive (en m/s)
a est une vitesse angulaire positive ou négative. (en rad/sec)
(x,y) est un point de l'espace 2D. ( 0m
J'ai déjà effectué les 2 méthodes que vous proposez (newton et dev limité).

Le développement limité me permet d'avoir une expression analytique pour x, de calculer ses dérivées selon a,s et (x,y) et ainsi d'estimer l'incertitude sur la solution. (Je connais les incertitudes sur a,s et x,y). Le problème est que pour un "a" relativement grand, la solution n'est plus vraiment exacte.

Newton me permet d'avoir un résultat correct. Par contre je ne sais pas comment ensuite calculer l'incertitude sur la solution. De plus, cela me pose un problème de temps de calcul. (L'algo est embarqué et les contraintes temps-réel sont énormes).

Une solution analytique serait vraiment l'idéal pour mes besoins. Même s'il faut galérer pour la trouver.

Dlzlogic, j'ai l'impression que la méthode de l'arc moitié ne fonctionne pas pour cette équation. Comment arrives-tu à une équation de degré 3?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 15 Mar 2012, 17:51

Dlzlogic, j'ai l'impression que la méthode de l'arc moitié ne fonctionne pas pour cette équation. Comment arrives-tu à une équation de degré 3?
Oui, je crois que je suis allé un peu vite. L'ai pas pris de crayon, alors :hum: (dénominateur des sin et cos = 1+t² ; après réduction au même dénominateur 3è degré :marteau: )
L'équation
a sin x + b cos x = c se résout facilement en posant b/a = tgA
d'ou sin(x+A)=c/a cosA (si c² <= a² + b²)

En introduisant une variable auxiliaire, ça pourrait peut-être marcher.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 15 Mar 2012, 21:09

salut,


on pose déjà , et on a donc
à résoudre en

a la classique pour resoudre une eq trigo type


on pose ici et on a donc

soit en posant et

cad

avec

je crois pas qu'il existe une expression analytique pour u, on peut quand même remarque qu'à gauche on a leq dune droite, et qu'à droite on a leq dune sinusoide.
Donc on est sur qu'il y a une solution, et comme la fait remarquer mathusalem, il peut yen avoir pas mal, si la droite est peu inclinée ( petit)
la vie est une fête :)

JeanJ
Membre Relatif
Messages: 264
Enregistré le: 09 Jan 2010, 09:04

par JeanJ » 16 Mar 2012, 09:30

bertrand1 a écrit: cela me pose un problème de temps de calcul. (L'algo est embarqué et les contraintes temps-réel sont énormes).
Une solution analytique serait vraiment l'idéal pour mes besoins. Même s'il faut galérer pour la trouver.


Ne cherche pas de solution analytique simple (avec les fonctions usuelles) : il n'y en a pas.
Même si on trouvait une expression analytique avec des fonctions spéciales, cela ne serait probablement pas un avantage car le calcul numérique d'une fonction spéciale serait vraisemblablement aussi compliqué que la résolution numérique directe de l'équation.
Toutefois, s'agissant d'algorithme embarqué et de calculs répétitifs, il peut y avoir des méthodes pour réduire considérablement les temps de calcul.
Sauf pour le calcul au point de départ par les méthodes que tu connais, les calculs successifs suivants peuvent éviter de résoudre directement l'équation à chaque fois : On pourrait se contenter de faire seulement une correction du résultat précédent, ce qui est plus rapide qu'une résolution complète.
Pour évaluer l'incertitude qui en résulte (mais pas à chaque fois, pour économiser du temps), il suffit de reporter le résultat dans l'équation, ce qui donne l'écart. C'est un calcul direct contrairement à une résolution d'équation qui est un calcul récursif, donc beaucoup plus long.

bertrand1
Messages: 5
Enregistré le: 14 Mar 2012, 16:09

par bertrand1 » 16 Mar 2012, 11:19

@Dlzlogic et @fatal_error, merci (et bravo!) pour l'astuce permettant de réduire l'équation à une forme simplifiée cos(x + a) = b*x (ou sin(x + a) = b*x)

Cela permet de voir que l'on ira pas beaucoup plus loin dans la résolution de cette équation.
Par contre, effectuer un développement limité sur cette forme d'équation me parait plus intéressant que sur l'équation initiale.

De toute façon, Je vais me concentrer sur la résolution numérique du problème en essayant de minimiser le plus possible les calculs.

Quant au calcul de l'incertitude sur x, je ne suis pas sur de bien comprendre ta méthode jeanJ. Une fois qu'une solution est trouvée, comment fais-tu pour propager l'incertude des coefficients vers cette solution?

Dlzlogic
Membre Transcendant
Messages: 5273
Enregistré le: 14 Avr 2009, 12:39

par Dlzlogic » 16 Mar 2012, 13:39

Bonjour,
Je suis tout à fait d'accord avec JeanJ, un calcul type itératif, Newton, bien mené, est tout aussi efficace qu'un calcul analytique compliqué.
Je me posais la question de la valeur de départ du calcul. Je n'arrive pas à visualiser le phénomène dont il s'agit. Le but serait de trouver une formule approchée, facile à résoudre, dont de résultat servirait de valeur initiale, la méthode de JeanJ est très astucieuse aussi.
Pour le calcul de la précision, je vais regarder.

bertrand1
Messages: 5
Enregistré le: 14 Mar 2012, 16:09

par bertrand1 » 16 Mar 2012, 13:58

En gros, il s'agit ici de calculer un temps de collision entre un point (x,y) soumis à une rotation de vitesse angulaire constante "a" et un autre soumis à une vitesse longitudinale constante "s". Je suis intéressé par des temps de collision inférieurs à 30s.

Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

par Mathusalem » 16 Mar 2012, 14:12

bertrand1 a écrit:En gros, il s'agit ici de calculer un temps de collision entre un point (x,y) soumis à une rotation de vitesse angulaire constante "a" et un autre soumis à une vitesse longitudinale constante "s". Je suis intéressé par des temps de collision inférieurs à 30s.


Quelle est la direction de l'objet soumis en vitesse longitudinale ? Enfin il faudrait être un petit peu plus spécifique : direction de l'objet de vitesse longitudinale, centre de rotation de l'autre objet, rayon de rotation.

Vitesses et positions initiales aussi

Car intuitivement je dirais que ton equation repond pas au problème. Ca n'a aucun sens d'avoir autant de temps de collisions distincts. Une droite coupe un cercle en 2 points maxi, donc on devrait avoir 2 temps de collision maximum, s'il s'avere qu'aux temps t1 et t2 les deux objets se trouvent à l'intersection droite-cercle.

bertrand1
Messages: 5
Enregistré le: 14 Mar 2012, 16:09

par bertrand1 » 16 Mar 2012, 18:08

Voici le problème complet:

Je suis un robot positionné en (0,0) (repère vue du ciel). Je connais la position d'un objet dans l'espace (x,y). Je connais ma vitesse longitudinale "s" (parallèle à l'axe des x) ainsi que que ma vitesse angulaire "a" (rotation autour de l'axe "z" si on étend le repère en 3D). "a" > 0 pour les rotations vers y>0, "a"<0 pour les rotations vers y<0. "a"=0, si le robot va tout droit.
La coordonnée x de l'objet est positive, ainsi que la vitesse du robot. (Le robot va à la rencontre de l'objet).

"s" et "a" sont des données capteurs dont on connait l'incertitude. la position (x,y) est mesurée aussi à l'aide de capteurs et on connait son imprécision.

Je veux savoir à quel temps "t", l'objet sera en collision avec l'axe perpendiculaire au vecteur vitesse du robot, avec comme hypothèses que "s" et "a" seront constant jusqu'à la collision. Je veux aussi connaitre l'incertitude sur "t".

Après simplification, le problème revient à résoudre:

s*t = x*cos(a*t) + y*sin(a*t)

Si a = 0, t = x/s, ce qui est l'expression classique d'un temps de collision.

Mathusalem
Membre Irrationnel
Messages: 1837
Enregistré le: 14 Sep 2008, 03:41

par Mathusalem » 16 Mar 2012, 20:09

bertrand1 a écrit:Voici le problème complet:

Je suis un robot positionné en (0,0) (repère vue du ciel). Je connais la position d'un objet dans l'espace (x,y). Je connais ma vitesse longitudinale "s" (parallèle à l'axe des x) ainsi que que ma vitesse angulaire "a" (rotation autour de l'axe "z" si on étend le repère en 3D). "a" > 0 pour les rotations vers y>0, "a"<0 pour les rotations vers y<0. "a"=0, si le robot va tout droit.
La coordonnée x de l'objet est positive, ainsi que la vitesse du robot. (Le robot va à la rencontre de l'objet).

"s" et "a" sont des données capteurs dont on connait l'incertitude. la position (x,y) est mesurée aussi à l'aide de capteurs et on connait son imprécision.

Je veux savoir à quel temps "t", l'objet sera en collision avec l'axe perpendiculaire au vecteur vitesse du robot, avec comme hypothèses que "s" et "a" seront constant jusqu'à la collision. Je veux aussi connaitre l'incertitude sur "t".

Après simplification, le problème revient à résoudre:

s*t = x*cos(a*t) + y*sin(a*t)

Si a = 0, t = x/s, ce qui est l'expression classique d'un temps de collision.



Je comprends pas ta donnée. Selon ce que tu m'écris, je comprends :

L'objet : immobile en (x,0)
Le robot : vitesse S selon l'axe x couplé à une rotation de vitesse angulaire a ?

Je capte toujours pas l'équation

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 28 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite