équation de second degres

équation de second degres - Aide aux devoirs - Emploi & Etudes

Marsh Posté le 19-04-2016 à 17:03:15    

Bonjour,
 
 j'ai tout d'un coup besoin de math et me voila coincé face a une équation du second degrés ...  
 
 je doit trouver x les autres variables sont connues
 
 (a  + x * b)² + (c +  x * d) ² = e ²  
 
 j'ai de vagues souvenirs de 3em avec des histoires de discriminants,
 mais je n'arrive tout de même pas à résoudre cette équation :(  
 [:strelok]  la loose

Reply

Marsh Posté le 19-04-2016 à 17:03:15   

Reply

Marsh Posté le 19-04-2016 à 17:37:00    

(a+b)² = a²+2ab+b²
 
Amuse toi avec ça :D

Reply

Marsh Posté le 19-04-2016 à 17:40:30    

Ce sujet a été déplacé de la catégorie Discussions vers la categorie Emploi & Etudes par Fdaniel


---------------
Topic des restos / Topic des boutiques gastronomiques
Reply

Marsh Posté le 20-04-2016 à 00:13:41    

[:gary master:4]  [:gary master]  [:gary master:1]

Reply

Marsh Posté le 20-04-2016 à 00:20:52    

Il faut que tu te ramènes à une équation du second degré de la forme

 

Ax² + Bx + C = 0

 

Pour ça tu as juste besoin de développer tes deux carrés puis regrouper les termes X², X et constants.
Enfin regarde sur internet pour résoudre ce genre d'équation (avec des histoires de discriminants ;) )

Message cité 1 fois
Message édité par lipton36 le 20-04-2016 à 00:21:16
Reply

Marsh Posté le 20-04-2016 à 13:52:39    

lipton36 a écrit :

Il faut que tu te ramènes à une équation du second degré de la forme  
 
Ax² + Bx + C = 0
 
Pour ça tu as juste besoin de développer tes deux carrés puis regrouper les termes X², X et constants.
Enfin regarde sur internet pour résoudre ce genre d'équation (avec des histoires de discriminants ;) )


 
donc :
 
de  
(A + xB)² + (C + xD)² = E²
 
je développe
 
A² + 2AxB + (xB)²  + C² + 2CxD + (xD)² - E² = 0
 
je regroupe
 
(D+B)x²  + (2AB + 2CD)x + (A² + C²  - E²) = 0
 
Calcul du discriminant  
 
Δ = (2AB + 2CD)² - 4(D+B)(A² + C²  - E²)  
 
Δ < 0  : pas de solution dans R
Δ = 0  : une solution = -b/2a
Δ > 0  : 2 solutions : x' =( −b + √Δ ) / 2a et x'' =( −b − √Δ ) / 2a.
 
 
 
Ca vous semble correct ?


Message édité par une IA le 20-04-2016 à 14:55:13
Reply

Marsh Posté le 20-04-2016 à 16:15:26    

ci-joint l'algorithme que j’essaye d’implémenter, détrminer si 2 cercles en mouvement se collisionnent et si oui a quel moment

 



I'm assuming the motion of the circles is linear. Let's say the position of circle A's centre is given by the vector equation Ca = Oa + t*Da where

 

Ca = (Cax, Cay) is the current position
Oa = (Oax, Oay) is the starting position
t is the elapsed time
Da = (Dax, Day) is the displacement per unit of time (velocity).

 

Likewise for circle B's centre: Cb = Ob + t*Db.

 

Then you want to find t such that ||Ca - Cb|| = (ra + rb) where ra and rb are the radii of circles A and B respectively.

 

Squaring both sides:
||Ca-Cb||^2 = (ra+rb)^2
and expanding:
(Oax + t*Dax - Obx - t*Dbx)^2 + (Oay + t*Day - Oby - t*Dby)^2 = (ra + rb)^2

 

From that you should get a quadratic polynomial that you can solve for t (if such a t exists).

 

j'ai comme l'impression qu'il se plante à l'expand
||Ca-Cb||^2 = (ra+rb)^2  
 (Oax + t*Dax - Obx - t*Dbx)^2 + (Oay + t*Day - Oby - t*Dby)^2 = (ra + rb)^2

 

Je pensais que ca allait donner plustôt

 

(Oax + t*Dax - Obx + t*Dbx)^2 - 2(Oax + t*Dax - Obx + t*Dbx)(Oay + t*Day - Oby + t*Dby) +  (Oay + t*Day - Oby + t*Dby)^2  = (ra + rb)^2

Message cité 1 fois
Message édité par une IA le 20-04-2016 à 16:44:47
Reply

Marsh Posté le 20-04-2016 à 16:44:28    

une IA a écrit :


(Oax + t*Dax - Obx + t*Dbx)^2 - 2(Oax + t*Dax - Obx + t*Dbx)(Oay + t*Day - Oby + t*Dby) +  (Oay + t*Day - Oby + t*Dby)^2  = (ra + rb)^2


 
je regroupe
 
A = Oax - Obx
B = Dax + Dbx
C = Oay - Oby
D= Day + Dby
E = ra + rb;
 
ce qui nous donne
 
(A + tB)² - 2(A + tB)(C + tD) + (C + tD)² - E² = 0
 
Je développe
 
A² + 2AtB + tB² -  2AC - 2AtD - 2tBC - 2tBtD  + C² + 2CtD + tD² - E² = 0
 
je factorise pour obtenir une forme ax² + bx + c =0  
 
(B+D - 2BD)t² + (-2AD - 2BC + 2CD + 2AB)t + (A² - 2AC + C² -E²) = 0


Message édité par une IA le 20-04-2016 à 17:11:48
Reply

Marsh Posté le 20-04-2016 à 16:51:32    

(xB)²=x²B²
 
(xD)²=x²D²

Message cité 1 fois
Message édité par Gato66 le 20-04-2016 à 16:52:20
Reply

Marsh Posté le 20-04-2016 à 17:07:15    

Gato66 a écrit :

(xB)²=x²B²
 
(xD)²=x²D²


 
merde avec ce développement ça ne marche toujours pas :/
 

Reply

Marsh Posté le 20-04-2016 à 17:07:15   

Reply

Marsh Posté le 20-04-2016 à 17:18:27    

Pour moi d'un part c'est bien - t*Dbx.
 
Attention à gauche c'est une norme euclidienne (double barre).
 
(pas un (x-y)²).
 
La condition d'intersection des deux cercles se traduisant en termes de distance.


Message édité par Gato66 le 20-04-2016 à 17:38:29
Reply

Marsh Posté le 20-04-2016 à 19:00:32    

Plus précisément la condition est que la distance entre leurs centres est inférieure ou égale à la somme de leurs rayons (ou alors que la distance entre les centres est supérieure à la différence des rayons dans le cas où l'un des cercles est intérieur à l'autre) ; ce qui me fait dire que ta situation de départ est celle de deux cercles extérieurs l'un à l'autre et que donc l'instant du contact est celui auquel il y a égalité.Tes deux cercles étant en mouvement rectiligne uniforme.


Message édité par Gato66 le 21-04-2016 à 07:41:12
Reply

Marsh Posté le 21-04-2016 à 13:37:15    

par contre il s'est bien gouré dans son développement non ?
 
||u - v||² = ||u||²  - 2uv + ||v||²


Message édité par une IA le 21-04-2016 à 13:41:37
Reply

Marsh Posté le 21-04-2016 à 13:47:24    

Il n'a pas développé comme tu le penses : il développe ||Ca-Cb||^2 simplement à l'aide des coordonnées du vecteur Ca-Cb.
 
||u - v||² = ||u||²  - 2uv + ||v||²   :  oui mais u et v étant des vecteurs et uv leur produit scalaire.

Reply

Marsh Posté le 21-04-2016 à 13:59:38    

en fait je comprends plus rien , je sature... domage

Reply

Marsh Posté le 21-04-2016 à 14:50:05    

Il suffit de ne pas compliquer les choses ; on va te sauver :
 
Ca est un vecteur de coordonnées (Cax, Cay)  avec Ca = Oa + t*Da  , Oa étant la position de départ , t le temps et Da la vitesse vectorielle : Da =(Dax,Day)  et Oa=(Oax,Oay)
 
Ceci donne donc : Cax=Oax + t*Dax  (abscisses) et de même Cay=Oay + t*Day
 
De même Cb est un vecteur de coordonnées (Cbx, Cby)  avec Cb = Ob + t*Db  , Ob étant la position de départ , t le temps et Db la vitesse vectorielle : Db =(Dbx,Dby)
 
Ceci donne donc : Cbx=Obx + t*Dbx  (abscisses) et de même Cby=Oby + t*Dby
 
Le vecteur Ca-Cb a donc comme coordonnées : (Cbx-Cax,Cby-Cay) soit :  (Obx + t*Dbx-Oax - t*Dax  ,  Oby + t*Dby-Oay - t*Day)
 
Le carré de la norme de ce vecteur est donc :  ( Obx + t*Dbx-Oax - t*Dax )²  + ( Oby + t*Dby-Oay - t*Day )²

Reply

Marsh Posté le 21-04-2016 à 14:50:44    

Si quelque chose n'est pas clair dis le.
 
On peut aussi développer avec la formule que tu cites :
 
||Ca-Cb||² = Ca²+Cb²-2Ca.Cb = Cax²+Cay²+Cbx²+Cby²-2(CaxCbx+CayCby)  
 
et on remplace...
 
d'autre part regarde bien : Cax²+Cay²+Cbx²+Cby²-2(CaxCbx+CayCby)  = Cax²+Cbx²-2CaxCbx +Cay² + Cby² -2CayCby = (Cax-Cbx)² + (Cay-Cby)² = ||Cb-Ca||²=||Ca-Cb||²    ce qui donne bien la même chose.
 


Message édité par Gato66 le 21-04-2016 à 15:06:41
Reply

Marsh Posté le 21-04-2016 à 15:04:36    

je viens de comprendre une de mes incompréhensions,
 
au passage de  (Cbx-Cax,Cby-Cay) soit :  (Obx + t*Dbx-Oax - t*Dax  ,  Oby + t*Dby-Oay - t*Day)
 
 
-Cax = -(Oax + t*Dax) = -Oax -t*Dax
 
 
J'ai vraiment du mal à penser en ensemble, la que tu scinde clairement X, et Y avant de les regrouper me parait vachement plus simple
 
je reprends ma fonction de prédiction de collision et reviens ..

Reply

Marsh Posté le 21-04-2016 à 15:07:49    

Il faut que tu revois un peu le calcul en base orthonormale : coordonnées de points , de vecteurs , norme et produit scalaire.
 
Tu n'avais pas trop en tête que Ca et Cb sont des vecteurs d'un espace de dimension 2.


Message édité par Gato66 le 21-04-2016 à 15:08:58
Reply

Marsh Posté le 21-04-2016 à 15:32:23    

Gato66 a écrit :


Le carré de la norme de ce vecteur est donc :  ( Obx + t*Dbx-Oax - t*Dax )²  + ( Oby + t*Dby-Oay - t*Day )²  


 
 
je regroupe
 

A = Obx - Oax
B = Dbx - Dax
C = Oby - Oay
D = Dby - Day


 
Comme la formule du dessus est inferieur ou égale a la somme des radiants en cas de collision
 

E = ra + rb;


 
ca nous donne  
 


(A + tB)² + (C + tD)² - E²  = 0
A² + 2AtB + tB² + C² + 2CtD + tD² - E² = 0
(B+D)t² + (2AB + 2CD)t + (A² + C² - E²) = 0


 
calcul du discriminant
 


delta = (2AB+2CD)² - 4(BD)(A² + C² - E²)  


 
 
Petit Test
 
je prends  


ra + rb  = E = 0 (rayon nulls)
Oa(0,100) Da(0, -1)
Ob(0,0)    Db(0, 1)
 
J'attends donc une collision à t = 50  


 
et pourtant
ca me donne un  
 

Δ = (2(0 - 0) + 2( 0 - 100)(1 + 1)) ² - 4(0 - 0 * (1 +1))(0 - 0)² + (0 - 100)² - (0 + 0)² = -400² = 80000


 
Δ positif => 2 réponses (ca commence mal)
 
 

t' = 170,711
t" = 28,2893


 
 
Fail :/


Message édité par une IA le 21-04-2016 à 16:09:20
Reply

Marsh Posté le 21-04-2016 à 16:21:53    

au cas ou ou que ce soit une erreur de code  
 

Code :
  1. void Circle::collideCircle(int radA,
  2.       Point *startingPosA,
  3.       Point *velocityA,
  4.       int radB,
  5.       Point *startingPosB,
  6.       Point *velocityB)
  7. {
  8.  
  9.  
  10.   double a = startingPosB->x - startingPosA->x ;
  11.   double b = velocityB->x - velocityA->x ;
  12.   double c = startingPosB->y - startingPosA->y;
  13.   double d = velocityB->y - velocityA->y;
  14.   double e = radA + radB;
  15.  
  16.   // (A + tB)² + (C + tD)² - E²  = 0
  17.   // A² + 2AtB + tB² + C² + 2CtD + tD² - E² = 0
  18.  
  19.   std::cout << ::toString(a) << ' ' <<  ::toString(b) << ' ' << ::toString(c) << ' ' << ::toString(d) << '\n';
  20.   double _a = b+d;
  21.   double _b = 2*a*b + 2*c*d;
  22.   double _c = sqr(a) + sqr(c) - sqr(e);
  23.   std::cout << ::toString(_a) << ' ' << ::toString(_b) << ' ' << ::toString(_c) << '\n';
  24.   double disc = sqr(_b) - 4 * _a * _c;
  25.   if (disc == 0)
  26.     {
  27.       std::cout << ::toString(disc)  << "\n";
  28.       std::cout << ::toString(-_b / (2 * a)) << "\n";
  29.     }
  30.   if (disc > 0)
  31.     {
  32.       std::cout << ::toString(disc)  << "\n";
  33.       std::cout << ::toString(((-_b + sqrt(disc)) / (2*_a))) << ":";
  34.       std::cout << ::toString(((-_b - sqrt(disc)) / (2*_a)))  << "\n";
  35.     }
  36.   else
  37.     {
  38.       std::cout << ::toString(disc)  << "\n";
  39.       std::cout << "pas de colision\n";
  40.     }
  41. }


Message édité par une IA le 21-04-2016 à 16:23:23
Reply

Marsh Posté le 21-04-2016 à 16:30:51    

Toi refaire même erreur :
 
(A + tB)² + (C + tD)² - E²  = 0  
A² + 2AtB + t²B² + C² + 2CtD + t²D² - E² = 0  
(B²+D²)t² + (2AB + 2CD)t + (A² + C² - E²) = 0
 
C'est quel langage ?


Message édité par Gato66 le 21-04-2016 à 16:43:29
Reply

Marsh Posté le 22-04-2016 à 10:32:04    

en effet avec  
 
(tB)² => t²B²  
 
ca marche !!
merci beaucoup Gato66
 
je rédige la réponse avec le code associé et publie ici :)

Reply

Marsh Posté le 22-04-2016 à 10:39:49    

En ayant en tête que tes cercles doivent être extérieurs l'un à l'autre ; pour moi si l'un est intérieur à l'autre tu auras comme valeur de t celle où ils sont tangents extérieurement , instant qui arrive après une tangence intérieure.

Reply

Marsh Posté le 27-04-2016 à 08:09:41    

C'était dans quel contexte ce truc ?

Reply

Marsh Posté le 04-05-2016 à 15:18:07    

Gato66 a écrit :

C'était dans quel contexte ce truc ?


 
c’était pour de l'art génératif.
 
j'empile des contraintes sur un ensemble de cercle autonome se déplaçant sur un plan 2D .
et regarde comment cela se comporte.
 
Ensuite j'essaye cela IRL avec des danseurs/danseuses.  
 
et la c'était pour les contraintes "éviter/provoquer le contact"
 
 
 

Reply

Marsh Posté le 04-05-2016 à 15:29:33    

S'il y a n cercles à surveiller ça fait donc n(n-1)/2 tests à faire.
 
Avec une prog du genre :
 
For i=1 to n-1
For j=i+1 to n
...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed